1、字符放在DLL资源文件中,切换资源模块(程序默认使用exe模块资源)。函数
实现要点:spa
新建一个只包含资源的DLL。经过函数AfxSetResourceHandle设置资源模块。.net
示意代码为:线程
AfxSetResourceHandle(LoadLibrary("english.dll"));blog
Cstring strMsg;ci
strMsg.LoadString(ID_TITLE);资源
SetWindowText(strMsg);get
见例子MulLanguage_dll.rarstring
2、字符放在EXE资源文件中,选择对应的语言资源。原理
实现要点:
新建多个ID相同,语言不一样的资源。
经过SetThreadLocale设置当前线程使用语言。
示意代码:
SetThreadLocale(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US));
CString strMsg;
strMsg.LoadString(ID_TITLE);
SetWindowText(strMsg);
例子:MulLanguage_rc.rar
3、字符放在INI文件中。
实现要点:
同种语言字符放在单独的文本,经过切换文件方式切换语言。
优势:增长一种新语言,只需增长相应的语言的文件。
缺点:DLL模块中的字符转换,字符ID命名。
CString strMsg;
GetPrivateProfileString(…);
SetWindowText(strMsg);
见例子MulLanguage_ini.rar
综合上面三种方法,从原理上看实际上是同一种方法,获取相应语言下的字符,再显示字符,不一样之处是字符存放位置不一样。字符能够存放在DLL资源中,exe资源中,文本文件中。相应地获取字符方式也不一样。