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.
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.
Usando a janela Propriedades, adicione um manipulador de notificação a MCN_GETDAYSTATE o mensagemm_monthcal objeto (consulte Mapeamento de mensagens para funções).
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).