Compartilhar via


configuração o estado do dia de um controle de calendário do mês

Um dos atributos de um controle de calendário do mês é a capacidade de armazenar informações, conhecidas sistema autônomo o estado de dia de controle, para cada dia do mês.Essas informações são usadas para enfatizar certas datas para o mês exibido no momento.

Observação:

O CMonthCalCtrl objeto deve ter o MCS_DAYSTATE estilo para exibir informações de estado do dia.

Informações de estado do dia é expresso sistema autônomo um tipo de dados de 32 bit, MONTHDAYSTATE.Cada bit em um MONTHDAYSTATEcampo de bits de (de 1 a 31) representa o estado de um dia do mês.Se um bit estiver ativada, o dia correspondente será exibido em negrito; caso contrário poderá ser exibida com nenhuma ênfase.

Há dois métodos para definir o estado de dia de controle de calendário mensal: explicitamente por uma telefonar para CMonthCalCtrl::SetDayState ou Manipulando o MCN_GETDAYSTATE mensagem de notificação.

Manipulação de mensagem de notificação MCN_GETDAYSTATE

The MCN_GETDAYSTATE mensagem é enviada pelo controle para determinar como os dias nos meses visíveis devem ser exibidos.

Observação:

Porque o controle armazena em cache os meses anteriores e seguintes, em relação ao mês visível, você receberá essa notificação sempre que um novo mês é escolhido.

Manipular adequadamente essa mensagem, você deve determinar as informações de estado quantos meses dia está sendo solicitada para, inicializar uma matriz de MONTHDAYSTATE estruturas com valores apropriados e inicializar o membro da estrutura relacionada com as novas informações.O procedimento a seguir, detalhando as etapas necessárias, presume que você tenha um CMonthCalCtrl objeto chamado m_monthcal e uma matriz de MONTHDAYSTATE objects, mdState.

Para manipular a mensagem de notificação MCN_GETDAYSTATE

  1. Usando a janela Propriedades, adicione um manipulador de notificação a MCN_GETDAYSTATE o mensagemm_monthcal objeto (consulte Mapeamento de mensagens para funções).

  2. No corpo do manipulador, adicione o seguinte código:

    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
    }
    

    O exemplo converte o pNMHDR ponteiro para o tipo apropriado, em seguida, determina quantos meses de informações estão sendo solicitado)pDayState->cDayState). Para cada mês, o bitfield corrente (pDayState->prgDayState[i]) é inicializado para zero e, em seguida, o necessários datas configuradas (neste caso, o 15 º lugar de cada mês).

Consulte também

Conceitos

Controles (MFC)

Referência

Usando CMonthCalCtrl