尤其值得特别注意,在DLL和EXE中我们对图13和图14的对话框使用了相同的资源ID=2000,在DLL和EXE工程的resource.h中分别有如下的宏: //DLL中对话框的ID 与5.3节静态链接MFC DLL的规则DLL相同,我们还是在规则DLL中定义接口函数ShowDlg,原型如下: #include "StdAfx.h" 而为应用工程主对话框的“调用DLL”的单击事件添加如下消息处理函数: void CSharedDllCallDlg::OnCalldllButton() 我们以为单击“调用DLL”会弹出13所示DLL中的对话框,可是可怕的事情发生了,我们看到是图14所示EXE中的对话框! 惊讶? 产生这个问题的根源在于应用程序与MFC规则DLL共享MFC DLL(或MFC扩展DLL)的程序总是默认使用EXE的资源,我们必须进行资源模块句柄的切换,其实现方法有三: 方法一 在DLL接口函数中使用: AFX_MANAGE_STATE(AfxGetStaticModuleState()); |
正在阅读:VC++动态链接库(DLL)编程深入浅出(三)VC++动态链接库(DLL)编程深入浅出(三)
2005-09-23 09:57
出处:PConline
责任编辑:moningfeng
键盘也能翻页,试试“← →”键