网站首页  词典首页

请输入您要查询的计算机术语:

 

术语 AFX::EXTENSION_MODULE
释义 AFX_EXTENSION_MODULE结构

AFX_EXTENSION_MODULE 结构具有如下形式:
struct AFX_EXTENSION_MODULE
{
  BOOL bInitialized;
  HMODULE hModule;
  HMODULE hResource;
  CRuntimeClass* pFirstSharedClass;
  COleObjectFactory* pFirstSharedFactory;
};AFX_EXTENSION_MODULE
被用在MFC扩展DLL的初始化过程中,用于保存扩展DLL模块的状态。

成员:
bInitialized如果DLL模块已经用AfxInitExtensionModule初始化了,则为TRUE。
hModule指定了DLL模块的句柄。
hResource指定了DLL的自定义资源模块的句柄。
pFirstSharedClass指向有关DLL模块的第一个运行时类的信息(CRuntimeClass结构)的指针。用于提供运行时类列表的开始部分。
pFirstSharedFactory指向DLL模块的第一个对象工厂(COleObjectFactory对象)的指针。用于提供类工厂列表的开始部分。

注释:
MFC扩展DLL需要在它们的DllMain函数中做两件事情:
·调用AfxInitExtensionModule并检查返回值。
·如果DLL要引出CRuntimeClass对象或者拥有它自己的资源,就创建一个CDynLinkLibrary对象。
AFX_EXTENSION_MODULE结构被用于保存扩展DLL模块状态的一个备份,包括运行时对象的一个拷贝,它已经在进入DllMain函数之前被扩展DLL作为常规静态对象构造过程的一部分初始化过了。例如:
static AFX_EXTENSION_MODULE extensionDLL;
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
  // 初始化这个DLL的扩展模块
  VERIFY(AfxInitExtensionModule(extensionDLL, hInstance));
}
AFX_EXTENSION_MODULE结构中保存的模块信息可以被拷贝到CDynLinkLibrary对象中。例如:
// CDynLinkLibrary 类
IMPLEMENT_DYNAMIC(CDynLinkLibrary, CCmdTarget)
// 构造函数
CDynLinkLibrary::CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem)
{
  #ifndef _AFX_NO_OLE_SUPPORT
     m_factoryList.Construct(offsetof(COleObjectFactory, m_pNextFactory));
  #endif
  m_classList.Construct(offsetof(CRuntimeClass, m_pNextClass));
  // 从AFX_EXTENSION_MODULE结构中拷贝信息
  ASSERT(state.hModule != NULL);
  m_hModule = state.hModule;
  m_hResource = state.hResource;
  m_classList.m_pHead = state.pFirstSharedClass;
  #ifndef _AFX_NO_OLE_SUPPORT
     m_factoryList.m_pHead = state.pFirstSharedFactory;
  #endif
  m_bSystem = bSystem;
}

请参阅:
AfxInitExtensionModule, AfxTermExtensionModule
随便看

 

MFC类库中文详解手册包含4274条MFC类库参考词条,基本涵盖了Microsoft基本类库中的类、全局函数、全局变量和宏的内容,是计算机编程的有利工具。

 

Copyright © 2004-2023 Winrtm.com All Rights Reserved
京ICP备2021023879号-40 更新时间:2024/10/6 12:24:06