本博文源于笔者正在操作的MFC程序遇到的问题,想要给中文窗体下增加翻译。一开始认为只需要读入xml文件就行了,结果发现读入的是乱码,就选择了其他方法。mfc自带的StringTable方法
本次演示从最原始的创建工程开始,一步步演示,可以让读者看的更加明白,更加仔细。
点击【确定】,点【下一步】
然后点击【完成】
点击【StringTable】,开始设置,这里以窗体的“确定”与"取消"为例子
这里我们将其保存,再复制一份为英文版本
点击StringTable 右键【“插入副本”】,下拉框选择【英语美国】,配置对应的中英文
在InitDialog里执行下面代码
CString strLoad;
strLoad.LoadString(IDOK);
GetDlgItem(IDOK)->SetWindowText(strLoad);//设置“确认”按钮显示的内容
strLoad.LoadString(IDCANCEL);
GetDlgItem(IDCANCEL)->SetWindowText(strLoad);//设置“取消”按钮显示的内容
如果想要用英文版,在
CString strLoad;
上面代码,加上这段
LANGID idLang = SetThreadUILanguage(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));//设置线程UI语言为英语
SetThreadLocale(idLang);//设置线程语言和UI语言一致
如果是中文版本
LANGID idLang = SetThreadUILanguage(MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT));//设置线程UI语言为中文
SetThreadUILocale(idLang);//设置线程语言和UI语言一致