为什么在main函数启动之前应该调用派生的CWinApp的构造函数? 为什么它不能像:
int WinMain()
{
CMainFrame* pMainFrame = new CMainFrame;
// etc ...
}
我正在寻找迫使这种行为的技术原因
编辑:
为了更清楚 - 如果我在没有MFC的情况下使用win32 API,则在WinMain中创建主窗口,那么有什么区别?
答案 0 :(得分:4)
基本上,这是因为MFC设计者决定在库本身中提供应用程序入口点(WinMain(),而不是main()
),因此用户不必编写一个。
然后,应用程序的初始化和终止逻辑将重新定位到用户提供的InitInstance()
派生单例实例的ExitInstance()
和CWinApp
方法。此实例必须在WinMain()
运行之前存在,因为它调用上述方法(并Run()
进入消息循环)并使用它来存储状态(如它收到的nCmdShow
参数)
在全局范围内定义CWinApp
派生实例是确保在WinMain()
运行时确实存在的简单方法。
This article有关于MFC应用程序启动时会发生什么情况的其他详细信息。