【问题标题】:In MFC DLL Why do I must declare theApp using “CWinApp theApp;”?在 MFC DLL 中为什么我必须使用“CWinApp theApp;”声明应用程序?
【发布时间】:2012-06-21 05:11:17
【问题描述】:

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

【问题讨论】:

  • “搜索后的第一个链接”对于 Luchian Grigore 来说是正确的,因为 Google 或其他搜索引擎保留了 Luchian Grigore 以前搜索的历史记录。不要假设其他人也一样。
  • 你说得对,我来自中国

标签: c++ dll mfc


【解决方案1】:

[来自MSDN]

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

[来自Programming VisualC++]

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多