MFC教程(9)-- MFC的进程和线程(2)
2010-03-25 20:35:05 来源:WEB开发网核心提示:_AFX_EXTENSION_MODULE在分析代码之前,先讨论描述扩展模块状态的_AFX_EXTENSION_MODULE类,MFC教程(9)-- MFC的进程和线程(2)(6),_AFX_EXTENSION_MODULE没有基类,其定义如下:struct AFX_EXTENSION_MODULE{BOOL bIni
_AFX_EXTENSION_MODULE
在分析代码之前,先讨论描述扩展模块状态的_AFX_EXTENSION_MODULE类。_AFX_EXTENSION_MODULE没有基类,其定义如下:
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
其中:
第一个域表示该结构变量是否已经被初始化了;
第二个域用来保存扩展DLL的模块句柄;
第三个域用来保存扩展DLL的资源句柄;
第四个域用来保存扩展DLL要输出的CRuntimeClass类;
第五个域用来保存扩展DLL的OLE Factory。
该结构用来描述一个扩展DLL的模块状态信息,每一个扩展DLL都要定义一个该类型的静态变量,例如extensionDLL。
在DllMain中,调用AfxInitExtensionModule函数来初始化本DLL的静态变量该变量(扩展模块状态),如extensionDLL。函数AfxInitExtensionModule原型如下:
BOOL AFXAPI AfxInitExtensionModule(
AFX_EXTENSION_MODULE& state, HMODULE hModule)
其中:
参数1是DllMain传递给它的扩展DLL的模块状态,如extensionDLL;
参数2是DllMain传递给它的模块句柄。
更多精彩
赞助商链接