Sdílet prostřednictvím


Nastavení stavu dne v ovládacím prvku měsíční kalendář

Jedním z atributů ovládacího prvku kalendáře měsíce je schopnost ukládat informace, označované jako stav dne ovládacího prvku, pro každý den v měsíci. Tyto informace slouží ke zvýraznění určitých kalendářních dat pro aktuálně zobrazený měsíc.

Poznámka

Objekt CMonthCalCtrl musí mít styl MCS_DAYSTATE pro zobrazení informací o stavu dne.

Informace o stavu dne se vyjadřují jako 32bitový datový typ MONTHDAYSTATE. Každý bit v bitovém poli MONTHDAYSTATE (1 až 31) představuje stav dne v měsíci. Pokud je bit zapnutý, zobrazí se odpovídající den tučně; jinak se zobrazí bez zdůraznění.

Existují dvě metody pro nastavení stavu dne ovládacího prvku kalendáře měsíce: explicitně s voláním CMonthCalCtrl::SetDayState nebo zpracováním MCN_GETDAYSTATE oznámení.

Zpracování zprávy oznámení MCN_GETDAYSTATE

Ovládací prvek odešle zprávu MCN_GETDAYSTATE, aby určil, jak se mají zobrazit dny v viditelných měsících.

Poznámka

Vzhledem k tomu, že ovládací prvek ukládá předchozí a následující měsíce do mezipaměti, pokud jde o viditelný měsíc, obdržíte toto oznámení při každém výběru nového měsíce.

Chcete-li správně zpracovat tuto zprávu, musíte určit, kolik měsíců jsou informace o stavu požadovány, inicializovat pole struktury MONTHDAYSTATE se správnými hodnotami a inicializovat související člen struktury s novými informacemi. Následující postup podrobně popisuje nezbytné kroky, předpokládá, že máte CMonthCalCtrl objekt s názvem m_monthcal a pole MONTHDAYSTATE objekty, mdState.

Zpracování zprávy s oznámením MCN_GETDAYSTATE

  1. Pomocí Průvodce třídou přidejte obslužnou rutinu oznámení pro MCN_GETDAYSTATE zprávu do objektu m_monthcal (viz mapování zpráv na funkce).

  2. Do těla obslužné rutiny přidejte následující kód:

    LPNMDAYSTATE pDayState = reinterpret_cast<LPNMDAYSTATE>(pNMHDR);
    
    int iMax = pDayState->cDayState;
    
    for (int i = 0; i < iMax; i++)
    {
       pDayState->prgDayState[i] = (MONTHDAYSTATE)0; // init to 0
       pDayState->prgDayState[i] |= 0x01 << 14; // set 15th bit to 1
    }
    

    Příklad převede ukazatel pNMHDR na správný typ a pak určuje, kolik měsíců se požaduje (pDayState->cDayState). Pro každý měsíc se aktuální bitová pole (pDayState->prgDayState[i]) inicializuje na nulu a pak se nastaví potřebná data (v tomto případě 15. den každého měsíce).

Viz také

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