Monatskalender Steuerelement
-
Hallo,hab da so ein Probleme mit einem Steuerelement.
Hab ein Monatskalender Steuerelement vom Typ CMonthCalCtrl mit dem Namen
m_kalender erstellt. Ich will das jeweils angeklickte Datum in verschiedende
int Variablen kopieren.hab es erstmal so versucht, geht aber nicht wirklich:
SYSTEMTIME sysTime; m_kalender.GetCurSel(&sysTime); sysTime.wHour = sysTime.wMinute = sysTime.wSecond = sysTime.wMilliseconds = 0; CTime time(sysTime); int day; day = time.GetDay();
kriege aber ne Fehlermeldung bei der 2. Zeile mit der GerCurSel. Der
Rechner schmiert dann immer abVielen Dank für eure Hilfe:
Gruß Patrick
-
der Rechner schmiert ab?
Oder hängt sich das Programm einfach nur auf?
Naja das ist aber nicht das wesentliche, was willst du mit der 2. Zeile denn erreichen? Interprätier doch bitte mal selbst was du da machst.
-
Laut MSDN sieht das ganz gut aus. Ich hab das Monthcontrol allerdings noch nie verwendet.
Stürzt es auch ab, wenn du als Parameter ein CTime übergibst?
Und dann habe ich das hier in der MSDN gefunden, passt das vielleicht?
Note This member function fails if the style MCS_MULTISELECT is set.
Hast du vielleicht einen Fehlermeldungstext?
-
Estartu sagt das scheint OK zu sein, dann zieh ich meinen Post zurück! Ich dachte dass es keinen Sinn macht GetCurSel von der Systemtime zu machen! wie Du sagst CTime; Das hätte ich auch vermutet, wenn du aber sagst das sollte mit Systemtime auch gehen, nimm ich alles zurück!
Hab grad in die MSDN geschaut, WOW da steht das drin Sorry
-
Hallo alle,
ich verstehe nicht das Problem ganz gut (ich bin nicht Deutsche), aber einmal hatte ich wahrscheinlich das gleich Problem mit CDateTimeCtrl. Ich mußte folgende benutzen :
SYSTEMTIME sysTime;
::SendMessage (m_datefrom.GetSafeHwnd(), MCM_GETCURSEL, 0, (LPARAM)&sysTime);CString s;
s.Format(_T("%04d-%02d-%02d"), sysTime.wYear, sysTime.wMonth, sysTime.wDay);Sorry ob es ein bißchen außer ist ... :-))
Fredy
-
OK, das mit der Definition "Der Rechner stürzt ab" war echt dumm von mir
ausgedrückt. sorry.es erscheint die Fehlermeldung:
Debug Error:
File: i386/chkesp.c
Line 42.er meckert an der 2. Zeile rum.
SYSTEMTIME sysTime;
m_kalender.GetCurSel(&sysTime);In der MSDN steht drinne das wenn ich GetCurSel() benutze muss ich
die Adresse eines Objektes von SYSTEMTIME übergeben.
Und diese kriegt dann die Werte. (sollte)Die Mehrfachauswahl habe ich in den Eigenschafte ausgeschaltet. Eigendlich
sollte es funktionieren!Gruß
-Patrick
-
Ersetz mal
SYSTEMTIME sysTime; m_kalender.GetCurSel(&sysTime);
durch
CTime sysTime; m_kalender.GetCurSel(sysTime);
einfach nur um zu gucken, ob es geht.
-
hab ich auch schon probiert, aber funktioniert nicht. Aber diemal kommt
eine andere Fehlermeldung, nämlich von wegen "Problembericht senden".
-
Zu welchem Zeitpunkt versuchst du das GetCurSel? Vor OnInitDialog oder nach OnOK oder so? Kurz: Existiert das Control noch/schon?
-
Danke für die schnelle Antwort!
Ich benutze es in einem Dialogfeld was ich in mein Hauptprojekt eingebunden
habe. Habe auch eine Klasse für das neue Dialogfeld erstellt.Habe schon in anderen Foren über das Problem gelesen und die lösen es teilweise
so:// must not set multi select style
void CControl19Dlg::OnGetCurrentSel()
{
CTime time;
m_cal.GetCurSel(time);CString str;
str = time.Format("the current sel is: %Y-%m-%d %H:%M:%S");
AfxMessageBox(str);
}aber bei der Zeile wo er auf GetCurSel zugreift gibs ne Fehlermeldung!!
-
Ist CControl19Dlg::OnGetCurrentSel() die Funktion in deinem Dialog? Ist das ein Buttonhandler?
Ich lasse grade mal meine Platte nach chkesp.c durchsuchen. Vielleicht kommen wir weiter, wenn wir wissen, welche Zeile in der MFC bemeckert wird.
Edit: Ich finde die nicht, hast du die - oder wie kommen wir da mal dran?
-
Jo, das ist meine Funktion in der Klasse.
Und es ist ein Buttonhandler. Ich lasse diese Funktion aufrufen sobald
man im Monatskalender das Datum ausgewählt hat und auf den Button drückt.Ja, zu der Datei.
komischer Weise finde ich dich auch nicht auf meiner Festplatte.
-
Setz mal Google auf "i386\chkesp.c Line: 42" an und staune.
Eine Fehlermeldung und so viele verschiedene Probleme dazu.Nur leider ist deines nicht dabei - ich weiß echt nicht mehr weiter.
-
Ich suche auch schon die ganze weile im Netz und bin
eine bischen fündig geworden. Das scheint man wohl nur mit einem
Trick umgehen zu können. Habe dazu folgende Seite von Microsoft
gefunden wo sie eine "Lösung" für das Problem haben:http://support.microsoft.com/default.aspx?scid=kb;EN-US;235355
Es wird aber auch nur so gemacht wie ich es schon ausprobiert habe.
Microsoft:
SYSTEMTIME sysTime;
m_MonthCal.GetCurSel(&sysTime);
sysTime.wHour = sysTime.wMinute = sysTime.wSecond = sysTime.wMilliseconds = 0;
CTime l_time(sysTime);
Wenn man es so macht wie es Microsoft vorschlägt bekomme ich folgende
Fehlermeldung:ERROR:
Timecore.cpp
Linie: 32das sieht ja eigendlich schon mal besser aus. aber naja
Erstmal vielen Dank für deine Bemühungen!
-
Und welche Fehlermeldung ?! Kanst du es beschreiben ? (Number oder text)
Die richtige Form ist
SYSTEMTIME time;
m_monthcal.GetCurSel (&time);aber sie haben ein Problem mit GetCurSel. Wirklich ist es nötig ::SendMessage (...) benützen. Hast du es schon versuchen ?
(sorry für meine deutche Sprache :-)) )
Fredy