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
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).
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).