访问嵌入Month calendar控件

嵌入 month calendar 控件对象可以从具有名为的 CDateTimeCtrl 对象中获取对 GetMonthCalCtrl 成员函数。

说明说明

嵌入 month calendar 控件,仅当日期和时间选择器控件没有 DTS_UPDOWN 样式设置时,请使用。

这是有用,如果要修改某些属性,则个嵌入式控件显示之前。为此,请处理 DTN_DROPDOWN 请注意,检索 month calendar 控件 (使用 CDateTimeCtrl::GetMonthCalCtrl),并进行修改。遗憾的是, month calendar 控件不是不可变的。

换言之,那么,当用户请求 month calendar 控件的显示,新的 month calendar 控件创建 (在 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;
}

,当嵌入的控件关闭时,如前所述,对 month calendar 控件属性的任何修改丢失,有两个异常。第一个异常, month calendar 控件的颜色,请讨论。第二个异常是 month calendar 控件使用的字体。可以通过调用修改默认字体为 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)