VS2013/MFC 程序执行流程
创建好一(yī)个 MFC 项目以后,如果是(shì)第(dì)一次(cì)创(chuàng)建,或者虽然创建了很多项(xiàng)目,却并没有认真(zhēn)分析自动生(shēng)成的程序代码,那么就很有(yǒu)必要知道项目的(de)程序框架如何(hé),项(xiàng)目是从哪开始执行,到哪(nǎ)终止程序,如何响应消息,如何(hé)刷(shuā)新界面等等(děng)问题。
工具(jù)/原料
· visual studio 2013
MFC 执行流程
1. 每创建一(yī)个项目(mù),一(yī)般(bān)会包(bāo)含 3 个类,“关于”对(duì)话框类、主(zhǔ)对话框类以及(jí)用于初始化(huà)项目的 App 类,假如项目名(míng)称(chēng)为 Demo,那么这三个(gè)类分别为 CAboutDlg、CDemoDlg、CDemoApp。
2. 项目生成后(hòu),都会(huì)生成一个属于(yú) CDemoApp 类的 theApp 对象(xiàng),对本应用(yòng)程(chéng)序实例化,这个在 CDemoApp.cpp 文件中(zhōng)定义,创建时调用构造函数 CDemoApp::CDemoApp();这就是(shì)程序创(chuàng)建的第一(yī)步。
3. 接(jiē)下来程序会调用 winmain 函数(shù),这个在(zài)项目文件中找(zhǎo)不到(dào),但可以在 VS2013 的安(ān)装路(lù)径(jìng)下(xià)找到,其(qí)函数(shù)声明为:int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,_In_LPTSTR lpCmdLine, int nCmdShow);
4. 调用(yòng)完 winmain 后,就通(tōng)过(guò) InitInstance()函数初始化窗口,包括(kuò)注册、创(chuàng)建和显示对话框,InitInstance 函数是 CDemoApp 类中除构(gòu)造函数以外唯一的(de)成(chéng)员函数。
一般(bān)不(bú)需要(yào)修改这部分程(chéng)序,但有些时候可以添加部分代码,比(bǐ)如需要创建多个对(duì)话框(kuàng)时,刚启动时弹出的对话框(比如用于登录)不(bú)是主(zhǔ)对(duì)话框,就可以(yǐ)在这个函数里创建主对(duì)话框之(zhī)前调用登录对话框,这(zhè)样就可以设置启动时的(de)默认对话框了。
