MFC程序中的WinMain函数.pdf

MFC程序中的WinMain函数.pdf

ID:52999618

大小:516.83 KB

页数:19页

时间:2020-04-10

MFC程序中的WinMain函数.pdf_第1页
MFC程序中的WinMain函数.pdf_第2页
MFC程序中的WinMain函数.pdf_第3页
MFC程序中的WinMain函数.pdf_第4页
MFC程序中的WinMain函数.pdf_第5页
资源描述:

《MFC程序中的WinMain函数.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MFC程序中的WinMain函数读者还记得我们在第2章中讲述的创建Win32应用程序的几个步骤吗?当时,我们介绍Win32应用程序有一条很明确的主线:首先进入WinMain函数,然后设计窗口类、注册窗口类、产生窗口、注册窗口、显示窗口、更新窗口,最后进入消息循环,将消息路由到窗口过程函数中去处理。遵循这条主线,我们在写程序时就有了一条很清晰的脉络。但在编写MFC程序时,我们找不到这样一条主线,甚至在程序中找不到WinMain函数。可以在当前Test工程中查找WinMain函数,方法是在VC++开发环境中单击【Edit】菜单,选择【Fin

2、dinFiles…】菜单项,并在弹出的查找对话框中“FindWhat:”文本框内输入“WinMain”,单击【Find】按钮,结果当然是找不到WinMain函数。读者可以在这个工程中,再查找一下WNDCLASS、CreateWindow等,你会发现仍然找不到。那么是不是MFC程序就不需要WinMain函数,不需要设计窗口类,不需要创建窗口了呢?当然不是。我们之所以看不见这些,是因为微软在MFC的底层框架类中封装了这些每一个窗口应用程序都需要的步骤,目的主要是为了简化程序员的开发工作,但这也给我们在学习和掌握MFC程序时造成了很多不必要的

3、困扰。为了更好地学习和掌握基于MFC的程序,有必要对MFC的运行机制,以及封装原理有所了解。在第1章就讲述了WinMain函数是所有Win32程序的入口函数,就像DOS下的main函数一样。我们创建的这个MFC程序也不例外,它也有一个WinMain函数,但这个WinMain函数是在程序编译链接时,由链接器将该函数链接到Test程序中的。在安装完MicrosoftVisualStudio6.0后,在安装目录下(将MicrosoftVisualStudio6.0安装到了D:ProgramFiles下),微软提供了部分MFC的源代码,我们可

4、以跟踪这些源代码,来找出程序运行的脉络。机器上MFC源代码的具体路径为D:ProgramFilesMicrosoftVisualStudioVC98MFCSRC,读者可以根据这个目录结构在自己机器上查找相应的目录。找到相应的目录后,在资源浏览器的工具栏上选择“搜索”。然后在搜索窗口的“包含文字”文本框中输入”WinMain”,单击“立即搜索(S)”按钮,搜索结果如图3.12所示。图3.12包含“WinMain”文字的搜索结果我们只需要查看后缀名为CPP的源文件即可,实际上,WinMain函数在APPMODUL.CPP这个文件中

5、。保持Test工程的打开状态,然后双击APPMODUL.CPP即可在VC++环境中打开该文件,在其中可以找到如例3-1所示的这段代码。例3-1extern"C"intWINAPI_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow){//callshared/exportedWinMainreturnAfxWinMain(hInstance,hPrevInstance,lpCmdLine,nCmdShow);}WinMain函数找到

6、了。现在我们可以看看Test程序是否会进入这个WinMain函数。在WinMain函数中按下F9键设置一个断点,然后按下F5键调试运行当前程序。我们发现程序确实运行到该断点处停了下来,如图3.13所示。这说明Test这个MFC程序确实有WinMain函数,在程序编译链接时,WinMain函数就成为该程序的一部分。图3.13程序运行到WinMain断点处但这个_tWinMain函数和第1章所讲的WinMain函数有些不同,让我们先看看这个函数的定义。读者可以在_tWinMain上单击鼠标右键,从弹出的快捷菜单中选择【GoToDefinit

7、ionOf_tWinMain】菜单项,光标就会定位到_tWinMain函数的定义处,代码如例3-2所示,从中我们可以发现_tWinMain实际上是一个宏,展开之后就是WinMain函数。例3-2#define_tmainmain#define_tWinMainWinMain#ifdef_POSIX_#define_tenvironenviron#else#define_tenviron_environ#endif#define__targv__argv1.theApp全局对象找到了WinMain函数,那么它是如何与MFC程序中的各个类组

8、织在一起的呢?也就是说,MFC程序中的类是如何与WinMain函数关联起来的呢?双击ClassView标签页中的CTestApp类,跳转到该类的定义文件(Test.h)中。可以发现CTestApp派生于CW

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

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

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