MFC框架如何处理全局应用程序对象?

MFC框架如何处理全局应用程序对象?,mfc,Mfc,在过去的几天里,我有一个问题: 在MFC中,我们创建一个从CWinApp派生的应用程序对象。我们全局创建这个对象。因此,MFC框架将使用此对象启动应用程序 但我不知道框架是如何了解我的全局对象的 请向我解释MFC了解应用程序对象的内部机制。来自: 使用 微软基础类只能 包含一个派生自的对象 CWinApp。此对象是构造的 当其他C++全局对象 已构建并已可用 当Windows调用WinMain时 函数,该函数由 微软基础类库。 在以下位置声明派生的CWinApp对象: 全球一级 基本上,因为您的

在过去的几天里,我有一个问题:

在MFC中,我们创建一个从
CWinApp
派生的应用程序对象。我们全局创建这个对象。因此,MFC框架将使用此对象启动应用程序

但我不知道框架是如何了解我的全局对象的

请向我解释MFC了解应用程序对象的内部机制。

来自:

使用 微软基础类只能 包含一个派生自的对象 CWinApp。此对象是构造的 当其他C++全局对象 已构建并已可用 当Windows调用WinMain时 函数,该函数由 微软基础类库。 在以下位置声明派生的CWinApp对象: 全球一级


基本上,因为您的CWinApp对象是一个全局变量,所以当应用程序到达WinMain时,它已经实例化了您的CWinApp对象。因为只能有一个CWinApp对象,所以它知道这就是这个对象。

调试示例MFC应用程序后,我了解了框架如何了解应用程序对象

应用程序对象是全局对象,从
CWinApp
继承。由于对象是全局对象,因此在调用
WinMain
之前构造此对象。在构造派生对象时,调用
CWinApp
类构造函数;此时,框架捕获句柄:

pModuleState->m_pCurrentWinApp = this;
上面的行是从MFC
CWinApp::CWinApp(LPCTSTR lpszAppName)
构造函数复制的。
如果您想了解更多详细信息,请转到类的定义和声明
CWinApp

,但使用该类进行初始化,当我们仍然在基类(CWinApp)构造函数中,尚未创建该类(CWinApp dervied class object pointer)时,怎么可能呢?