Freigeben über


Einstellen des Tagesstatus für ein Monatskalender-Steuerelement

Eines der Attribute eines Monatskalendersteuerelements ist die Möglichkeit zum Speichern von Informationen, 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 bisschen aktiviert ist, wird der entsprechende Tag fett formatiert angezeigt. andernfalls wird sie ohne Hervorhebung angezeigt.

Es gibt zwei Methoden zum Festlegen des Tageszustands des Monatskalendersteuerelements: explizit mit einem Aufruf von CMonthCalCtrl::SetDayState oder durch Behandeln der MCN_GETDAYSTATE Benachrichtigungsnachricht.

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 vorausgesetzt, 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

  1. Fügen Sie mithilfe des Klassen-Assistenten dem m_monthcal-Objekt einen Benachrichtigungshandler für die MCN_GETDAYSTATE Nachricht hinzu (siehe Zuordnen von Nachrichten zu Funktionen).

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

Siehe auch

Verwenden von CMonthCalCtrl
Steuerelemente