在具有本地化 UI 的 Win7 上,error_code::message()
返回非英文消息。据我所见(在 Boost 1.54 中,for system_error_category
),上述函数归结为以下 WinAPI 调用:
DWORD retval = ::FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
ev,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPSTR) &lpMsgBuf,
0,
NULL
);
如何让上面FormatMessage
返回一个英文消息?我试图设置语言环境,无论是使用std
功能还是使用SetThreadLocale
- 它都没有帮助。
更新:只是澄清一下:本质上,我的问题是如何以编程方式“覆盖”用户默认语言以及为什么设置区域设置是不够的。