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