Sdílet prostřednictvím


Přístup k vloženému ovládacímu prvku měsíční kalendář

Objekt vložený měsíc kalendáře ovládací prvek lze přistupovat z CDateTimeCtrl objekt pomocí volání GetMonthCalCtrl členské funkce.

[!POZNÁMKA]

Měsíc vložený ovládací prvek Kalendář se používá pouze v případě, že nemá ovládací prvek Výběr data a času DTS_UPDOWN sadu stylů.

To je užitečné, pokud chcete změnit některé atributy před vložený ovládací prvek je zobrazen.Chcete-li toho dosáhnout, zpracovávat DTN_DROPDOWN oznámení, načíst v ovládacím prvku měsíční kalendář (pomocí CDateTimeCtrl::GetMonthCalCtrl) a provést úpravy.Bohužel není trvalé ovládacím prvku měsíční kalendář.

Jinými slovy, když uživatel požaduje zobrazení v ovládacím prvku měsíční kalendář, ovládací prvek nový měsíc kalendáře je vytvořena (před DTN_DROPDOWN oznámení).Ovládací prvek je zničen (po DTN_CLOSEUP oznámení) Pokud jej uživatel.To znamená, že všechny atributy, které upravujete, než se zobrazí vložený ovládací prvek, dojde ke ztrátě při zamítnut vložený ovládací prvek.

Následující příklad ukazuje postup obslužnou rutinu pro použití DTN_DROPDOWN oznámení.Kód změní barvu pozadí z prvku měsíční kalendář, pomocí volání SetMonthCalColor, šedou barvu.Zde je kód:

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 bylo uvedeno dříve, všechny úpravy vlastností prvku měsíční kalendář při, se dvěma výjimkami, vložený ovládací prvek zamítnut.První výjimka barvy v ovládacím prvku měsíční kalendář již byla diskutována.Druhou výjimkou je písmo použité v ovládacím prvku měsíční kalendář.Můžete změnit výchozí písmo tak, že volání CDateTimeCtrl::SetMonthCalFont, předávání popisovač existujících písem.V následujícím příkladu (kde m_dtPicker je ovládací prvek objektu data a času) ukazuje jeden možný způsob:

//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);

Jakmile změníte písmo s voláním CDateTimeCtrl::SetMonthCalFont, jsou uloženy a použity při příštím měsíčního kalendáře se zobrazí nové písmo.

Viz také

Referenční dokumentace

Používání atributu CDateTimeCtrl

Koncepty

Ovládací prvky (MFC)