操作流程:2023-02-24 09:03:01
- 1.新建工程MFC(基于对话框),默认“中文”。
- 2.添加多国语言资源。(Set Dialog)。
- 3.Local设置线程语言。
-
name_combox.AddString(_T("zhong")); name_combox.AddString(_T("ying")); LANGID Language{0}; LANGID LanguageId1 = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED); LANGID LanguageId2 = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); UpdateData(false); int combox_number = name_combox.GetCurSel(); //选取列表框中的一个选项,索引从0开始,-1为什么都不选 switch (combox_number) { case 0: SetThreadUILanguage(LanguageId1); //SetThreadUILanguage(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)); break; case 1: SetThreadUILanguage(LanguageId2); //SetThreadUILanguage(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); break;
- 4.字符串处理的多语言版本。
- ①string table②添加控件、响应函数③分别在initimstance添加设置线程语言代码
- 5.通过菜单进行语言切换,重启软件。
- 今日问题:
- ①Json文件的作用?②stringtable切换问题?stringtable有两个值(设置中文、英文后),它怎么知道加载哪个?怎么进行切换的?怎么与swich联动起来的?③全部为默认加载语言,都是联动好的()④不要用MessageBox,改用MessageBoxEx,即可指定消息框的语言。
§ 当在initinstance下设置线程语言时,系统会根据线程语言全部进行联动替换。(后面的都没有用,stringtable和dialog都会跟线程语言保持一致)
CWinApp::InitInstance(); LANGID LanguageId = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); //取得语言ID; MAKELANGID宏:主语言标识符、从语言标识符;返回语言标识符 SetThreadUILanguage(LanguageId); //设置当前的进程区域语言
§双击控件按钮提示“重载函数已存在”
①删除与此按钮有关的代码。.h afx、.cpp begin。都是自动生成的②删除一个按钮,在重新添加一个按钮(更改按钮的ID号码) 。
§swich语句
①switch() 括号内的“表达式”必须是整数类型或者可以转换为整型的数值类型。比如:byte、short、int、char、也可以直接是整数或字符常量还有枚举,哪怕是负数都可以。需要强调的是:float、double、long和String类型是不能作用在switch语句上的。
②当switch后面括号内“表达式”的值与某个case后面的“常量表达式”的值相等时,就执行此case后面的语句。执行完一个case后面的语句后,流程控制转移到下一个case继续执行。如果你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出switch语句。
- 原文链接查看(https://www.cnblogs.com/xianyunhe/archive/2011/09/02/2163842.html)