存取內嵌的月曆控制項
從可以存取內嵌的月曆月曆控制項物件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,新的字型是儲存和使用月行事曆會顯示在下一次。