WEB开发网
开发学院软件开发VC MFC教程(9)-- MFC的进程和线程(2) 阅读

MFC教程(9)-- MFC的进程和线程(2)

 2010-03-25 20:35:05 来源:WEB开发网   
核心提示:扩展DLL的模块状态7.3.1节指出扩展DLL的实现必须遵循五条规则,为此,MFC教程(9)-- MFC的进程和线程(2)(5),首先在扩展DLL实现文件里头,定义AFX_EXTENSION_MODULE类型的静态扩展模块变量,// wire up this DLL into the resource chainext

扩展DLL的模块状态

7.3.1节指出扩展DLL的实现必须遵循五条规则,为此,首先在扩展DLL实现文件里头,定义AFX_EXTENSION_MODULE类型的静态扩展模块变量,然后在DllMain入口函数里头使用AfxInitExtension初始化扩展模块变量,并且实现和输出一个初始化函数供扩展DLL的使用者调用。

使用者必须具备一个CWinApp对象,通常在它的InitInstance函数中调用扩展DLL提供的初始化函数。

一般用以下的几段代码完成上述任务。首先是扩展模块变量的定义和初始化:

static AFX_EXTENSION_MODULE extensionDLL;

DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)

{

if (dwReason == DLL_PROCESS_ATTACH)

{

// Extension DLL one-time initialization

if (!AfxInitExtensionModule(extensionDLL,hInstance))

return 0;

……

}

}

然后是扩展DLL的初始化函数,假定初始化函数命名为InitMyDll,InitMyDll被定义为“C”链接的全局函数,并且被输出。

// wire up this DLL into the resource chain

extern “C” void WINAPI InitMyDll()

{

CDynLinkLibrary* pDLL = new

CDynLinkLibrary(extensionDLL, TRUE);

ASSERT(pDLL != NULL);

...

}

最后是调用者的处理,假定在应用程序对象的InitInstance函数中调用初始化函数:

BOOL CMyApp::InitInstance()

{

InitMyMyDll();

}

上述这些代码只有在动态链接到MFC DLL时才有用。下面,对这些代码进行分析和解释

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:MFC 教程 MFC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接