共用方式為


存取內嵌的月曆控制項

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

注意事項注意事項

內嵌的月曆控制項只適用於日期和時間選擇器控制項並沒有 DTS_UPDOWN 樣式集。

這是很有用,如果您想要在內嵌的控制項顯示之前修改某些屬性。 若要達成此目的,處理 DTN_DROPDOWN 通知,擷取月曆控制項 (使用 CDateTimeCtrl::GetMonthCalCtrl),並進行修改。 不幸的是,月曆控制項不會持續。

也就是說,當使用者要求月曆控制項的顯示方式,會建立新月曆控制項 (之前 DTN_DROPDOWN 通知)。 終結時控制項也 (之後 DTN_CLOSEUP 通知) 由使用者關閉時。 這表示當內嵌的控制項關閉時,會遺失任何修改時,內嵌的控制項顯示時之前, 的屬性。

下列範例會示範這個程序,使用的處理常式 DTN_DROPDOWN 通知。 程式碼會變更月曆控制項,有一個呼叫的背景色彩 SetMonthCalColor,成灰 50%。 程式碼如下所示:

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)