Sdílet prostřednictvím


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

K objektu ovládacího prvku vloženého kalendáře měsíce lze přistupovat z objektu CDateTimeCtrl pomocí volání GetMonthCalCtrl členské funkce.

Poznámka

Ovládací prvek vložený kalendář měsíce se používá jenom v případech, kdy ovládací prvek pro výběr data a času nemá sadu stylů DTS_UPDOWN .

To je užitečné, pokud chcete před zobrazením vloženého ovládacího prvku upravit určité atributy. Uděláte to tak, že zpracujete DTN_DROPDOWN oznámení, načtete ovládací prvek kalendáře měsíce (pomocí atributu CDateTimeCtrl::GetMonthCalCtrl) a provedete změny. Ovládací prvek kalendáře měsíce bohužel není trvalý.

Jinými slovy, když uživatel požádá o zobrazení ovládacího prvku měsíčního kalendáře, vytvoří se nový ovládací prvek měsíčního kalendáře (před oznámením DTN_DROPDOWN ). Ovládací prvek je zničen (po oznámení DTN_CLOSEUP ) při zavření uživatelem. To znamená, že všechny atributy, které upravíte před zobrazením vloženého ovládacího prvku, budou při zavření vloženého ovládacího prvku ztraceny.

Následující příklad ukazuje tento postup pomocí obslužné rutiny pro DTN_DROPDOWN oznámení. Kód změní barvu pozadí ovládacího prvku měsíčního kalendáře s voláním SetMonthCalColor na šedou. Kód je následující:

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 jsme uvedli dříve, všechny úpravy vlastností ovládacího prvku kalendáře měsíce budou ztraceny se dvěma výjimkami při zavření vloženého ovládacího prvku. První výjimka, barvy ovládacího prvku měsíční kalendář, již byly popsány. Druhou výjimkou je písmo používané ovládacím prvek kalendáře měsíce. Výchozí písmo můžete upravit voláním CDateTimeCtrl::SetMonthCalFont a předáním popisovače existujícího písma. Následující příklad (kde m_dtPicker je objekt ovládacího prvku data a času) ukazuje jednu možnou metodu:


//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 změně písma se voláním CDateTimeCtrl::SetMonthCalFontuloží nové písmo a použije se při příštím zobrazení měsíčního kalendáře.

Viz také

Používání atributu CDateTimeCtrl
Ovládací prvky