Compartilhar via


Acessando o controle calendário Embedded mês

O objeto de controle de calendário de mês incorporado pode ser acessado a partir o CDateTimeCtrl objeto com uma telefonar para o GetMonthCalCtrlfunção de membro .

Observação:

O controle de calendário do mês incorporado é usado somente quando a data e time selecionador de controle não tem o DTS_UPDOWN estilo conjunto.

Isso é útil se você quiser modificar determinados atributos antes do controle incorporado é exibido.Para fazer isso, manipular o DTN_DROPDOWN notificação, recuperar o controle de calendário mensal (usando CDateTimeCtrl::GetMonthCalCtrl) e fazer suas modificações.Infelizmente, o controle de calendário mensal não é persistente.

Em outras palavras, quando o usuário solicita a exibição de controle de calendário mensal, um controle de calendário mensal novo é criado (antes do DTN_DROPDOWN notificação).O controle é destruído (após o DTN_CLOSEUPnotificação de ) quando descartado pelo usuário.Isso significa que qualquer atributo de que modificação, antes do controle incorporado é exibido, é perdido quando o controle incorporado é descartado.

O exemplo a seguir demonstra esse procedimento, usando um manipulador para o DTN_DROPDOWN notificação.O código altera a cor do plano de fundo do controle de calendário mês, com uma telefonar para SetMonthCalColor, como 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;
}

Conforme mencionado anteriormente, todas sistema autônomo modificações às propriedades de controle de calendário mensal são perdidas, com duas exceções quando o controle incorporado é descartado.A primeira exceção, as cores de controle de calendário mensal, já foi discutida.A segunda exceção é a fonte usada pelo controle de calendário mensal.Você pode modificar a fonte padrão, fazendo uma telefonar para CDateTimeCtrl::SetMonthCalFont, passando a alça de uma fonte existente.O exemplo a seguir (em que m_dtPicker é o objeto de controle de data e time) 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);

Quando a fonte tiver sido alterada, com uma telefonar para CDateTimeCtrl::SetMonthCalFont, a nova fonte é armazenada e usadas na próxima time um calendário mensal será exibido.

Consulte também

Conceitos

Controles (MFC)

Referência

Usando CDateTimeCtrl