晶体融化曲线:基于vc的程序加载多个资源文件的方式

来源:百度文库 编辑:偶看新闻 时间:2024/05/01 21:05:10

基于vc的程序加载多个资源文件的方式



为了在程序中更合理地组织程序的结构,以便日后的维护。在资源方面,如果同时存在多语言的版本,而且在各个版本中有些图片不同、有些相同。如何组织好这些图片资源?我认为有如下的3种方式。


      1:把程序中的所有图片都随着一个资源DLL发布。
      2:把程序中的所有图片都放在可执行文件的一个相对目录中,程序运行时到指定的目录去加载指定名称的图片。
      3:把在各个版本相同的图片放在一个公共的DLL中,把彼此不同的图片放在各自的DLL中。


在这里介绍下第三种方式,也就是如何让一个exe程序加载多个DLL资源,并在这些DLL中找相应的资源的问题:

  1. m_hResDll = ::LoadLibrary(_T("rc1.dll"));  
  2. m_hResDll2 = ::LoadLibrary(_T("rc2.dll"));  
  3.  
  4. m_pExeModule = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());         
  5. AfxSetResourceHandle(m_hResDll);  
  6.  
  7. m_pExeModule2 = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());  
  8. AfxSetResourceHandle(m_hResDll2);  

在这里值得注意的是:要调用
 

m_pExeModule = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());


这个语句,如果没有这个语句,那么这个程序的原有资源模块将视为释放。也就不会到原有的资源模块中去搜索.