在具有本地化UI的Win7上,error_code::message()
返回非英文消息。據我看到(在升壓1.54,爲system_error_category
),上述功能可以歸結爲以下WinAPI的呼叫:如何在英文中獲取boost :: system :: error_code :: message?
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
- 它沒有幫助。
更新:只是澄清:本質上,我的問題是如何以編程方式「覆蓋」user default language和爲什麼設置區域設置是不夠的。
正如我所提到的,它不是我的代碼,而是調用'FormatMessage'的Boost.System。 –
好吧,然後寫你自己的功能。這並不困難。 –
補丁增強是一個選項,但我更喜歡更乾淨的解決方案。實際上,問題是是否可以覆蓋(LANG_NEUTRAL,SUBLANG_DEFAULT),即「用戶默認語言」(http://msdn.microsoft.com/en-us/library/windows/desktop/dd373908(v=vs.85) )的.aspx)。不應該線程語言環境或全局語言環境影響它? –