- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC 程序中的WinMain 函数
读者还记得我们在第 2 章中讲述的创建 Win32 应用程序的几个步骤吗?当
时,我们介绍 Win32 应用程序有一条很明确的主线:首先进入 WinMain 函数,然
后设计窗口类、注册窗口类、产生窗口、注册窗口、显示窗口、更新窗口,最后
进入消息循环,将消息路由到窗口过程函数中去处理。遵循这条主线,我们在写
程序时就有了一条很清晰的脉络。
但在编写 MFC 程序时,我们找不到这样一条主线,甚至在程序中找不到 Win
Main 函数。可以在当前 Test 工程中查找 WinMain 函数,方法是在 VC++开发环境
中单击 【Edit】菜单,选择 【Find in Files…】菜单项,并在弹出的查找对话
框中 “Find What:”文本框内输入 “WinMain”,单击 【Find】按钮,结果当然
是找不到 WinMain 函数。读者可以在这个工程中,再查找一下 WNDCLASS、Creat
eWindow 等,你会发现仍然找不到。那么是不是 MFC 程序就不需要 WinMain 函数,
不需要设计窗口类,不需要创建窗口了呢?当然不是。我们之所以看不见这些,
是因为微软在 MFC 的底层框架类中封装了这些每一个窗口应用程序都需要的步
骤,目的主要是为了简化程序员的开发工作,但这也给我们在学习和掌握 MFC
程序时造成了很多不必要的困扰。
为了更好地学习和掌握基于 MFC 的程序,有必要对 MFC 的运行机制,以及封
装原理有所了解。在第 1 章就讲述了WinMain 函数是所有Win32 程序的入口函数,
就像 DOS 下的 main 函数一样。我们创建的这个 MFC 程序也不例外,它也有一个
WinMain 函数,但这个 WinMain 函数是在程序编译链接时,由链接器将该函数链
接到 Test 程序中的。
在安装完 Microsoft Visual Studio 6.0 后,在安装目录下 (将 Microsoft
Visual Studio 6.0 安装到了 D:\Program Files 下),微软提供了部分 MFC 的
源代码,我们可以跟踪这些源代码,来找出程序运行的脉络。机器上 MFC 源代码
的具体路径为D:\Program Files\Microsoft Visual Studio\VC98\MFC\ SRC,
读者可以根据这个目录结构在自己机器上查找相应的目录。找到相应的目录后,
在资源浏览器的工具栏上选择 “搜索”。然后在搜索窗口的 “包含文字”文本框
中输入”WinMain”,单击 “立即搜索 (S)”按钮,搜索结果如图 3.12 所示。
图3.12 包含 “WinMain ”文字的搜索结果
我们只需要查看后缀名为 CPP 的源文件即可,实际上,WinMain 函数在APPMOD
UL.CPP 这个文件中。保持 Test 工程的打开状态,然后双击 APPMODUL.CPP 即可
在 VC++环境中打开该文件,在其中可以找到如例 3-1所示的这段代码。
例 3-1
extern C int WINAPI
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
// call shared/exported WinMain
return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}
WinMain 函数找到了。现在我们可以看看 Test 程序是否会进入这个 WinMain
函数。在WinMain 函数中按下F9键设置一个断点,然后按下F5键调试运行当
前程序。我们发现程序确实运行到该断点处停了下来,如图 3.13 所示。这说明
Test 这个 MFC 程序确实有 WinMain 函数,在程序编译链接时,WinMain 函数就成
为该程序的一部分。
您可能关注的文档
最近下载
- 中铁隧道集团有限公司工程项目管理考核办法.pdf VIP
- 人教版八年级上册道德与法治全册教学课件.pptx
- 2023年高考语文复习:新高考Ⅰ卷语言文字运用Ⅰ专项练习题(含答案).docx VIP
- 香港朗文英语3a测试卷1-3单元.pdf VIP
- 目前我国国产电动执行器市场分析.pdf VIP
- 附件1:地下车库色彩规划(基础版)(1)(1).pdf VIP
- 健全会计制度声明函.docx VIP
- 通桥[2005]2221-Ⅱ 时速250公里客运专线铁路 有碴轨道后张法预应力混凝土简支箱梁(双线)(跨度31.5m、直、曲线).pdf VIP
- 一建机电实务案例500问.pdf VIP
- 压疮事件原因分析及整改措施.docx VIP
文档评论(0)