Udostępnij za pośrednictwem


Uzyskiwanie dostępu do osadzonego formantu kalendarza miesięcznego

Obiekt formantu kalendarza miesiąca osadzony jest możliwy z CDateTimeCtrl obiekt z wezwaniem do GetMonthCalCtrl funkcji składowej.

[!UWAGA]

Miesiąc osadzony formant kalendarza jest używana tylko wtedy, gdy nie ma formantu wyboru daty i godziny DTS_UPDOWN zestaw stylów.

Jest to przydatne, jeśli chcesz zmodyfikować niektórych atrybutów, zanim zostanie wyświetlony osadzony formant.Aby osiągnąć ten cel, obsługi DTN_DROPDOWN powiadomienia, pobrać 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) kiedy zostało odrzucone przez użytkownika.Oznacza to, że wszelkie atrybuty, które modyfikujesz, przed wyświetleniem osadzonego formantu zostają utracone po osadzony formant zostaje odrzucona.

W poniższym przykładzie zademonstrowano tę procedurę przy użyciu programu obsługi dla DTN_DROPDOWN powiadomienia.Kod zmienia kolor tła formantu kalendarza miesiąca, z wezwaniem do SetMonthCalColor, na szary.Kod jest następująca:

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 do właściwości formantu kalendarza miesiąca zostaną utracone, dwa wyjątki, gdy osadzony formant zostaje odrzucona.Pierwszy wyjątek kolorów 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ć domyślną czcionkę rozmowy w celu CDateTimeCtrl::SetMonthCalFont, mijania uchwyt istniejące czcionki.Poniższy przykład (gdzie m_dtPicker jest przedmiotem kontroli daty i godziny) 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);

Gdy czcionki uległ zmianie, z wezwaniem do CDateTimeCtrl::SetMonthCalFont, nowa czcionka są przechowywane i wykorzystywane przy następnym kalendarza miesięcznego ma być wyświetlany.

Zobacz też

Informacje

Korzystanie z CDateTimeCtrl

Koncepcje

Formanty (MFC)