基於對話框_消息處理

編譯環境

  • Windows 10shell

  • 基於對話框函數

MFC創建基礎對話框

消息處理

新建【MFC_基於對話框_消息處理】的項目,這個文件的中的類繼承自 CWinApp。主要是由InitInstance()函數實現的。3d

// MFC_基於對話框_消息處理.h: PROJECT_NAME 應用程序的主頭文件
//

#pragma once

#ifndef __AFXWIN_H__
    #error "在包含此文件以前包含「stdafx.h」以生成 PCH 文件"
#endif

#include "resource.h"       // 主符號


// CMFC基於對話框消息處理App:
// 有關此類的實現,請參閱 MFC_基於對話框_消息處理.cpp
//

class CMFC基於對話框消息處理App : public CWinApp
{
public:
    CMFC基於對話框消息處理App();

// 重寫
public:
    virtual BOOL InitInstance();

// 實現

    DECLARE_MESSAGE_MAP()
};

extern CMFC基於對話框消息處理App theApp;

InitInstance()裏聲明一個對話框類,【CMFC基於對話框消息處理Dlg】是另外一個文件裏的類,也就是主要功能代碼都是在這個類裏面寫的。code

// CMFC基於對話框消息處理App 初始化

BOOL CMFC基於對話框消息處理App::InitInstance()
{
    CWinApp::InitInstance();
    ...代碼省略...
    // 生成界面
    CMFC基於對話框消息處理Dlg dlg;
    m_pMainWnd = &dlg;
    INT_PTR nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
        // TODO: 在此放置處理什麼時候用
        //  「肯定」來關閉對話框的代碼
    }
    else if (nResponse == IDCANCEL)
    {
        // TODO: 在此放置處理什麼時候用
        //  「取消」來關閉對話框的代碼
    }
    else if (nResponse == -1)
    {
        TRACE(traceAppMsg, 0, "警告: 對話框建立失敗,應用程序將意外終止。\n");
        TRACE(traceAppMsg, 0, "警告: 若是您在對話框上使用 MFC 控件,則沒法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
    }

    // 刪除上面建立的 shell 管理器。
    if (pShellManager != nullptr)
    {
        delete pShellManager;
    }
相關文章
相關標籤/搜索