MFC框架中消失的WinMain()
来源:互联网 发布:线切割电脑主板编程 编辑:程序博客网 时间:2024/05/18 21:40
学过一段时间的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()完成系统初始化。
似乎微软就是不想让人清楚、明白的了解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()完成系统初始化。
- MFC框架中消失的WinMain()
- 关于MFC中Winmain函数的跟踪
- MFC的WinMain
- MFC wINMain的封装
- 找不到MFC的winmain,why?
- MFC封装WinMain的原理
- WinMain和MFC的区别
- mfc-winmain
- MFC中类突然消失的解决办法
- 总结《二》MFC中WinMain和CALLBACK
- MFC在WINMAIN前的初始化
- [原创]MFC框架程序WINMAIN函数分析(一)
- mfc类视图中view类消失的解决办法
- MFC中的WinMain函数
- MFC 中的Winmain
- MFC中的winmain
- MFC应用程序WinMain函数
- 分离WinMain中传进来的字符串
- Json概述以及python对json的相关操作(python解析json)
- JQuery函数积累
- 【LeetCode】Search a 2D Matrix (杨氏矩阵查找)
- 如何判断电动车控制器的优劣?
- 2014各大网络公司笔试题汇总
- MFC框架中消失的WinMain()
- C++学习 函数的重载
- 颜色中英文对照表颜色名字色彩名称
- java基础<IO输出与输入>--->IO流<字符流>
- 误删/tmp导致hadoop无法启停, jps无法查看的解决方法
- 几种页面置换算法
- hdoj 2087 剪花布条 (简单的KMP匹配)
- 浅析Python中的struct模块(python网络编程)
- xdebug,在浏览器中显示日志信息