Ausgewähltes Datum von CMonthCal-Kalender auslesen!
-
Ich konnte anfänglich nichts mit den zurückgegebenen Werten des Kalenders anfangen und konnte hier im Forum unter den Suchwörtern Kalender oder CMonthCal nichts dazu finden. Deswegen hier mein Lösungsweg.
1. Ereignishändler (MCN_SelChange) auf den Kalender setzen
2. Die Funktion wie folgt füllen:void CForm_TerminDlg::OnMcnSelchangeMonthcalendar1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMSELCHANGE pSelChange = reinterpret_cast<LPNMSELCHANGE>(pNMHDR); // Der Zeiger pSelChange enthält den Start- und Endwert des Kalenders // Der Startwert wird in date() ins aktuelle Datum gewandelt COleDateTime date(pSelChange->stSelStart); // Wenn das Datum gültig ist, dann ... ASSERT(date.GetStatus() == COleDateTime::valid); // ... schreibe nur das Datum (DATEVALUEONLY) in den String CString sDate = date.Format(VAR_DATEVALUEONLY); // Der Wert wird anschließend in eine EDIT-ControlBox geschrieben this->SetDlgItemTextA(IDC_EDIT_Datum,sDate); *pResult = 0; }Gruß,
Elayas
-
Elayas schrieb:
Ich konnte anfänglich nichts mit den zurückgegebenen Werten des Kalenders anfangen und konnte hier im Forum unter den Suchwörtern Kalender oder CMonthCal nichts dazu finden. Deswegen hier mein Lösungsweg.
Meinst du mit "CMonthCal" den CMonthCalCtrl der MFC? Der hat freundlicherweise die Methode GetCurSel(), die dir das aktuell ausgewählte Datum zurückliefert (wahlweise als COleDateTime, CTime oder SYSTEMTIME).
-
Hallo CStoll,
danke für die rasche Antwort, aber die Funktion, die ich eingestellt habe, funktioniert schon. Ich habe sie nur gepostet, damit andere, die auch damit Probleme hatten, fündig werden, wenn Sie danach suchen.
Gruß,
Elayas
-
Ich glaube dir gerne, daß die Funktion ihren Zweck erfüllt. Nur sehe ich nicht den Sinn darin, eine existierende MFC-Methode nochmal nachzubauen (außer natürlich für den möglichen Lerneffekt - oder zur Anpassung an "reine WinAPI-Programmierung").