Festlegen des Tags-Zustandes eines Monatskalender-Steuerelements
Eines der Attribute eines Monatskalender-Steuerelements ist die Fähigkeit, die Informationen speichern, so genannte der Tage Zustand des Steuerelements für jeden Tag des Monats.Diese Informationen werden verwendet, um bestimmte Datumsangaben für den Monat derzeit angezeigten hervorheben.
Hinweis |
---|
Das CMonthCalCtrl-Objekt muss das MCS_DAYSTATE Format aufweisen, um Tage zustandsinformationen anzuzeigen. |
Tage zustandsinformationen werden als 32-Bit-Datentyp, MONTHDAYSTATE ausgedrückt.Jedes Bit in einem MONTHDAYSTATE Bitfeld (1 bis 31) stellt den Zustand eines Tags eines Monats dar.Wenn ein Bit aktiviert ist, wird der entsprechende Tag fett angezeigt. Andernfalls wird er ohne Schwerpunkt angezeigt.
Es gibt zwei Möglichkeiten zum Festlegen des Tags zustandes des Monatskalender-Steuerelements: explizit mit einem Aufruf von CMonthCalCtrl::SetDayState oder durch das Behandeln der MCN_GETDAYSTATE Benachrichtigungsmeldung.
Die Behandlung MCN_GETDAYSTATE-Benachrichtigungsmeldung
Die MCN_GETDAYSTATE Meldung wird durch das Steuerelement gesendet, um zu bestimmen, wie die Tage im angezeigten Monaten angezeigt werden sollen.
Hinweis |
---|
Da das Steuerelement das vorherige zwischenspeichert und folgenden Monate im Verhältnis zum angezeigten Monat, erhalten Sie diese Benachrichtigung jedes Mal, wenn ein neuer Monat ausgewählt ist. |
Für um diese Nachricht ordnungsgemäß zu bearbeiten, müssen Sie bestimmen, wie viele Monate, Tage zustandsinformationen angefordert werden MONTHDAYSTATE initialisiert ein Array von Strukturen mit den richtigen Werten initialisieren und den zugehörigen Strukturmember mit den neuen Informationen.In der folgenden Prozedur, die notwendigen Schritte einzeln aufführend, wird davon ausgegangen, dass Sie ein CMonthCalCtrl-Objekt, das m_monthcal und ein Array MONTHDAYSTATE-Objekten aufgerufen wird, mdState an.
So bearbeiten MCN_GETDAYSTATE-Benachrichtigungsmeldung
Verwenden des Eigenschaftenfensters fügen Sie einen Klassenhandler für die Benachrichtigung MCN_GETDAYSTATE Meldung dem m_monthcal-Objekt hinzu (siehe Zuordnungs-Meldungen Funktionen).
Im Text des Handlers, fügen Sie den folgenden Code hinzu:
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 }
Im Beispiel wird die pNMHDR Zeiger auf den richtigen Typ, bestimmt, wie viele Monate von Informationen angefordert werden (pDayState->cDayState).Für jeden Monat wird das aktuelle Bitfeld (null) bis pDayState->prgDayState[i] initialisiert und dann die erforderlichen Datumsangaben festgelegt wird (in diesem Fall also 15. jedes Monats).