在MFC DLL中为什么必须使用“CWinApp theApp;”来声明theApp,否则会出现运行时异常。什么时候实例化应用程序?
最佳答案
[来自MSDN]
theApp 是应用程序对象。该对象是在构造其他 C++ 全局对象时构造的,并且在 Windows 调用 WinMain 函数时应该已经可用。并且有必要在全局级别声明您的对象。
应用程序启动——当用户启动应用程序时,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/