由于特殊原因我们需要将 MessageBox 或 Dialog 的按钮“确定”、“取消”用英文或其他语言显示。在网上查找了很多相关内容,但很多要么很麻烦,要么根本就不能实现所需效果。最后发现还是MSDN最好用。
首先是MessageBox中如何将按钮中的文字显示为其他语言。MessageBox要使用 MessageBoxEx才可以,其定义如下:

int WINAPI MessageBoxEx(_In_opt_  HWND hWnd,_In_opt_  LPCTSTR lpText,_In_opt_  LPCTSTR lpCaption,_In_      UINT uType,_In_      WORD wLanguageId
);

最后一个参数MSDN上给出的解释是:

wLanguageId [in]
Type: WORD
The language for the text displayed in the message box button(s). Specifying a value of zero (0) indicates to display the button text in the default system language. If this parameter is MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), the current language associated with the calling thread is used.
To specify a language other than the current language, use the MAKELANGID macro to create this parameter. For more information, see MAKELANGID.

意思就是我们需要用函数MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),来生成最后一个参数。它的定义为

WORD MAKELANGID(USHORT usPrimaryLanguage,USHORT usSubLanguage
);

微软给我们提供了足够多的语言支持,关于这两个参数可以参见微软提供的Language Identifier Constants and Strings表格。从表格中查找相应的语言的PrimaryLanguage和SubLanguage即可。如英语为:LANG_ENGLISH 和 SUBLANG_ENGLISH_US ,可以写成MAKELANGID(LANG_ENGLISH , UBLANG_ENGLISH_US );
最后举一个例子:

MessageBoxEx(NULL,L"This is an English MessageBox!",L"Alert",MB_OKCANCEL,MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));

下面介绍一下如何修改Dialog中的默认按钮上的文字,这里只介绍系统定义的Dialog,如:CFileDialog。(Customer Dialog 也没有做这些的意义了,因为直接修改按钮的Caption 属性即可)。修改Dialog的默认按钮文字只需要在创建Dialog前加上一句:

SetThreadUILanguage(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));

即可,参数中MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)的使用和上文的使用方法中一样。

MessageBox 按钮显示英文或其他语言相关推荐

  1. VC++ 如何让 MessageBox或AfxMessageBox 按钮显示英文或其他语言

    由于特殊原因我们需要将 MessageBox 或 Dialog 的按钮"确定"."取消"用英文或其他语言显示.在网上查找了很多相关内容,但很多要么很麻烦,要么根 ...

  2. 更改Windows系统下的MessageBox按钮显示内容

    在实际开发中,可能会碰到这样一个场景:使用Windows系统下的MessageBox给出提示信息时,按钮的显示内容是Windows已经设定好的,无法更改.比如,在中文系统下,IDOK对应的按钮内容为& ...

  3. UNI-APP,uni.scanCode扫码页面显示英文,uni.showActionSheet自带取消按钮显示英文问题的解决

    效果如下: 解决 const i18n = new VueI18n({locale: 'zh-Hans',messages: {'zh-Hans': require('./static/lang/cn ...

  4. 解决QDialogButtonBox按钮的英文翻译问题

    问题: 使用Qt Creator设计师,把QDialogButtonBox拖到界面上,显示3个标准按钮:"Ok"."Cancel"和"Apply&qu ...

  5. jQuery里面的datepicker日期控件默认是显示英文的,如何显示中文或其他语言呢?...

    jQuery里面的datepicker日期控件默认是显示英文的,如何让他显示中文或其他呢? [官方的写法]: (1)引入JS文件: <script type="text/javascr ...

  6. 设计一个应用程序,以在C#中的按钮单击事件上在MessageBox中显示TextBox中的文本...

    Here, we took two controls on windows form that are TextBox and Button, named txtInput and btnShow r ...

  7. VS Code修改语言设置后依旧显示英文的问题解决

    1.修改默认语言 1)ctrl+shift+P 显示所有命令 2)查找Configure Display Language(中文环境下为"配置显示语言"),打开locale.jso ...

  8. 【翻页电子画册制作软件】云展网教程 | 设置工具栏上按钮显示语言种类

    云展网的翻页电子杂志工具栏支持多种语言. 在设置语言栏目可以选择是否显示切换语言按钮,以及按钮显示的语言类型. 点击语言进入语言设置页面: 你可以为翻页电子书创建一个新的语言种类,在对应的标签框当中添 ...

  9. Yandex浏览器新标签页按钮显示俄文的解决办法

    求一个解决新标签页按钮显示为俄文的真正办法,下文只能把新标签页按钮改成英文,其余为中文.希望有人能知道新标签页按钮的文字封装在哪个文件里面,然后对文件进行修改. 最新的Yandex 20.11.3.1 ...

最新文章

  1. 如何判断Android手机当前是否联网?
  2. gridview格式化日期字段
  3. MaskedTextBox
  4. adsl服务器客户端配置cisco_windows下,Kiwi_Syslog日志服务器的搭建
  5. linkedblockingqueue 后 take 不消化_消化不良的成因及护理
  6. 自己动手,开发项目辅助工具
  7. 洛谷——P1876 开灯
  8. 语音识别的原理_语音识别原理_语音识别原理框图 - 云+社区 - 腾讯云
  9. SAS 9.4 的sid问题解决方案汇总(头疼...)
  10. 基于nonebot的QQ群聊机器人制作(一)
  11. windows卸载服务
  12. 精简win服务器系统,Windows Server 2016攻略—为云而生的极简平台Nano Server(2)
  13. 用递归法打印九九乘法表c语言,java递归打印九九乘法表
  14. react 父子 --- 子父 通讯
  15. PS修改图标颜色的方法
  16. java山地车 故障,十年骑龄车友总结山地车保养维修技巧
  17. SOPC Builder failed to refresh PTF file
  18. ant.vue富文本编辑器_基于Vue.js 2.0和shimo Docs样式的富文本编辑器
  19. 互联网周刊:O2O商业模式剖析
  20. cadence allegro 之如何添加泪滴

热门文章

  1. 手持天馈线测试仪基站测试分析专家
  2. 新浪微博小工具--PC遥控器1.0发布
  3. 电邮地址_电子邮件如何运作?
  4. springBoot员工管理系统
  5. python求股票收益率_python – 有没有办法自动获取许多股票的一般信息,如市盈率,收益率等等?...
  6. 微信小程序:全新趣味测试
  7. window10设置防火墙只允许某些ip访问
  8. CEO,CTO,COO,CFO,CIO首席执行官,首席运营官,首席技术官
  9. App广告投放数据统计
  10. 百度程序员推荐的书籍,今天免费送!