|
资源文件国际化(VC++) 1.取得系统的既定语言识别ID 用LANGID GetSystemDefaultLangID(VOID)函数可以取得系统的既定语言识别ID。用宏定义 PRIMARYLANGID(LANGID) 可以取出语言识别PRIMARY部分(语种)。用宏定义SUBLANGID(LANGID) 可以取出语言识别ID的详细分类。 LANGID wdLangID = GetSystemDefaultLangID();
wdLangID = PRIMARYLANGID(wdLangID);
WORD wdSubLangID = -1;
switch (wdLangID)
{
case LANG_CHINESE: //中国語
wdSubLangID = SUBLANGID(GetSystemDefaultLangID());
switch (wdSubLangID)
{
case SUBLANG_CHINESE_TRADITIONAL: // 台湾
//TODO 処理
break;
case SUBLANG_CHINESE_HONGKONG: // 香港
//TODO 処理
break;
case SUBLANG_CHINESE_SIMPLIFIED: // 中国
//TODO 処理
break;
case SUBLANG_CHINESE_SINGAPORE: // シンガポール
//TODO 処理
break;
default:
//TODO 処理
break;
}
break;
case LANG_JAPANESE: //日本語
//TODO 処理
break;
}
2.做一个只有资源的DLL 生成一个普通的DLL工程。将要国际化的工程中的与资源有关系的文件拷贝到这个DLL工程的底下,并追加到这个DLL工程中去。说起由关系的文件也就是rc文件,resource.h文件,和res目录下的所以文件。把资源里的文字改成某国的语言、编译制作DLL。 3.只有资源的DLL的使用 在主程序一侧,使用HINSTANCE LoadLibrary(LPCTSTR)函数把DLL调入。调用void AfxSetResourceHandle( HINSTANCE hInstResource )函数,使主程序能够使用DLL里的资源。如此操作可以对应多种外语版本。 例: m_hResource = ::LoadLibrary(strURL); if (m_hResource != NULL) AfxSetResourceHandle(m_hResource); 4.释放DLL BOOL FreeLibrary(HMODULE);
|