VC++深入详解

VC++深入详解

ID:45030043

大小:4.63 MB

页数:284页

时间:2019-11-08

VC++深入详解_第1页
VC++深入详解_第2页
VC++深入详解_第3页
VC++深入详解_第4页
VC++深入详解_第5页
资源描述:

《VC++深入详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用文档第三章MFC框架剖析3.2基于MFC的程序框架剖析MFCAppWizard帮助我们生成的代码,单击左边工作区窗格中的ClassView(类视图)标签页,可以看到如图的5个类:3.2.1MFC程序中的WinMain函数Win32程序的一个主线:1、进入WinMain函数;2、设计窗口类;3、注册窗口类;4、产生窗口;5、注册窗口;6、显示窗口;7、更新窗口;8、消息循环,将消息路由到窗口过程函数中去处理。1.theApp全局对象在程序入口main函数加载时,系统已经为全局变量或者全局对象分配了存储空间,并为他们赋初值。如何查看变量的值?1、将鼠标移动到该变量上停留片

2、刻,VC++会弹出一个小窗口显示变量的值;2、点击View,在下拉菜单中选择variables即可。为什么要定义一个全局对象theApp,让它在WinMain之前执行?其作用是什么?应用程序的实例是由实例句柄(WinMain函数的参数hInstance)来标识的。对于MFC程序,通过产生一个应用程序类的对象来唯一标识应用程序的实例。每一个MFC仅有一个从应用程序(CWinApp)派生的类。每一个MFC仅有一个该派生类的实例化对象,也就是theApp全局对象。实用文档在一个子类在构造函数前会先调用其父类的构造函数。TheApp对象的构造函数CTestApp在调用之前,会调用

3、其父类CWinApp的构造函数。2.AfxWinMain函数当程序调用了CWinApp类的构造函数,并执行了CTestApp的构造函数,且产生了TheApp对象之后,接下来就是进入了WinMain函数。实际上,WinMain函数是通过.AfxWinMain函数来完成他的功能的。intAFXAPIAfxWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow){ASSERT(hPrevInstance==NULL);intnReturnCode=-1;①CWinThread*p

4、Thread=AfxGetThread();CWinApp*pApp=AfxGetApp();//注:实质上上述2个指针是一致的,AfxaGetApp是一个全局函数,定义于AFXWIN1.INL中。//AFXinternalinitializationif(!AfxWinInit(hInstance,hPrevInstance,lpCmdLine,nCmdShow))gotoInitFailure;实用文档//Appglobalinitializations(rare)②if(pApp!=NULL&&!pApp->InitApplication())gotoInitFai

5、lure;//Performspecificinitializations③if(!pThread->InitInstance()){if(pThread->m_pMainWnd!=NULL){TRACE0("Warning:Destroyingnon-NULLm_pMainWnd");pThread->m_pMainWnd->DestroyWindow();}nReturnCode=pThread->ExitInstance();gotoInitFailure;}④nReturnCode=pThread->Run();InitFailure:#ifdef_DEBUG

6、//CheckformissingAfxLockTempMapcallsif(AfxGetModuleThreadState()->m_nTempMapLock!=0){实用文档TRACE1("Warning:Tempmaplockcountnon-zero(%ld).",AfxGetModuleThreadState()->m_nTempMapLock);}AfxLockTempMaps();AfxUnlockTempMaps(-1);#endifAfxWinTerm();returnnReturnCode;}3.InitInstance函数pApp首先调用Init

7、Instance函数,该函数完成MFC内部管理方面的工作,接着,调用PThread的InitInstance函数。在Test程序中,可以发现从CWinApp派生的应用程序类CTestApp也有一个InitInstance函数,其申明如下:virtualBOOLInitInstance();这是一个虚函数,根据多态性原理,AfxWinMain函数这里实际上调用的是子类CTestApp的InitInstance函数。3.2.2MFC框架窗口1.设计和注册窗口窗口类的注册是由AfxEndDeferRegisterClass函数完成。

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

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

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