访问嵌入的月历控件

月历嵌入的控件对象可与调用的 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的调用上,新的字体和使用,当下次月历将显示。

请参见

参考

使用 CDateTimeCtrl

概念

控件 (MFC)