3

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

4

1 回答 1

5

[来自MSDN]

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

[来自编程 VisualC++]

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

CMyApp::InitInstance成员函数——当 WinMain 函数找到应用程序对象时,它会调用虚拟 InitInstance 成员函数,该函数会调用所需的调用来构造和显示应用程序的主框架窗口。您必须在派生的应用程序类中重写 InitInstance,因为 CWinApp 基类不知道您想要什么样的主框架窗口。

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

于 2012-06-19T07:31:46.193 回答