VC++ 模块与资源分离

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

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

  VC++ 模块与资源分离

VC++ 模块与资源分离

VC++ 模块与资源分离

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

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

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

  模块加载资源dll:

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

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

     CString strResDllPath = GetResDllPath(eLangType);
HINSTANCE m_hInst = ::LoadLibrary(strResDllPath);
if (m_hInst)
{
AfxSetResourceHandle(m_hInst);
}

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

 if (m_hInst)
{
FreeLibrary(m_hInst);
4   m_hInst = NULL;
}

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

上一篇:sublime关闭自动打开上次的文件


下一篇:CSRF 防御策略