随笔 - 64, 文章 - 11, 评论 - 12, 引用 - 0
数据加载中……

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

      为了在程序中更合理地组织程序的结构,以便日后的维护。在资源方面,如果同时存在多语言的版本,而且在各个版本中有些图片不同、有些相同。如何组织好这些图片资源?我认为有如下的3种方式。
      1:把程序中的所有图片都随着一个资源DLL发布。
      2:把程序中的所有图片都放在可执行文件的一个相对目录中,程序运行时到指定的目录去加载指定名称的图片。
      3:把在各个版本相同的图片放在一个公共的DLL中,把彼此不同的图片放在各自的DLL中。

         在这里介绍下第三种方式,也就是如何让一个exe程序加载多个DLL资源,并在这些DLL中找相应的资源的问题:
       m_hResDll = ::LoadLibrary(_T("rc1.dll"));
       m_hResDll2 = ::LoadLibrary(_T("rc2.dll"));

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

       m_pExeModule2 = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
       AfxSetResourceHandle(m_hResDll2);

         在这里值得注意的是:要调用
         m_pExeModule = new CDynLinkLibrary(AfxGetInstanceHandle(), AfxGetResourceHandle());
这个语句,如果没有这个语句,那么这个程序的原有资源模块将视为释放。也就不会到原有的资源模块中去搜索。

posted on 2009-04-20 18:20 Robertxiao 阅读(1407) 评论(0)  编辑 收藏 引用 所属分类: Windows/MFC探索


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理