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