在DLL中使用资源(二)[5]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 rivershan 的 blog

 

在上述例子的第三步的showdlg函数的第一条语句前加上如下语句(要确保该语句在函数实现的第一行):

 

afx_manage_state(afxgetstaticmodulestate());

 

之后重新编译生成dllshared.dlldllshared.lib,并将这两个文件重新拷贝到use工程的debug目录内。这次编译生成use.exe并运行,点击按钮,可以看到弹出的时我们在dll中所加入的那个对话框,而不再是use.exe的关于对话框了。

 

通过上面的讲解,相信你已经知道该语句的作用了。在函数showdlg的第一行加上这么一句后,每次调用dll的应用程序使用该函数的时候,mfc库都会自动切换当前模块状态,这样就保证了资源读取的正确性。

 

afx_manage_state(afxgetstaticmodulestate());是自动切换当前模块状态,也可以通过使用afxgetresourcehandleafxsetresourcehandle来手动切换当前模块状态。具体使用方法如下:

 

在上述例子的第三步的showdlg函数的第一条语句前加上如下语句(要确保该语句在函数实现的第一行):

 

hinstance save_hinstance = afxgetresourcehandle();

       afxsetresourcehandle(theapp.m_hinstance);

 

本文关键:DLL、AFX_MANAGE_STATE、AfxGetResourceHandle、AfxSetResourceHandle、对话框
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top