次のコードを使用して、タイム ピッカー コントロール (Win32 クラス名SysDateTimePick32
) の形式を設定し、時刻を米国英語形式のみで表示します。
LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));
TCHAR buffFmt[200] = {0};
GetLocaleInfo(lcid, LOCALE_STIMEFORMAT, buffFmt, SIZEOF(buffFmt));
TRACE(buffFmt); //"h:mm:ss tt"
::SendMessage(m_hWnd, DTM_SETFORMAT, 0, (LPARAM)buffFmt);
米国英語のユーザー アカウント用にセットアップされた Windows 7 で実行すると、コントロールは次のようになります。
しかし、ドイツ語の形式に設定されたユーザー アカウントを使用して Windows 7 で実行すると、次のようになります。
コントロールは次のようになります (AM/PM の部分がありません):
どちらの場合も、フォーマット文字列は「h:mm:ss tt」であることに注意してください。これは、このページtt
によると、AM/PM 部分を表す必要があることを意味します。
これを修正する方法はありますか?