VS2013/MFC 程序執行流程
創建好一個 MFC 項目以后,如果是第一次創建,或者雖然創建了很多項目,卻并沒有認真分析自動生成的程序代碼,那么就很有必要知道項目的程序框架如何,項目是從哪開始執行,到哪終止程序,如何響應消息,如何刷新界面等等問題。
工具/原料
· visual studio 2013
MFC 執行流程
1. 每創建一個項目,一般會包含 3 個類,“關于”對話框類、主對話框類以及用于初始化項目的 App 類,假如項目名稱為 Demo,那么這三個類分別為 CAboutDlg、CDemoDlg、CDemoApp。
2. 項目生成后,都會生成一個屬于 CDemoApp 類的 theApp 對象,對本應用程序實例化,這個在 CDemoApp.cpp 文件中定義,創建時調用構造函數 CDemoApp::CDemoApp();這就是程序創建的第一步。
3. 接下來程序會調用 winmain 函數,這個在項目文件中找不到,但可以在 VS2013 的安裝路徑下找到,其函數聲明為:int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,_In_LPTSTR lpCmdLine, int nCmdShow);
4. 調用完 winmain 后,就通過 InitInstance()函數初始化窗口,包括注冊、創建和顯示對話框,InitInstance 函數是 CDemoApp 類中除構造函數以外唯一的成員函數。
一般不需要修改這部分程序,但有些時候可以添加部分代碼,比如需要創建多個對話框時,剛啟動時彈出的對話框(比如用于登錄)不是主對話框,就可以在這個函數里創建主對話框之前調用登錄對話框,這樣就可以設置啟動時的默認對話框了。