共用方式為


存取內嵌月曆控制項

您可以使用 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
Controls