我正在使用以下代码将 Time Picker 控件的格式(使用 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 部分。
知道如何解决这个问题吗?