欢迎来到天天文库
浏览记录
ID:44290191
大小:82.50 KB
页数:6页
时间:2019-10-20
《03-MFC框架程序剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Lesson31.寻找WinMain人口:在安装冃录下找到MFC文件夹下的SRC文件夹,SRC下是MFC源代码。路径:MFCISRCIAPPMODUL.CPP:_tWinMain(HINSTANCEhlnstance,HINSTANCEhPrevInstance,LPTSTRIpCnidLinc,intnCmdShow){//callshared/exportedWinMainreturnAfxWinMain(hInstance,hPrevInstance,IpCmdLine,nCmdShow);}注意:(#define_tWinMai
2、nWinMain)2.对于全局对象或全局变量來说,在程序运行即WINMAIN函数加载的时候,已经为全局对象或全局变量分配了内存和赋初值。所以:CTEAppthcApp;->CTEApp::CTEApp(){}->_tWinMain(){}说明:每一个MFC程序,有且只有一个从WinApp类派生的类(应用程序类),也只有一个从应用程序类所事例化的对象,表示应用程序本身。在WIN32程序当中,表示应用程序是通过WINMAIN入口函数来表示的(通过一个应用程序的一个事例号这一个标识来表示的)。在基于MFC应用程序屮,是通过产生一个应用程序对象
3、,用它来唯一的表示了应用程序。3.通过构造应用程序对象过程屮调用基类CWinApp的构造函数,在CWinApp的构造函数中对程序包括运行时一些初始化工作完成了。CWinApp构造函数:MFCISRCIAPPCORE.CPPCWinApp::CWinApp(LPCTSTRIpszAppName){...}//带参数,而CTEApp构造函数没有显式向父类传参,难道CWinAppO有默认参数?见下:(在CWinApp类定义中,CWinApp(LPCTSTRIpszAppName=NULL);)注意:CWinAppO函数中:pThreadSta
4、te->m_pCurrentWinThread=this;pModuleState->m_pCurrentWinApp=this(this指向的是派生类CTEApp对象,即thcApp)调试:CWinApp::CWinApp();->CTEApptheApp;(->CTEApp::CTEAppO)->CWinApp::CWinApp()->CTEApp::CTEApp()->_tWinMain(){)4._tWinMain函数屮通过调用AfxWinMain()函数来完成它要完成的功能。(Afx*前缀代表这是应用程序框架函数,是一些全局函
5、数,应用程序框架是一套辅助生成应用程序的框架模型,把一些类做一些有机的集成,我们可根据这些类函数来设计白己的应用程序)。AfxWinMain()函数路径:MFCISRCIWINMAIN.CPP:在AfxWinMain()函数中:CWinApp*pApp=AfxGetAppO;说明:pApp存储的是指向WinApp派牛类对象(theApp)的指针。//_AFXWIN_INLINECWinApp*AFXAPIAfxGctAppO//{returnafxCurrentWinApp;}调川pThread->Init!nstance()说明:pT
6、hrcad也指向thcApp,由于基类中virtualBOOLInitApplication()定义为虚函数,所以调用pThread->InitInstance()候,调用的是派生类CTEApp的Initlnstance()函数。nReturnCode=pThread->Run();说明:pThread->Run()完成了消息循坏。1.注册窗口类:AfxEndDeferRegisterClass();AfxEndDeferRegisterClass()函数所在文件:MFCISRCIAPPCORE.CPPBOOLAFXAPIAfxEndD
7、eferRegisterClass(LONGfToRegister){...)说明:设计窗口类:在MFC屮事先设计好了儿种缺省的窗口类,根据不同的应川程序的选择,调用AfxEndDeferRegisterClass()函数注册所选择的窗口类。调试:CWinApp::CWinApp();->CTEAppthcApp;(->CTEApp::CTEAppO)->CWinApp::CWinApp()->CTEApp::CTEApp()->_tWinMain(){}〃进入程序->AfxWinMain();->pApp->lnitApplicati
8、on();->pThread->lnitlnstance()//父类Initlnstance虚函数;->CTEApp::InitInstance()//子类实现函数;->AfxEndDeferRegiste
此文档下载收益归作者所有