03-MFC框架程序剖析

03-MFC框架程序剖析

ID:44290191

大小:82.50 KB

页数:6页

时间:2019-10-20

03-MFC框架程序剖析_第1页
03-MFC框架程序剖析_第2页
03-MFC框架程序剖析_第3页
03-MFC框架程序剖析_第4页
03-MFC框架程序剖析_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。