Condividi tramite


Accesso al controllo calendario mensile incorporato

L'oggetto incorporato di controllo del calendario mensile è accessibile dall'oggetto CDateTimeCtrl con una chiamata alla funzione membro GetMonthCalCtrl.

Nota

Il controllo del calendario mensile incorporato viene utilizzato solo quando il controllo della selezione data e ora non ha impostato il set di stili DTS_UPDOWN .

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

In altre parole, quando l'utente richiede la visualizzazione del controllo del calendario mensile, viene creato un nuovo controllo del calendario mensile (prima della notifica di DTN_DROPDOWN). Il controllo viene distrutto (dopo la notifica di DTN_CLOSEUP) una volta chiuso dall'utente. Ciò significa che qualsiasi attributo che si va a modificare, prima che venga visualizzato il controllo incorporato, viene perso quando il controllo incorporato viene chiuso.

Nell'esempio seguente viene illustrata questa procedura, utilizzando un gestore per la notifica di DTN_DROPDOWN. Il codice modifica il colore di sfondo del controllo del calendario mensile in grigio con una chiamata a SetMonthCalColor. 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 del calendario mensile vengono perse, con due eccezioni, quando il controllo incorporato viene chiuso. La prima eccezione, i colori del controllo del calendario mensile, è già stata discussa. La seconda eccezione è il carattere utilizzato dal controllo del calendario mensile. È possibile modificare il tipo di carattere predefinito eseguendo una chiamata a CDateTimeCtrl::SetMonthCalFont, passando l'handle di un tipo di carattere esistente. Nell'esempio seguente (dove m_dtPicker è l'oggetto di controllo di 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 che il tipo di carattere è stata modificato, con una chiamata a CDateTimeCtrl::SetMonthCalFont, viene memorizzato il nuovo tipo di carattere ed esso viene utilizzato la volta successiva in cui deve essere visualizzato un calendario mensile.

Vedere anche

Riferimenti

Utilizzo di CDateTimeCtrl

Concetti

Controlli (MFC)