【已解决】VS2008下MFC程序如何设置多语言

本博文源于笔者正在操作的MFC程序遇到的问题,想要给中文窗体下增加翻译。一开始认为只需要读入xml文件就行了,结果发现读入的是乱码,就选择了其他方法。mfc自带的StringTable方法

本次演示从最原始的创建工程开始,一步步演示,可以让读者看的更加明白,更加仔细。

文章目录

    • 1、创建工程
    • 2、设置StringTable
    • 3、编写代码
    • 4、运行程序查看效果

1、创建工程

【已解决】VS2008下MFC程序如何设置多语言_第1张图片
点击【确定】,点【下一步】
【已解决】VS2008下MFC程序如何设置多语言_第2张图片
然后点击【完成】

2、设置StringTable

【已解决】VS2008下MFC程序如何设置多语言_第3张图片
点击【StringTable】,开始设置,这里以窗体的“确定”与"取消"为例子

【已解决】VS2008下MFC程序如何设置多语言_第4张图片
这里我们将其保存,再复制一份为英文版本

【已解决】VS2008下MFC程序如何设置多语言_第5张图片
点击StringTable 右键【“插入副本”】,下拉框选择【英语美国】,配置对应的中英文
【已解决】VS2008下MFC程序如何设置多语言_第6张图片

3、编写代码

在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语言一致

4、运行程序查看效果

【已解决】VS2008下MFC程序如何设置多语言_第7张图片

你可能感兴趣的:(MFC,1024程序员节)