转载:http://blog.csdn.net/guoyk1990/article/details/44337249

由于特殊原因我们需要将 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
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

最后一个参数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
);
  • 1
  • 2
  • 3
  • 4

微软给我们提供了足够多的语言支持,关于这两个参数可以参见微软提供的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));
  • 1

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

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

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

VS mfc MessageBox() 使用英文显示的更多相关文章

  1. 中文版Windows Server 2012 R2更改为英文显示语言

    1. 下载Windows Server 2012 R2多语言包(下载页面,直接下载链接). 2. 将win_svr_2012_r2_64bit_multi_language_lp_oem.img解压或 ...

  2. VS mfc MessageBox() 和 AfxMessageBox()

    转载:http://blog.csdn.net/phenixyf/article/details/41744039 一.MessageBox()用法 1.函数原型 Messagebox函数在Win32 ...

  3. MFC&Halcon之图片显示

    上一篇介绍了MFC调用Halcon功能的简单例子,在这个例子中,点击按钮会弹出一个窗口显示图片,但是这样显示并不美观,而且...于是我决定把显示窗口做在MFC的窗体内部. 具体的方案是:使用一个Pic ...

  4. MFC 工具栏隐藏与显示

    最近在学MFC,看的是孙鑫的VC++视频,感觉还不错.在看到第九节课的时候,讲到工具栏的时候,做了个小功能:工具栏的隐藏和显示,但是有个bug就是一个悬浮的工具栏隐藏后再显示,就会变成停靠状态.这里我 ...

  5. 【linux】英文显示乱码解决

    在linux环境中中文显示正常,而英文却显示乱码 用 echo $LANG 显示编码为 zh_CN.GB18030 解决方法: 输入 export LC_ALL=POSIX 即可

  6. MFC MessageBox AfxMessageBox

    MessageBox 一.消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合.1.MessageBox("这是一个最简单的消息框!");2.M ...

  7. MessageBox不能前置显示的问题

    在MFC的开发中,经常会遇到一些莫名奇妙的问题,可能是经验不足的原因吧. 进入正题....在手头的项目中,用MFC做的界面应用.在某一天突然发现程序界面不能进行响应,经过反复的调试后发现:Messag ...

  8. .Net下一个Winform方案可以让MessageBox.Show它显示在父窗口的中间

    下面的文字,缺省值是在屏幕中间显示. DialogResult dr = MessageBox.Show("是否要删除此数据?", "删除确认", Messag ...

  9. WIN7下重建图标缓存(解决MFC.exe桌面图标显示异常问题)

    WIN7下重建图标缓存 使用WIN7时,MFC工程生成的应用程序图标,如果更改为自定义的ICON图标之后可能在桌面上显示的依旧是上一次的图标,改个名或换个路径都能恢复正常,说明在WIN7系统下图标的缓 ...

随机推荐

  1. 第三十篇 面向对象的三大特性之继承 supre()

    继承 一 .什么是继承? 类的继承跟现实生活中的父.子.孙子.重孙子的继承关系一样,父类又称基类. Python中类的继承分为:单继承 和  多继承. # 定义父类 class ParentClass ...

  2. tp5 项目实战 初级 文字步骤

    项目实战 环境搭建 新建模块  admin 新建文件夹 controller   model  view View   中新建 user  index 相关样式  js   图片     放入publ ...

  3. CSS属性,可以完成99%的页面编写

    border:    border:4px dotted red;            宽度 样式 颜色 solid(实线)    border-style:        -none:       ...

  4. 用Fluent实现MySQL到ODPS数据集成

    安装ruby 首先通过 /etc/issue 命令查看当前使用centos是哪个版本: [hadoop@hadoop03 ~]$  cat /etc/issue 由于centos版本是6.6,安装ru ...

  5. (原创)白话KMP算法(续)

    第二章:KMP改良算法 第一章里面我们讲完了KMP算法的next数组实现法,回忆一下其实最重要的内容无非就是一.理解 i 指针无用回溯的意义,二.理解 j 指针的定位和模式串中每个元素重复度的关系,三 ...

  6. 论文翻译--StarCraft Micromanagement with Reinforcement Learning and Curriculum Transfer Learning

    (缺少一些公式的图或者效果图,评论区有惊喜) (个人学习这篇论文时进行的翻译[谷歌翻译,你懂的],如有侵权等,请告知) StarCraft Micromanagement with Reinforce ...

  7. 并查集——poj1308(并查集延伸)

    题目链接:Is It A Tree? 题意:给你一系列形如u v的点对(u v代表一条由u指向v的有向边),请问由给你的点构成的图是不是一棵树? 树的特征:①每个节点(除了根结点)只有一个入度:②只有 ...

  8. mysqli DB封装

    <?php class DB { //私有的属性 private static $dbcon = false; private $host; private $port; private $us ...

  9. 基于log4j的消息流的实现之二消息传递

    在“基于log4j的消息流的实现之一消息获取”中获取日志消息的部分,修改如下: import org.apache.commons.collections.map.HashedMap; import ...

  10. wait_event_interruptible_timeout

    最近一套方案涉及到内核线程之间的同步,用到了函数wait_event_interruptible_timeout函数,大致是这样: A:是一个后台的线程,平常没事就睡觉,有时被唤醒,或者每5分钟醒一次 ...