Compartir a través de


Establecer el estado de Siguiente de un Control de calendario mensual

Uno de los atributos de un control de calendario mensual es la capacidad de almacenar información, denominada el estado del día del control, para cada día del mes.Esta información se utiliza para hacer hincapié en determinadas fechas del mes mostrado actualmente.

[!NOTA]

El objeto de CMonthCalCtrl debe tener el estilo de MCS_DAYSTATE para mostrar información de estado del día.

La información de estado del día se expresa como un tipo de datos de 32 bits, MONTHDAYSTATE.Cada bit en un campo de bits de MONTHDAYSTATE (1 a 31) representa el estado de un día de un mes.Si un bit está activado, el día correspondiente aparecerá en negrita; si no se mostrará sin enfoque.

Existen dos métodos para establecer el estado del día del control de calendario mensual: explícitamente mediante una llamada a CMonthCalCtrl::SetDayState o controlando el mensaje de notificación de MCN_GETDAYSTATE .

Administrar el mensaje de notificación de MCN_GETDAYSTATE

El mensaje de MCN_GETDAYSTATE es enviado por el control para determinar cómo los días de meses visible deben mostrarse.

[!NOTA]

Dado que el control almacena en memoria caché el anterior y meses de siguiente, por lo que se refiere al mes visible, recibirá esta notificación cada vez que se elige un nuevo mes.

Para controlar correctamente este mensaje, debe determinar por se solicita información de estado del día del número de meses, inicializa una matriz de estructuras de MONTHDAYSTATE con los valores adecuados, e inicializa el miembro de estructura relacionado con nueva información.El procedimiento siguiente, detallando los pasos necesarios, se supone que tiene un objeto de CMonthCalCtrl denominado m_monthcal y una matriz de los objetos de MONTHDAYSTATE , mdState.

Para controlar el mensaje de notificación de MCN_GETDAYSTATE

  1. Mediante la ventana Propiedades, agregue un controlador de notificación para el mensaje de MCN_GETDAYSTATE al objeto de m_monthcal (vea Asignar mensajes a funciones).

  2. En el cuerpo del controlador, agregue el código siguiente:

    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
    }
    

    El ejemplo convierte el puntero de pNMHDR el tipo correspondiente, determina cuántos meses de información se solicitan (pDayState->cDayState).Para cada mes, el campo de bits actual (pDayState->prgDayState[i]) se inicializa en cero y después las fechas necesarias se establece en (en este caso, el decimoquinto de cada mes).

Vea también

Referencia

Mediante CMonthCalCtrl

Conceptos

Controles (MFC)