WEB开发网
开发学院软件开发VC VC++动态链接库(DLL)编程深入浅出(三) 阅读

VC++动态链接库(DLL)编程深入浅出(三)

 2007-03-15 21:47:45 来源:WEB开发网   
核心提示: 方法二 在DLL接口函数中使用:AfxGetResourceHandle();AfxSetResourceHandle(HINSTANCE xxx);AfxGetResourceHandle用于获取当前资源模块句柄,而AfxSetResourceHandle则用于设置程序目前要使用的资源模

方法二 在DLL接口函数中使用:

AfxGetResourceHandle();
AfxSetResourceHandle(HINSTANCE xxx);

AfxGetResourceHandle用于获取当前资源模块句柄,而AfxSetResourceHandle则用于设置程序目前要使用的资源模块句柄。

我们将DLL中的接口函数ShowDlg改为:

void ShowDlg(void)
{
//方法2的状态变更
HINSTANCE save_hInstance = AfxGetResourceHandle();
AfxSetResourceHandle(theApp.m_hInstance);
CDialog dlg(IDD_DLL_DIALOG);//打开ID为2000的对话框
dlg.DoModal();
//方法2的状态还原
AfxSetResourceHandle(save_hInstance);
}

通过AfxGetResourceHandle和AfxSetResourceHandle的合理变更,我们能够灵活地设置程序的资源模块句柄,而方法一则只能在DLL接口函数退出的时候才会恢复模块句柄。方法二则不同,如果将ShowDlg改为:

extern CSharedDllApp theApp; //需要声明theApp外部全局变量
void ShowDlg(void)
{
//方法2的状态变更
HINSTANCE save_hInstance = AfxGetResourceHandle();
AfxSetResourceHandle(theApp.m_hInstance);
CDialog dlg(IDD_DLL_DIALOG);//打开ID为2000的对话框
dlg.DoModal();
//方法2的状态还原
AfxSetResourceHandle(save_hInstance);
//使用方法2后在此处再进行操作针对的将是应用程序的资源
CDialog dlg1(IDD_DLL_DIALOG); //打开ID为2000的对话框
dlg1.DoModal();
}

在应用程序主对话框的“调用DLL”按钮上点击,将看到两个对话框,相继为DLL中的对话框(图13)和EXE中的对话框(图14)。

上一页  4 5 6 7 8 9 10  下一页

Tags:VC 动态 链接

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