访问嵌入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,新字体存储和使用,则下次月历将显示。