Dostęp do formantu Kalendarz osadzone
Obiekt formantu kalendarza miesiąca osadzony jest możliwy z CDateTimeCtrl obiekt z zaproszeniem do GetMonthCalCtrl funkcji składowej.
[!UWAGA]
Miesiąc osadzony formant kalendarza jest używana tylko wtedy, gdy formant wyboru daty i godziny nie ma DTS_UPDOWN zestaw stylów.
Jest to przydatne, jeśli chcesz zmodyfikować niektórych atrybutów, zanim wyświetlone zostanie osadzony formant.Aby osiągnąć ten cel, obsługi DTN_DROPDOWN powiadomienia, pobrać w formancie kalendarza miesięcznego (za pomocą CDateTimeCtrl::GetMonthCalCtrl) i dokonanie modyfikacji.Niestety w formancie kalendarza miesięcznego nie jest trwałe.
Innymi słowy, gdy użytkownik zażąda wyświetlania w formancie kalendarza miesięcznego, formancie kalendarza miesięcznego nowy jest tworzony (przed DTN_DROPDOWN powiadomienia).Formant jest niszczony (po DTN_CLOSEUP powiadomienia) podczas odrzucony przez użytkownika.Oznacza to, że wszelkie atrybuty, które można modyfikować, przed wyświetleniem osadzony formant zostaną utracone podczas osadzony formant zostaje oddalony.
W poniższym przykładzie zademonstrowano tę procedurę przy użyciu programu obsługi dla DTN_DROPDOWN powiadomienia.Kod zmienia kolor tła w formancie kalendarza miesięcznego w wywołaniu SetMonthCalColor, na szary.Kod jest w następujący sposób:
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;
}
Jak wspomniano wcześniej, wszystkie zmiany właściwości w formancie kalendarza miesięcznego zostają utracone, a z dwoma wyjątkami, gdy osadzony formant zostaje oddalony.Pierwszy wyjątek kolory w formancie kalendarza miesięcznego już zostały omówione.Drugi wyjątek jest czcionka używana w formancie kalendarza miesięcznego.Można zmodyfikować czcionkę domyślną poprzez wywołanie CDateTimeCtrl::SetMonthCalFont, przekazując jej uchwyt istniejących czcionek.Poniższy przykład (gdzie m_dtPicker to obiekt formantu Data i godzina) przedstawia jedną z możliwych metod:
//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);
Po zmianie czcionki, z zaproszeniem do CDateTimeCtrl::SetMonthCalFont, nowe czcionki są przechowywane i wykorzystywane podczas następnego miesiąca kalendarza ma być wyświetlany.