Ver Mensaje Individual
  #4  
Antiguo 24-04-2026
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
¿Sabes a qué se refiere la estructura MONTHDAYSTATE?

Aquí explican qué es cada cosa...
https://learn.microsoft.com/es-es/wi...set-day-states

Cita:
Instrucciones

Una aplicación puede establecer explícitamente información de estado de día enviando el mensaje de MCM_SETDAYSTATE o mediante la macro correspondiente, MonthCal_SetDayState. Sin embargo, la información de estado del día normalmente se establece en respuesta al código de notificación de MCN_GETDAYSTATE , que se envía cada vez que se debe actualizar el control porque, por ejemplo, un mes diferente se ha desplazado hacia la vista.

En el código de ejemplo siguiente se muestra cómo procesar el código de notificación MCN_GETDAYSTATE en un controlador de mensajes WM_NOTIFY . Procesa MCN_GETDAYSTATE especificando que se debe resaltar el primer y el decimoquinto día de cada mes visible. El miembro cDayState de la estructura NMDAYSTATE especifica el número de valores MONTHDAYSTATE necesarios en la matriz, que se asigna un tamaño máximo arbitrario. A continuación, el código realiza un bucle para establecer los bits adecuados en cada elemento válido de la matriz, mediante la macro BOLDDAY definida por la aplicación.
Código:
#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;
Responder Con Cita