Jak nastavit stavy dní

Toto téma ukazuje, jak nastavit informace o stavu dne. Ovládací prvek kalendáře měsíce používá informace o stavu dne k určení způsobu, jakým v ovládacím prvku vykresluje konkrétní dny.

Ovládací prvky kalendáře měsíce, které používají styl MCS_DAYSTATE, podporují stavy dnů. Informace o stavu dne jsou vyjádřeny jako 32bitový datový typ, MONTHDAYSTATE. Každý bit v MONTHDAYSTATE bitfield (0 až 30) určuje stav dne v měsíci. Pokud je bit zapnutý, zobrazí se odpovídající den tučně.

Co potřebujete vědět

Technologie

Požadavky

  • C/C++
  • Programování uživatelského rozhraní systému Windows

Instrukce

Aplikace může explicitně nastavit informace o stavu dne odesláním zprávy MCM_SETDAYSTATE nebo pomocí odpovídajícího makra MonthCal_SetDayState. Informace o stavu dne jsou však obvykle nastaveny v reakci na kód oznámení MCN_GETDAYSTATE, který se odešle při každé aktualizaci ovládacího prvku, protože například jiný měsíc se posune do zobrazení.

Následující příklad kódu ukazuje, jak zpracovat kód oznámení MCN_GETDAYSTATE v obslužné rutině WM_NOTIFY zprávy. Zpracovává MCN_GETDAYSTATE zadáním, že by se měl zvýraznit první a patnáctý den každého viditelného měsíce. cDayState člen struktury NMDAYSTATE určuje počet hodnot MONTHDAYSTATE, které jsou potřeba v matici, což má libovolnou maximální velikost. Kód pak smyčkuje, aby nastavil odpovídající bity v každém platném prvku pole, pomocí makra BOLDDAY definovaného aplikací .

    #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;

Referenční ovládací prvek kalendáře měsíce

o ovládacích prvcích Kalendáře měsíce

Použití ovládacích prvků měsíčního kalendáře