MSDN指定以下内容
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参数,
The language identifier for the requested message. This parameter is ignored if dwFlags includes FORMAT_MESSAGE_FROM_STRING.
If you pass a specific LANGID in this parameter,FormatMessage will return a message for that LANGID only. If the function cannot find a message for that LANGID,it sets Last-Error to ERROR_RESOURCE_LANG_NOT_FOUND. If you pass in zero,FormatMessage looks for a message for LANGIDs in the following order:
- Language neutral
- Thread LANGID,based on the thread’s locale value
- User default LANGID,based on the user’s default locale value
- System default LANGID,based on the system default locale value
- US English
If FormatMessage does not locate a message for any of the preceding LANGIDs,it returns any language message string that is present. If that fails,it returns ERROR_RESOURCE_LANG_NOT_FOUND.
这是否意味着,如果传递值为5,它将以英语返回消息?
你能澄清一下吗?
解决方法
要请求英文消息,请传入美国英语的LANGID值,您可以使用MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US)获取该值. FormatMessage文档链接到documentation on language identifiers,后者又链接到language identifier constants and strings页面.