Freigeben über


Zugreifen auf das eingebettete Monatskalender-Steuerelement

Auf das eingebettete Monatskalender-Steuerelement-Objekt kann vom CDateTimeCtrl-Objekt durch einen Aufruf der Memberfunktion GetMonthCalCtrl zugegriffen werden.

Hinweis

Die eingebettete Monatskalender-Steuerelement wird nur verwendet, wenn das Steuerelement für die Datums- und Zeitauswahl nicht den festgelegten DTS_UPDOWN Format hat.

Dies ist hilfreich, wenn Sie bestimmten Attributen ändern möchten, bevor das eingebettete Steuerelement angezeigt wird. Um dies zu erreichen, bearbeiten Sie die DTN_DROPDOWN Benachrichtigung, abzurufen das Monatskalender-Steuerelement (mit CDateTimeCtrl::GetMonthCalCtrl) und nehmen Sie die Änderungen. Leider ist das Monatskalender-Steuerelement nicht erhalten.

Das heißt, die Benutzeranforderungen, wenn die Anzeige des Monatskalender-Steuerelements, ein neues Monatskalender-Steuerelement erstellt wird (vor der DTN_DROPDOWN Benachrichtigung). Das Steuerelement zerstört wird (nach der DTN_CLOSEUP Benachrichtigung) wenn es vom Benutzer schließen wird. Dies bedeutet, dass alle Attribute, die, Sie, bevor das eingebettete Steuerelement angezeigt wird, gehen verloren ändern, wenn das eingebettete Steuerelement geschlossen wird.

Im folgenden Beispiel wird dieses Verfahren, mithilfe eines Handlers für die DTN_DROPDOWN Benachrichtigung. Die Codeänderungen die Hintergrundfarbe des Monatskalender-Steuerelements, mit einem Aufruf von SetMonthCalColor, z Grau. Der Code ist, wie folgt:

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

Wie bereits erwähnt, sind alle Änderungen an den Eigenschaften des Monatskalender-Steuerelements, mit zwei Ausnahmen verloren, wenn das eingebettete Steuerelement geschlossen wird. Die erste Ausnahme, die Farben des Monatskalender-Steuerelements, ist bereits erläutert wird. Die zweite Ausnahme ist die Schriftart, die vom Monatskalender-Steuerelement verwendet wird. Sie können die Standardschriftart ändern, indem Sie einen Aufruf von CDateTimeCtrl::SetMonthCalFont ausführen und das Handle einer vorhandenen Schriftart übergeben. Das folgenden Beispiel (wobei m_dtPicker das Datum und Zeitsteuerobjekt ist), wird eine andere Methode:

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

Sobald die Schriftart, mit einem Aufruf von CDateTimeCtrl::SetMonthCalFont, die neue Schriftart wird gespeichert und verwendet geändert wurde beim nächsten Mal, wenn ein Monatskalender angezeigt werden soll.

Siehe auch

Referenz

Verwenden von CDateTimeCtrl

Konzepte

Steuerelemente (MFC)