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