月历嵌入的控件对象可与调用的 CDateTimeCtrl 对象访问 GetMonthCalCtrl 成员函数。
备注
月历嵌入的控件,仅当和日期时间选择器控件没有 DTS_UPDOWN 的样式设置时。
如果要修改特定特性,在嵌入的控件显示是有用的。 为此,请处理 DTN_DROPDOWN 通知,检索月历控件 (使用 CDateTimeCtrl::GetMonthCalCtrl),然后进行修改。 遗憾的是月份,日历控件无需采用不可变的。
换言之,那么,当用户请求月历控件显示一个新月份,日历控件创建 (在 DTN_DROPDOWN 之前通知)。 销毁控件 (在 DTN_CLOSEUP 通知) 后,在用户关闭。 这意味着您修改的任何特性,嵌入的控件关闭时在嵌入控件的显示之前会丢失。
使用 DTN_DROPDOWN 通知的,一个处理程序。下面的示例演示此过程。 代码更改月历控件的背景色,并调用为 SetMonthCalColor,设置为灰色。 代码如下所示:
void CMyDialog::OnDtnDropdownDatetimepicker1(NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
//set the background color of the month to gray
COLORREF clr= RGB(100, 100, 100);
m_DateTimeCtrl.SetMonthCalColor(MCSC_MONTHBK, clr);
*pResult = 0;
}
当嵌入的控件关闭时,如前所述,该月历控件属性的任何修改将丢失,会有两个异常。 第一个异常,月历控件的颜色,在前面已经讨论。 第二个异常是月历控件的字体。 可以通过调用修改默认字体为 CDateTimeCtrl::SetMonthCalFont,将现有的字体的句柄。 以下示例 (其中 m_dtPicker 是日期和时间对象控件) 演示一种可能的方法:
//create and initialize the font to be used
LOGFONT logFont = {0};
logFont.lfHeight = -12;
logFont.lfWeight = FW_NORMAL;
logFont.lfCharSet = DEFAULT_CHARSET;
_tcscpy_s(logFont.lfFaceName, _countof(logFont.lfFaceName),
_T("Verdana"));
m_MonthCalFont.CreateFontIndirect(&logFont);
m_DateTimeCtrl.SetMonthCalFont(m_MonthCalFont);
字体更改之后,使用对 CDateTimeCtrl::SetMonthCalFont的调用上,新的字体和使用,当下次月历将显示。