Partager via


Accès du contrôle month calendar incorporé

L'objet incorporé de contrôle de calendrier mensuel est accessible de l'objet CDateTimeCtrl par un appel à la méthode GetMonthCalCtrl.

Notes

Le contrôle de calendrier mensuel incorporé est utilisé uniquement lorsque le contrôle de choix de date et heure n'a pas l'ensemble de style DTS_UPDOWN .

Cela est utile si vous souhaitez modifier certains attributs avant que le contrôle incorporé soit affiché. Pour ce faire, traitez la notification DTN_DROPDOWN, récupérez le contrôle calendrier mensuel (à l'aide de CDateTimeCtrl::GetMonthCalCtrl), et réalisez les modifications. Malheureusement, le contrôle calendrier mensuel n'est pas persistant.

En d'autres termes, lorsqu'un utilisateur demande l'affichage du contrôle calendrier mensuel, un nouveau contrôle calendrier mensuel est créé (avant la notification DTN_DROPDOWN ). Le contrôle est détruit (après la notification DTN_CLOSEUP ) lorsqu'il est ignoré par l'utilisateur. Cela signifie que tous les attributs que vous modifiez, avant que le contrôle incorporé soit affiché, est perdu lorsque le contrôle incorporé est ignoré.

L'exemple suivant illustre cette procédure, en utilisant d'un gestionnaire pour la notification DTN_DROPDOWN. Le code change la couleur d'arrière-plan du contrôle calendrie mensuel, par un appel à SetMonthCalColor, en gris. Le code est comme suit :

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

Comme indiqué précédemment, toutes les modifications apportées aux propriétés du contrôle de calendrier mensuel sont perdues, à deux exceptions près, lorsque le contrôle incorporé est ignoré. La première exception, les couleurs du contrôle calendrier mensuel ont déjà été décrites. La deuxième exception est la police utilisée par le contrôle calendrier mensuel. Vous pouvez modifier la police par défaut lors d'un appel à CDateTimeCtrl::SetMonthCalFont, et passer le handle d'une police existante. L'exemple suivant (où m_dtPicker est l'objet de contrôle de date et d'heure) illustre une méthode possible :

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

Une fois que la police a été modifiée, par un appel à CDateTimeCtrl::SetMonthCalFont, la nouvelle police est enregistrée et utilisée la prochaine fois qu'un calendrier mensuel doit être affiché.

Voir aussi

Référence

À l'aide de CDateTimeCtrl

Concepts

contrôles (MFC)