2019独角兽企业重金招聘Python工程师标准>>>
一、字符放在DLL资源文件中,切换资源模块(程序默认使用exe模块资源)。
实现要点:
新建一个只包含资源的DLL。通过函数AfxSetResourceHandle设置资源模块。
示意代码为:
AfxSetResourceHandle(LoadLibrary("english.dll"));
Cstring strMsg;
strMsg.LoadString(ID_TITLE);
SetWindowText(strMsg);
见例子MulLanguage_dll.rar
二、字符放在EXE资源文件中,选择对应的语言资源。
实现要点:
新建多个ID相同,语言不同的资源。
通过SetThreadLocale设置当前线程使用语言。
示意代码:
SetThreadLocale(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US));
CString strMsg;
strMsg.LoadString(ID_TITLE);
SetWindowText(strMsg);
例子:MulLanguage_rc.rar
三、字符放在INI文件中。
实现要点:
同种语言字符放在单独的文本,通过切换文件方式切换语言。
优点:增加一种新语言,只需增加相应的语言的文件。
缺点:DLL模块中的字符转换,字符ID命名。
CString strMsg;
GetPrivateProfileString(…);
SetWindowText(strMsg);
见例子MulLanguage_ini.rar
综合上面三种方法,从原理上看其实是同一种方法,获取相应语言下的字符,再显示字符,不同之处是字符存放位置不同。字符可以存放在DLL资源中,exe资源中,文本文件中。相应地获取字符方式也不同。
http://blog.csdn.net/John_Yang/article/details/5549400