【发布时间】:2020-02-12 15:26:35
【问题描述】:
我正在尝试自定义 CMonthCalCtrl,但我不明白如何获取页脚文本(用于导航到“今天”日期的文本):
我尝试使用带有MCGIP_FOOTER 和MCGIF_NAME 标志的GetCalendarGridInfo 函数,但它不返回字符串:
CString cText;
MCGRIDINFO mcFooterInfo = { sizeof(MCGRIDINFO) };
mcFooterInfo.dwPart = MCGIP_FOOTER;
mcFooterInfo.dwFlags = MCGIF_NAME;
mcFooterInfo.pszName = cText.GetBuffer(_MAX_PATH);
mcFooterInfo.cchName = _MAX_PATH;
GetCalendarGridInfo(&mcFooterInfo);
// at this point mcFooterInfo.pszName contains "9" instead of "Сегодня: 12.02.2020"
这将返回“9”而不是页脚文本。
我不能自己格式化日期,因为我需要支持当前的用户语言,并且我需要知道如何拼写“今天:”部分。
有人知道怎么解决吗?
【问题讨论】:
-
为 dwPart 请求
MCGIF_NAMEMCGIP_FOOTERdoes not appear to be supported。 -
另外,请务必注意
GetCalendarGridInfo()的返回值。如果返回 FALSE,cText的内容将是未定义的。 -
"我需要知道如何拼写 "Today:" 部分" - 根据documentation: "月份-日历控件获取它的格式和所有字符串来自 LOCALE_USER_DEFAULT.”,因此可以只从语言环境中查询“Today”字符串本身,而无需询问 MonthCal 控件。除了according to this,“Today”字符串的本地化方式与其余 MonthCal 字符串的本地化方式不同。所以你可能是这方面的 SOL。
-
不清楚您到底想定制什么。看起来不像
Сегодня。如果只是日期算today,请看docs.microsoft.com/en-us/cpp/mfc/reference/… -
API 是
GetLocaleInfoEx(),但我认为它没有办法查询“今天”或“明天”等的翻译 - 只有一周中的几天等。