WEB开发网
开发学院软件开发VC 接触VC之四:COM组件模型基础 阅读

接触VC之四:COM组件模型基础

 2006-07-19 11:36:48 来源:WEB开发网   
核心提示: 要使用动态链接库并不难,首先要调用LoadLibrary,其原型如下:HMODULE LoadLibrary(LPCTSTR lpFileName // file name of module);参数lpFileName是要加载的动态链接库的文件名,接触VC之四:COM组件模型基础(3),

要使用动态链接库并不难,首先要调用LoadLibrary,其原型如下:

HMODULE LoadLibrary(
 LPCTSTR lpFileName  // file name of module
);

参数lpFileName是要加载的动态链接库的文件名。如果加载成功的话,就返回其句柄。否则的,返回NULL。

与这个API相配对的是FreeLibrary,其原型如下:

BOOL FreeLibrary(
 HMODULE hModule  // handle to DLL module
);

这个就不用我多说了吧。

当动态链接库被LoadLibrary所加载时,C运行库通过_DllMainCRTStartup来完成动态链接库的初始化,如全局对象(变量)、静态成员变量的生成以及赋初值。最重要的是它还会调用DllMain函数。每一个动态链接库都必须有这个函数,就像应用程序必须有main或WinMain一样。它的原型是:

BOOL WINAPI DllMain(
 HINSTANCE hinstDLL, // handle to the DLL module
 DWORD fdwReason,   // reason for calling function
 LPVOID lpvReserved  // reserved
);

你可以通过DllMain函数来完成你的动态链接库中的环境初始化和析构操作。啊,事情是这样的:

DllMain被调用有四种情况,这四种情况可以从fdwReason参数来分别出来:

它们分别是

1. DLL_PROCESS_ATTACH,当动态链接库被加载到进程时,调用DllMain。

2. DLL_THREAD_ATTACH,当进程建立一个新线程时,进程会调用所以已加载了的动态链接库的DllMain。

3. DLL_THREAD_DETACH,当一个线程结束时,进程会调用所以已加载了的动态链接库的DllMain。

4. DLL_THREAD_DETACH,当动态链接库被缷载或进程结束时,调用DllMain。

这样,通过DllMain函数就可以反应出一个动态链接库的生命周期了。

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

Tags:接触 VC COM

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