Freigeben über


Festlegen von Tageszuständen

In diesem Thema wird veranschaulicht, wie Sie Tageszustandsinformationen festlegen. Das Monatskalender-Steuerelement verwendet Tageszustandsinformationen, um zu bestimmen, wie bestimmte Tage innerhalb des Steuerelements erstellt werden.

Monatskalendersteuerelemente, die die MCS_DAYSTATE-Stil-Unterstützungstagszustände verwenden. Tageszustandsinformationen werden als 32-Bit-Datentyp , MONTHDAYSTATE, ausgedrückt. Jedes Bit in einem MONTHDAYSTATE-Bitfeld (0 bis 30) gibt den Zustand eines Tages in einem Monat an. Wenn ein Bit aktiviert ist, wird der entsprechende Tag fett formatiert angezeigt.

Wichtige Informationen

Technologien

Voraussetzungen

  • C/C++
  • Programmierung der Windows-Benutzeroberfläche

Anweisungen

Eine Anwendung kann Explizit Tageszustandsinformationen festlegen, indem sie die MCM_SETDAYSTATE Nachricht sendet oder das entsprechende Makro MonthCal_SetDayState verwendet. Tageszustandsinformationen werden jedoch in der Regel als Reaktion auf den MCN_GETDAYSTATE Benachrichtigungscode festgelegt, der gesendet wird, wenn das Steuerelement aktualisiert werden muss, da z. B. ein anderer Monat in die Ansicht gescrollt wurde.

Der folgende Beispielcode zeigt, wie der MCN_GETDAYSTATE-Benachrichtigungscode in einem WM_NOTIFY-Nachrichtenhandler verarbeitet wird. Es verarbeitet MCN_GETDAYSTATE, indem angegeben wird, dass der erste und der fünfzehnte Tag jedes sichtbaren Monats hervorgehoben werden sollen. Der cDayState-Member der NMDAYSTATE-Struktur gibt die Anzahl der MONTHDAYSTATE-Werte an, die im Array benötigt werden, das eine beliebige maximale Größe erhält. Der Code wird dann mithilfe des von der Anwendung definierten BOLDDAY-Makros schleifen, um die entsprechenden Bits in jedem gültigen Element des Arrays festzulegen.

    #define BOLDDAY(ds, iDay)  \
        if (iDay > 0 && iDay < 32)(ds) |= (0x00000001 << (iDay - 1))

    case WM_NOTIFY:
            if (((LPNMHDR)lParam)->code == MCN_GETDAYSTATE)
            {
                MONTHDAYSTATE rgMonths[12] = { 0 };
                int cMonths = ((NMDAYSTATE*)lParam)->cDayState;
                for (int i = 0; i < cMonths; i++)
                {
                    BOLDDAY(rgMonths[i], 1);
                    BOLDDAY(rgMonths[i], 15);
                }
                ((NMDAYSTATE*)lParam)->prgDayState = rgMonths;
                return TRUE;
            }
            break;

Referenz zum Monatskalendersteuerelement

Informationen zu Monatskalendersteuerelementen

Verwenden von Monatskalendersteuerelementen