Accesso al controllo calendario mensile incorporato

È possibile accedere all'oggetto controllo del calendario mensile incorporato dall'oggetto CDateTimeCtrl con una chiamata alla funzione membro GetMonthCalCtrl .

Nota

Il controllo calendario del mese incorporato viene utilizzato solo quando il controllo selezione data e ora non dispone del set di stili DTS_UPDOWN .

Ciò è utile se si desidera modificare determinati attributi prima che il controllo incorporato venga visualizzato. A tale scopo, gestire la notifica di DTN_DROPDOWN , recuperare il controllo calendario mensile (usando CDateTimeCtrl::GetMonthCalCtrl) e apportare le modifiche. Sfortunatamente, il controllo calendario mensile non è persistente.

In altre parole, quando l'utente richiede la visualizzazione del controllo calendario mensile, viene creato un nuovo controllo calendario mensile (prima della notifica di DTN_DROPDOWN ). Il controllo viene eliminato definitivamente (dopo la notifica DTN_CLOedizione Standard UP) quando viene ignorato dall'utente. Ciò significa che qualsiasi attributo che si modifica prima che il controllo incorporato venga visualizzato, viene perso quando il controllo incorporato viene chiuso.

Nell'esempio seguente viene illustrata questa procedura, usando un gestore per la notifica di DTN_DROPDOWN . Il codice modifica il colore di sfondo del controllo calendario del mese, con una chiamata a SetMonthCalColor, in grigio. Il codice è indicato di seguito:

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;
}

Come indicato in precedenza, tutte le modifiche alle proprietà del controllo calendario mensile vengono perse, con due eccezioni, quando il controllo incorporato viene chiuso. La prima eccezione, che riguarda i colori del controllo calendario mensile, è già stata discussa. La seconda eccezione è il tipo di carattere utilizzato dal controllo calendario mensile. È possibile modificare il tipo di carattere predefinito effettuando una chiamata a CDateTimeCtrl::SetMonthCalFont, passando l'handle di un tipo di carattere esistente. Nell'esempio seguente (dove m_dtPicker è l'oggetto controllo data e ora) viene illustrato un possibile metodo:


//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);

Una volta modificato il tipo di carattere, con una chiamata a CDateTimeCtrl::SetMonthCalFont, il nuovo tipo di carattere viene archiviato e utilizzato la volta successiva in cui deve essere visualizzato un calendario mensile.

Vedi anche

Uso di CDateTimeCtrl
Controlli