Condividi tramite


Accedere al controllo calendario mensile incorporato

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

[!NOTA]

Il controllo calendario mensile incorporato viene utilizzato solo quando il controllo di selezione data e ora non presenta lo stile di DTS_UPDOWN impostato.

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

Ovvero quando l'utente richiede la visualizzazione del controllo calendario mensile, un nuovo controllo calendario mensile viene creata (prima della notifica di DTN_DROPDOWN ).Il controllo viene eliminata (dopo la notifica di DTN_CLOSEUP ) una volta chiuso dall'utente.Ciò significa che qualsiasi attributi che si modifica, prima che il controllo incorporato visualizzare, viene perso quando il controllo incorporato viene chiuso.

Nell'esempio seguente viene illustrata questa procedura, utilizzando un gestore per la notifica di DTN_DROPDOWN .Le modifiche al codice il colore di sfondo del controllo calendario mensile, con una chiamata a SetMonthCalColor, grigio.Il codice è il seguente:

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, i colori del controllo calendario mensile, è già stata utilizzata.La seconda eccezione è il carattere utilizzato dal controllo calendario mensile.È possibile modificare il tipo di carattere predefinito tramite una chiamata a CDateTimeCtrl::SetMonthCalFont, passando l'handle di un tipo di carattere esistente.Nell'esempio (dove m_dtPicker è l'oggetto controllo di data e ora) viene illustrato un metodo possibile:


//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 modificata, con una chiamata a CDateTimeCtrl::SetMonthCalFont, la nuova il tipo di carattere è archiviata e utilizzata la volta successiva che un calendario mensile deve essere visualizzato.

Vedere anche

Riferimenti

Utilizzando CDateTimeCtrl

Concetti

Controlli (MFC)