현지화 된 UI가있는 Win7에서 error_code::message()
은 영어 이외의 메시지를 반환합니다. 지금까지 내가 (system_error_category
를 들어, 부스트 1.54에서) 보는 바와 같이, 위의 함수는 다음 WinAPI를 호출 귀결 :영어로 boost :: system :: error_code :: 메시지를받는 방법은 무엇입니까?
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). 로케일이나 전역 로케일이 스레드에 영향을 미치지 않아야합니까? –