Udostępnij za pośrednictwem


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.

Zobacz też

Informacje

Przy użyciu CDateTimeCtrl

Koncepcje

Formanty (MFC)