Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Uno degli attributi di un controllo calendario mensile è la possibilità di archiviare le informazioni, definite lo stato del giorno del controllo, per ciascun giorno del mese.Queste informazioni sono utilizzate per evidenziare determinate date per il mese correntemente visualizzato.
[!NOTA]
L'oggetto di CMonthCalCtrl necessario disporre dello stile di MCS_DAYSTATE per visualizzare le informazioni sullo stato del giorno.
Le informazioni sullo stato del giorno sono espresse come tipo di dati a 32 bit, MONTHDAYSTATE.Ogni frammento in un campo di bit di MONTHDAYSTATE (da 1 a 31) rappresenta lo stato di un giorno in un mese.Se un bit è attivata, il giorno corrispondente viene visualizzato in grassetto, in caso contrario visualizzati senza lo schermo.
Esistono due metodi per impostare lo stato del giorno del controllo calendario mensile: in modo esplicito con una chiamata a CMonthCalCtrl::SetDayState o del messaggio di notifica di MCN_GETDAYSTATE .
Gestire il messaggio di notifica di MCN_GETDAYSTATE
Il messaggio di MCN_GETDAYSTATE viene inviato dal controllo per determinare quali i giorni dai mesi visibili da visualizzare.
[!NOTA]
Poiché il controllo memorizza nella cache il precedente e mesi seguenti, per quanto riguarda il mese visibile, verrà generata questa notifica ogni volta che un nuovo mese viene scelto.
Per gestire correttamente questo messaggio, è necessario determinare le informazioni sullo stato del giorno del mese vengono richiedende per, inizializzare una matrice di strutture di MONTHDAYSTATE con i valori corretti e inizializzare il membro della struttura correlato con nuove informazioni.La procedura riportata di seguito, fornendo in dettaglio i passaggi necessari, si presuppone che l'utente abbia un oggetto di CMonthCalCtrl chiamato m_monthcal e una matrice di oggetti di MONTHDAYSTATE , mdState.
Per gestire il messaggio di notifica di MCN_GETDAYSTATE
Utilizzando la Finestra Proprietà, aggiungere un gestore di notifica per il messaggio di MCN_GETDAYSTATE all'oggetto di m_monthcal (vedere Messaggi del mapping delle funzioni).
Nel corpo del gestore eventi, aggiungere il codice seguente:
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 }L'esempio converte il puntatore di pNMHDR al tipo corretto, quindi determina il numero di mesi di informazioni vengono richiedendi (pDayState->cDayState).Per ogni mese, il campo di bit corrente (pDayState->prgDayState[i]) viene inizializzata su zero e quindi le date richieste è impostato su (in questo caso, il quindicesimo di ogni mese.