Udostępnij za pośrednictwem


Ustawienie stanu dzień formant kalendarza miesięcznego

Jednym z atrybutów w formancie kalendarza miesięcznego jest możliwość przechowywania informacji, określonych jako dzień stan formantu, dla każdego dnia miesiąca.Te informacje są używane, aby wyróżnić niektóre terminy miesiąca, aktualnie wyświetlane.

[!UWAGA]

CMonthCalCtrl Obiekt musi mieć MCS_DAYSTATE styl, aby wyświetlić informacje o stanie dzień.

Informacje o stanie dzień jest wyrażony jako typu danych 32-bitowe, MONTHDAYSTATE.Każdy bit w MONTHDAYSTATE pole bitowe (od 1 do 31) przedstawia stan dzień w miesiącu.Jeśli bit jest włączona, zostanie wyświetlony odpowiedni dzień pogrubiona; w przeciwnym razie będzie wyświetlana z bez nacisku.

Istnieją dwie metody ustalania stanu dzień w formancie kalendarza miesięcznego: wyraźnie z zaproszeniem do CMonthCalCtrl::SetDayState lub obsługa MCN_GETDAYSTATE komunikat z powiadomieniem.

Obsługa wiadomości z powiadomieniem MCN_GETDAYSTATE

MCN_GETDAYSTATE wiadomość jest wysyłana przez formant do określenia sposobu wyświetlania dni w okresie miesięcy widoczne.

[!UWAGA]

Ponieważ formant buforuje poprzedniego i następnego miesiąca, w odniesieniu do widoczny miesiąc, otrzymasz powiadomienie przy każdym wybrano nowego miesiąca.

Aby prawidłowo obsłużyć tego komunikatu, należy określić, ile miesięcy są informacje o stanie dzień wnioskowane, zainicjować tablicę MONTHDAYSTATE struktur odpowiednie wartości i initialize członka struktury powiązanych z nowych informacji.Poniższa procedura wyszczególniający niezbędne kroki, założono, że CMonthCalCtrl obiektu o nazwie m_monthcal i Tablica MONTHDAYSTATE obiektów, mdState.

Do obsługi komunikat z powiadomieniem MCN_GETDAYSTATE

  1. Za pomocą okna właściwości, dodawanie obsługi powiadomień dla MCN_GETDAYSTATE wiadomości do m_monthcal obiektu (zobacz Mapowanie wiadomości do funkcji).

  2. W treści programu obsługi Dodaj następujący kod:

    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
    }
    

    Przykład konwertuje pNMHDR wskaźnik do właściwego typu, następnie określa, ile miesięcy informacje są żądane (pDayState->cDayState).Za każdy miesiąc, bieżący bitfield (pDayState->prgDayState[i]) jest ustawiana na zero, a następnie potrzebne daty są ustalane (w tym przypadku 15 dnia każdego miesiąca).

Zobacz też

Informacje

Przy użyciu CMonthCalCtrl

Koncepcje

Formanty (MFC)