Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O objeto de controlo de calendário mensal incorporado pode ser acedido a partir do objeto CDateTimeCtrl com uma chamada para a função de membro GetMonthCalCtrl.
Observação
O controle de calendário de mês incorporado é usado somente quando o controle de seletor de data e hora não tem o DTS_UPDOWN estilo definido.
Isso é útil se você quiser modificar determinados atributos antes que o controle incorporado seja exibido. Para fazer isso, manipule a notificação DTN_DROPDOWN , recupere o controle de calendário do mês (usando CDateTimeCtrl::GetMonthCalCtrl) e faça suas modificações. Infelizmente, o controle de calendário do mês não é persistente.
Em outras palavras, quando o usuário solicita a exibição do controle de calendário de mês, um novo controle de calendário de mês é criado (antes da notificação de DTN_DROPDOWN ). O controlo é destruído (após a notificação DTN_CLOSEUP) quando descartado pelo usuário. Isso significa que todos os atributos que você modificar, antes que o controle incorporado seja exibido, serão perdidos quando o controle incorporado for descartado.
O exemplo a seguir demonstra esse procedimento, usando um manipulador para a notificação DTN_DROPDOWN . O código altera a cor do plano de fundo do controle de calendário do mês, com uma chamada para SetMonthCalColor, para cinza. O código é o seguinte:
void CMyDialog::OnDtnDropdownDatetimepicker1(NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
//set the background color of the month to gray
COLORREF clr = RGB(100, 100, 100);
m_DateTimeCtrl.SetMonthCalColor(MCSC_MONTHBK, clr);
*pResult = 0;
}
Como dito anteriormente, todas as modificações nas propriedades do controle de calendário do mês são perdidas, com duas exceções, quando o controle incorporado é descartado. A primeira exceção, as cores do controle de calendário do mês, já foi discutida. A segunda exceção é a fonte usada pelo controlo de calendário mensal. Você pode modificar a fonte padrão fazendo uma chamada para CDateTimeCtrl::SetMonthCalFont, passando o identificador de uma fonte existente. O exemplo a seguir (onde m_dtPicker é o objeto de controle de data e hora) demonstra um método possível:
//create and initialize the font to be used
LOGFONT logFont = {0};
logFont.lfHeight = -12;
logFont.lfWeight = FW_NORMAL;
logFont.lfCharSet = DEFAULT_CHARSET;
_tcscpy_s(logFont.lfFaceName, _countof(logFont.lfFaceName),
_T("Verdana"));
m_MonthCalFont.CreateFontIndirect(&logFont);
m_DateTimeCtrl.SetMonthCalFont(m_MonthCalFont);
Uma vez que a fonte tenha sido alterada, com uma chamada para CDateTimeCtrl::SetMonthCalFont, a nova fonte é armazenada e usada na próxima vez que um calendário mensal for exibido.