c++ - 在 MFC DLL 中为什么必须使用 “CWinApp theApp;” 声明应用程序?

标签 c++ dll mfc

在MFC DLL中为什么必须使用“CWinApp theApp;”来声明theApp,否则会出现运行时异常。什么时候实例化应用程序?

最佳答案

[来自MSDN]

theApp 是应用程序对象。该对象是在构造其他 C++ 全局对象时构造的,并且在 Windows 调用 WinMain 函数时应该已经可用。并且有必要在全局级别声明您的对象。

[来自Programming VisualC++]

应用程序启动——当用户启动应用程序时,Windows 会调用应用程序框架的内置 WinMain 函数,WinMain 会查找您从 CWinApp 派生的类的全局构造的应用程序对象。不要忘记,在 C++ 程序中,全局对象是在执行主程序之前构造的。

CMyApp::InitInstance 成员函数—当 WinMain 函数找到应用程序对象时,它会调用虚拟 InitInstance 成员函数,从而进行构建和显示应用程序主框架窗口所需的调用。您必须在您的派生应用程序类中覆盖 InitInstance,因为 CWinApp 基类不知道您想要哪种类型的主框架窗口。

CWinApp::Run 成员函数——Run 函数隐藏在基类中,但它将应用程序的消息分派(dispatch)到它的窗口,从而使应用程序保持运行。 WinMain 在调用 InitInstance 之后调用 Run。

关于c++ - 在 MFC DLL 中为什么必须使用 “CWinApp theApp;” 声明应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096288/

相关文章:

python - ctypes c_char_p 作为 python 函数的输入

c++ - 在 C++ 上遇到 MFC lntelliSense 的问题

c++ - MFC C++ 后台线程

c++ - 使用串行端口的 MFC 应用程序

c++ - Xbox One UWP : "activation request failed"

c++实现在dll外部定义的虚拟类,在dll中

c++ - 使用代码更改 Windows 7 平板电脑设置。

c++ - __declspec(dllimport/dllexport) 和继承

c++ - Qt 101 : Why can't I use this class?

c++ - SFML - 调整窗口大小时奇怪的 RenderTexture 行为