AFX_EXTENSION_MODULE 结构具有如下形式:
struct AFX_EXTENSION_MODULE
{
};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)
{
}
AFX_EXTENSION_MODULE结构中保存的模块信息可以被拷贝到CDynLinkLibrary对象中。例如:
// CDynLinkLibrary 类
IMPLEMENT_DYNAMIC(CDynLinkLibrary, CCmdTarget)
// 构造函数
CDynLinkLibrary::CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem)
{
}