1

次のコードを使用して、タイム ピッカー コントロール (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 部分を表す必要があることを意味します。

これを修正する方法はありますか?

4

1 に答える 1

2

[地域と言語] コントロール パネル ダイアログから、[追加設定] ボタンをクリックし、[時間] タブをクリックします。AM 記号と PM 記号には何が設定されていますか?

私の Windows 7 マシンでは、フォーマットがドイツ語に設定されているため、これらは両方とも空の文字列です。日時コントロールは、ユーザーの現在のロケールから表示する文字列を取得するため、書式文字列で AM/PM を表示するように強制しても、実際にはこの部分に表示するものは何もありません。

于 2013-06-08T22:44:22.747 に答える