Condividi tramite


Come impostare gli stati del giorno

In questo argomento viene illustrato come impostare le informazioni sullo stato del giorno. Il controllo calendario mensile utilizza informazioni sullo stato del giorno per determinare il modo in cui disegna giorni specifici all'interno del controllo.

Controlli del calendario del mese che utilizzano gli stati del giorno di supporto dello stile MCS_DAYSTATE . Le informazioni sullo stato del giorno sono espresse come tipo di dati a 32 bit, MONTHDAYSTATE. Ogni bit in un campo di bit MONTHDAYSTATE (da 0 a 30) specifica lo stato di un giorno in un mese. Se è attivo un bit, il giorno corrispondente viene visualizzato in grassetto.

Informazioni importanti

Tecnologie

Prerequisiti

  • C/C++
  • Programmazione dell'interfaccia utente di Windows

Istruzioni

Un'applicazione può impostare in modo esplicito le informazioni sullo stato del giorno inviando il messaggio MCM_edizione Standard TDAYSTATE o utilizzando la macro corrispondente MonthCal_SetDayState. Tuttavia, le informazioni sullo stato del giorno vengono in genere impostate in risposta al codice di notifica MCN_GETDAYSTATE , che viene inviato ogni volta che il controllo deve essere aggiornato perché, ad esempio, un mese diverso è stato scorrevole nella visualizzazione.

Il codice di esempio seguente illustra come elaborare il codice di notifica MCN_GETDAYSTATE in un gestore di messaggi WM_NOTIFY . Elabora MCN_GETDAYSTATE specificando che il primo e il quindicesimo giorno di ogni mese visibile devono essere evidenziati. Il membro cDayState della struttura NMDAYSTATE specifica il numero di valori MONTHDAYSTATE necessari nella matrice, a cui viene assegnata una dimensione massima arbitraria. Il codice esegue quindi un ciclo per impostare i bit appropriati in ogni elemento valido della matrice, usando la macro BOLDDAY definita dall'applicazione.

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

Riferimento al controllo Calendario mensile

Informazioni sui controlli del calendario mensile

Uso dei controlli Calendario mese