Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die Microsoft Foundation Classes (MFC)-Bibliothek wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.
Eines der Attribute eines Monatskalender-Steuerelements ist die Möglichkeit, Informationen zu speichern, die als Tageszustand des Steuerelements bezeichnet werden, für jeden Tag des Monats. Diese Informationen werden verwendet, um bestimmte Datumsangaben für den aktuell angezeigten Monat hervorzuheben.
Hinweis
Das CMonthCalCtrl Objekt muss über die MCS_DAYSTATE Formatvorlage verfügen, um Tageszustandsinformationen anzuzeigen.
Tagesstatusinformationen werden als 32-Bit-Datentyp , MONTHDAYSTATE, ausgedrückt. Jedes Bit in einem MONTHDAYSTATE-Bitfeld (1 bis 31) stellt den Status eines Tages in einem Monat dar. Wenn ein Bit gesetzt ist, wird der entsprechende Tag fett angezeigt; andernfalls wird er ohne Hervorhebung angezeigt.
Es gibt zwei Methoden, um den Tagesstatus des Monatskalender-Steuerelements festzulegen: explizit mit einem Aufruf von CMonthCalCtrl::SetDayState ooder durch Verarbeiten der Benachrichtigungsnachricht MCN_GETDAYSTATE.
Behandeln der MCN_GETDAYSTATE-Benachrichtigung
Die MCN_GETDAYSTATE Nachricht wird vom Steuerelement gesendet, um zu bestimmen, wie die Tage innerhalb der sichtbaren Monate angezeigt werden sollen.
Hinweis
Da das Steuerelement die vorherigen und folgenden Monate zwischenspeichert, erhalten Sie diese Benachrichtigung jedes Mal, wenn ein neuer Monat ausgewählt wird, in Bezug auf den sichtbaren Monat.
Um diese Nachricht ordnungsgemäß zu verarbeiten, müssen Sie bestimmen, für wie viele Monatsstatusinformationen angefordert werden, ein Array von MONTHDAYSTATE-Strukturen mit den richtigen Werten initialisieren und das zugehörige Strukturelement mit den neuen Informationen initialisieren. Im folgenden Verfahren wird davon ausgegangen, dass Sie über ein CMonthCalCtrl Objekt mit dem Namen m_monthcal und ein Array von MONTHDAYSTATE-Objekten ( mdState) verfügen.
So behandeln Sie die MCN_GETDAYSTATE-Benachrichtigung
Fügen Sie mithilfe des Klassen-Assistenten einen Benachrichtigungshandler für die MCN_GETDAYSTATE Nachricht zum m_monthcal-Objekt hinzu (siehe Zuordnen von Nachrichten zu Funktionen).
Fügen Sie im Textkörper des Handlers 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 der pNMHDR-Zeiger in den richtigen Typ konvertiert. Anschließend wird bestimmt, wie viele Monate Informationen angefordert werden (
pDayState->cDayState). Für jeden Monat wird das aktuelle Bitfeld (pDayState->prgDayState[i]) auf Null initialisiert, und dann werden die erforderlichen Datumsangaben festgelegt (in diesem Fall der 15. jedes Monats).