zoukankan      html  css  js  c++  java
  • VC++ 模块与资源分离

      在一些开发过程中,需要模块支持中英文语言切换,比较好的实现方式是从模块中将资源分离出来,做成中英文两个资源dll,根据需要加载不同的dll从而实现切换不同的语言显示。

      新建一个资源dll文件,选择Win32 Console Application

      

            

            

       工程建好后,在工程中新建一个cpp文件,输入以下代码:

    1 #include <Windows.h>
    2 extern BOOL WINAPI DllMain(HANDLE _HDllHandle, DWORD _Reason, LPVOID _Reserved)
    3 {
    4     return TRUE;
    5 }

      然后切换到资源选项卡,新建所需要的资源即可,最后编译生成一个语言版本的资源dll文件。

      模块加载资源dll:

      包含资源模块生成的resource.h文件

      一般在模块的入口(main 或Initinstance)中选择加载,示例代码如下:

    1     CString strResDllPath = GetResDllPath(eLangType);
    2     HINSTANCE m_hInst = ::LoadLibrary(strResDllPath);
    3     if (m_hInst)
    4     {
    5         AfxSetResourceHandle(m_hInst);
    6     }

      模块析构时,添加释放资源代码:

    1 if (m_hInst)
    2 {
    3     FreeLibrary(m_hInst);
    4   m_hInst = NULL;
    5 }

       注意是在你的App类的Initinstance中添加加载资源dll的代码,而不是在你的App类的构造函数中添加。

  • 相关阅读:
    对象属性键值[key]属性问题
    理解 JavaScript 中的 for…of 循环
    vue初学篇----过滤器(filters)
    CSS变量
    SCSS !default默认变量
    vue 集成 NEditor 富文本
    如何在Github上面精准搜索开源项目?
    OSS介绍
    键盘各键对应的编码值(key code)
    网易云音乐歌单生成外链播放器
  • 原文地址:https://www.cnblogs.com/MakeView660/p/6045949.html
Copyright © 2011-2022 走看看