目录
MFC程序中的WinMain函数
创建Win32应用程序
进入 WinMain 函数、
设计窗口类、
注册窗口类、
产生窗口、
显示窗口、
更新窗口,
最后进入消息循环,将消息路由给窗口过程函数去处理。
遵循这条主线,我们在写程序时就有了一条很清晰的脉络。
但在编写MFC程序时,找不到这样一条主线。
在当前Test项目中查找WinMain函数:
在Visual Studio开发环境中单击【编辑】菜单,选择【查找和替换】→【快速查找】菜单项(或者通过快捷方式,同时按下键盘上的“Ctrl+F”键),在弹出的“查找和替换对话框”中“查找内容”文本框内输入“WinMain”,“查找范围”设置为“整个解决方案”。如图所示:
单击【查找全部】按钮,结果找不到WinMain 函数。并且WNDCLASS、CreateWindow也找不到。这是因为微软在MFC的底层框架类中封装了这些每一个窗口应用程序都需要的步骤,目的主要是为了简化程序员的开发工作。为了更好地学习和掌握基于MFC的程序,有必要对MFC的运行机制及封装原理有所了解。
WinMain函数是所有Win32程序的入口函数,就像纯C/C++程序下的main函数一样。创建的MFC程序也不例外,它也有一个WinMain函数,但这个WinMain函数是在程序编译链接时由链接器将该函数链接到Test程序中的。
安装完Visual Studio 2017后,在安装目录下,微软提供了部分MFC的源代码,可以跟踪这些源代码,找出程序运行的脉络。
如何知道VS安装位置:
如何找到电脑软件的安装路径——以查找Visual Studio 2017安装位置为例
我的 MFC 源代码的具体路径(可作参考):
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\atlmfc\src\mfc
在安装目录下搜索关键字“*.cpp”来找到源码所在的目录:
在找到相应的目录后,在资源浏览器的“高级选项”下选中“文件内容”:
然后在搜索框中输入“WinMain”,按下键盘上的回车键,搜索结果如图所示:
WinMain函数在appmodul.cpp这个文件中。保持Test项目的打开状态,然后双击appmodul.cpp即可在Visual Studio环境中打开该文件,在其中可以找到如下所示代码:
extern "C" int WINAPI
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine, int nCmdShow)
#pragma warning(suppress: 4985)
{
// call shared/exported WinMain
return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}