MFC框架如何处理全局应用程序对象?
在过去的几天里,我有一个问题: 在MFC中,我们创建一个从MFC框架如何处理全局应用程序对象?,mfc,Mfc,在过去的几天里,我有一个问题: 在MFC中,我们创建一个从CWinApp派生的应用程序对象。我们全局创建这个对象。因此,MFC框架将使用此对象启动应用程序 但我不知道框架是如何了解我的全局对象的 请向我解释MFC了解应用程序对象的内部机制。来自: 使用 微软基础类只能 包含一个派生自的对象 CWinApp。此对象是构造的 当其他C++全局对象 已构建并已可用 当Windows调用WinMain时 函数,该函数由 微软基础类库。 在以下位置声明派生的CWinApp对象: 全球一级 基本上,因为您的
CWinApp
派生的应用程序对象。我们全局创建这个对象。因此,MFC框架将使用此对象启动应用程序
但我不知道框架是如何了解我的全局对象的
请向我解释MFC了解应用程序对象的内部机制。来自:
使用
微软基础类只能
包含一个派生自的对象
CWinApp。此对象是构造的
当其他C++全局对象
已构建并已可用
当Windows调用WinMain时
函数,该函数由
微软基础类库。
在以下位置声明派生的CWinApp对象:
全球一级
基本上,因为您的CWinApp对象是一个全局变量,所以当应用程序到达WinMain时,它已经实例化了您的CWinApp对象。因为只能有一个CWinApp对象,所以它知道这就是这个对象。调试示例MFC应用程序后,我了解了框架如何了解应用程序对象 应用程序对象是全局对象,从
CWinApp
继承。由于对象是全局对象,因此在调用WinMain
之前构造此对象。在构造派生对象时,调用CWinApp
类构造函数;此时,框架捕获句柄:
pModuleState->m_pCurrentWinApp = this;
上面的行是从MFCCWinApp::CWinApp(LPCTSTR lpszAppName)
构造函数复制的。
如果您想了解更多详细信息,请转到类的定义和声明
CWinApp
,但使用该类进行初始化,当我们仍然在基类(CWinApp)构造函数中,尚未创建该类(CWinApp dervied class object pointer)时,怎么可能呢?