AfxInitExtensionModule
调用在扩展 DLL 的 DllMain 函数初始化此 DLL。
BOOL AFXAPI AfxInitExtensionModule(
AFX_EXTENSION_MODULE& state,
HMODULE hModule
);
参数
state
在初始化之后, AFX_EXTENSION_MODULE 结构 结构的引用将包含扩展 DLL 模块的状态。 状态包含运行时类对象的一份副本,该对象在 DllMain 输入之前由作为一般静态对象构造一部分执行的扩展 DLL 初始化。hModule
扩展 DLL 模块的句柄。
返回值
TRUE,如果扩展 DLL 成功初始化;否则,FALSE。
备注
例如:
static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
// Extension DLL one-time initialization
if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
return 0;
AfxInitExtensionModule 复制一份DLL的 HMODULE 副本,捕获DLL 运行时类(CRuntimeClass结构)以及在创建 CDynLinkLibrary 对象时使用对象工厂(COleObjectFactory 对象)。
MFC 扩展 DLL 需要在DllMain 函数中做两件事情:
调用 AfxInitExtensionModule 并检查返回值。
如果 DLL 将导出 CRuntimeClass 结构 对象或有自己的自定义资源,创建 CDynLinkLibrary 对象。
当每个进程从扩展DLL(发生在进程退出时或由于AfxFreeLibrary调用卸载DLL时)分离时,可以调用AfxTermExtensionModule清理扩展DLL。
要求
Header: afxdll_.h