9

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が、役に立ちませんでした。

更新:単なる説明:基本的に、私の質問は、ユーザーのデフォルト言語をプログラムで「オーバーライド」する方法と、ロケールの設定が十分でない理由です。

4

2 に答える 2