UI がローカライズされた Win7 では、error_code::message()
英語以外のメッセージが返されます。私の知る限り (Boost 1.54 では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
が、役に立ちませんでした。
更新:単なる説明:基本的に、私の質問は、ユーザーのデフォルト言語をプログラムで「オーバーライド」する方法と、ロケールの設定が十分でない理由です。