设为首页 加入收藏

TOP

22.2.7 使用模块对话框资源
2013-10-07 13:10:49 来源: 作者: 【 】 浏览:67
Tags:22.2.7 使用 模块 对话 资源

22.2.7  使用模块对话框资源

通过AfxSetResourceHandle()函数可以切换要使用的资源所在的实例,从而实现调用其他模块中的对话框资源的功能。其函数原型为:

  1. void AfxSetResourceHandle(  
  2. HINSTANCE hInstResource );//指定应用程序要载
    入的资源所在的EXE或DLL文件的模块句  
  3.                            //柄或实例 

在使用此函数之前,需要调用AfxGetInstanceHandle()函数保存原来的实例句柄。在使用完指定文件中的资源后,重新调用AfxSetResourceHandle()函数恢复原来的实例句柄。如下代码演示了如何调用RedDLL.exe文件中的关于对话框。

  1. Void CDLLAppSampleDlg::OnButtonGetdialog()  
    // 调用其他文件中的关于对话框  
  2. {  
  3.     HINSTANCE m_hInstOld=AfxGetInstanceHandle();    
    // 获取实例句柄  
  4.     HINSTANCE m_hInstNew = LoadLibrary(
    "RedDLL.exe");   // 装载exe文件  
  5.     if (m_hInstNew == NULL)  WriteLog(
    "装载可执行文件失败!");  
  6.                                                     
    // 如果失败,则返回  
  7.     AfxSetResourceHandle(m_hInstNew);          
    // 设置资源句柄  
  8.     Cdialog* dlg = new Cdialog();             
    // 创建对话框  
  9.     if (dlg->Create(IDD_ABOUTBOX))  dlg->
    ShowWindow(SW_SHOW);  
  10.                                               
    // 显示对话框  
  11.     AfxSetResourceHandle(m_hInstOld);        
    // 设置资源句柄  

上面代码首先调用AfxGetInstanceHandle()函数保存当前的资源实例句柄,然后调用LoadLibrary()函数装载RedDLL.exe程序,并通过AfxSetResourceHandle()函数设置当前的资源实例句柄为载入的RedDLL.exe程序的实例句柄,表示现在开始使用RedDLL.exe中的资源。从中创建关于对话框,并显示。退出对话框后,重新调用AfxSetResourceHandle()函数恢复应用程序原来的资源实例句柄。程序运行效果如图22-7所示。

 
图22-7  使用模块对话框资源运行效果图
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇22.2.8 替换应用程序中对话框资源 下一篇22.2.10 屏蔽键盘Win键

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: