首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FormatMessage c++获取仅英语的消息

如何使用FormatMessage c++获取仅英语的消息
EN

Stack Overflow用户
提问于 2012-10-03 19:40:18
回答 1查看 5.2K关注 0票数 12

我正在尝试使用格式消息来获取仅英语值。

MSDN指定以下内容

代码语言:javascript
复制
DWORD WINAPI FormatMessage(
  _In_      DWORD dwFlags,
  _In_opt_  LPCVOID lpSource,
  _In_      DWORD dwMessageId,
  _In_      DWORD dwLanguageId,
  _Out_     LPTSTR lpBuffer,
  _In_      DWORD nSize,
  _In_opt_  va_list *Arguments
);

对于dwLanguageId参数,

请求的消息的语言标识符。如果dwFlags包含FORMAT_MESSAGE_FROM_STRING,则忽略此参数。 如果在此参数中传递特定的LANGID,FormatMessage将只返回该LANGID的消息。如果函数找不到该LANGID的消息,它会将Last设置为ERROR_RESOURCE_LANG_NOT_FOUND。如果传入为零,FormatMessage将按照以下顺序查找LANGID的消息:

  1. 语言中性
  2. 线程LANGID,基于线程的区域设置值
  3. 用户默认LANGID,基于用户的默认区域设置值
  4. 基于系统默认值的系统默认LANGID
  5. 美国英语

如果FormatMessage没有找到任何前面的LANGID的消息,它将返回存在的任何语言消息字符串。如果失败,则返回ERROR_RESOURCE_LANG_NOT_FOUND。

这是否意味着,如果是传递值5,它将以英语返回消息吗?

你能澄清一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-03 20:07:55

文档中的数字5表示,美国英语是第五种语言,当您将0作为参数值传递时,FormatMessage将尝试使用它,但它已经尝试并失败了前面的四个选项。这与传递函数参数的值5无关。

若要请求英文消息,请传入美国英语的LANGID值,您可以通过MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)获得该值。FormatMessage文档链接到documentation on language identifiers,而documentation on language identifiers又链接到language identifier constants and strings的一个页面。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12715646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档