MFC中的WinMain()入口去哪里了?

简介: MFC中的WinMain()入口去哪里了?

学过一段时间的MFC之后,很多人大概都有一个疑问:在MFC中,WinMain()哪去了?因为任何一个使用过Win32 SDK编程的人都知道,WinMain()函数是Win32程序开始的入口点,可是在MFC的框架使用中,一般我们只知道从CWinApp类继承得到一个新类,然后重写InitInstance()虚函数,程序框架就可以运行了。哪么,在MFC中,WinMain()倒底去哪了?

  似乎微软就是不想让人清楚、明白的了解MFC框架将WinMain()封装的过程。微软在MFC中是这样隐藏调用WinMain()的:

1.在TCHAR.H文件中定义了一个宏:

#define _tWinMain WinMain

这样MFC源代码在编译的时候,_tWinMain就会被替换为WinMain(),这样操作系统就可以调用了。

2.在APPMODUL.CPP文件中,定义了_tWinMain()

_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
// call shared/exported WinMain
return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}

  看见了吗?里面调用了AfxWinMain(),也就说MFC把对WinMain()的调用转化为对AfxWinMain()的调用,这更加说明,即使在MFC中,也没有什么其它神奇的方法能够跳过或换掉对WinMain()的调用。

3.在WINMAIN.CPP文件中,实现了AfxWinMain()。

AfxWinMain()才实际调用CWinApp->InitApplication()、CWinApp->->InitInstance()完成系统初始化。

相关文章
|
8月前
|
程序员 Windows
08 MFC - MFC框架中一些重要的函数
08 MFC - MFC框架中一些重要的函数
42 0
|
8月前
04 MFC - 消息映射
04 MFC - 消息映射
29 0
|
2月前
|
C++
MFC创建带窗口的DLL
MFC创建带窗口的DLL
33 0
|
存储 API 数据库
【MFC】MFC基础篇(1)
【MFC】MFC基础篇(1)
【MFC】MFC基础篇(1)
|
IDE 开发工具 C语言
|
存储 索引
|
安全 容器 开发者
用MFC实现WebGUI--(CDHtmlDialog)
自从去年年底一次棘手的界面,开始研究用web做界面到现在大约1年,这一年间不是局限在实现层面,也并非一直研究这一个问题,有很多问题其实不是问题,只是自己没有想清楚或者思想没放开。对于一个界面开发人员,想必拉的对话框不少于100个,腻味不必说,光是对话框大小改变导致控件跟着变化都需要一番功夫,加上界面美观,界面的风格统一,界面的灵活多变......,头痛。
1436 0