共用方式為


存取內嵌月曆控制項

內嵌月曆控制項物件可以呼叫 GetMonthCalCtrl 成員函式,從 CDateTimeCtrl 物件存取。

注意事項注意事項

內嵌月曆控制項,只有在日期和時間選擇器控制項尚未有 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)