und wieder Timer, alles versucht und es geht nicht
-
Hallo zusammen. Ich sitze schon seit zwei Tagen an dem dummen timer. ich möchte die aktuelle uhrzeit in mein dialog einbauen. ich habe schon jedes thema in sache Timer hier im forum gelesen und es geht nicht weiter. Ich habe mir sogar ein buch geschnappt und alles schritt für schritt gemacht. Es geht immer noch nicht. ich habe VS.NET 2003. Folgendes habe ich schon versucht:
BOOL CzeiterfassungDlg::OnInitDialog() { SetTimer(ID_CLOCK_TIMER,1000,NULL) //id_clock_timer habe ich als ressource neu erstellt ..... }anschließend habe ich die funktion OnTimer erstellt:
void CzeiterfassungDlg::OnTimer(UINT nIDEvent) { CTime curTime = CTime::GetCurrentTime(); UpdateData(); // Aktuelle Zeit anzeigen vBegin.Format("%d:%d:%d", curTime.GetHour(), curTime.GetMinute(), curTime.GetSecond()); // Dialogfeld aktualisieren UpdateData(false); CzeiterfassungDlg::OnTimer(nIDEvent); }Kann mir bitte jemand sagen was ich hier falsch mache?
-
Hi, ich habe es gerade probiert und es funktionierte auf Anhieb.
die TimerID ist übrigens einfach eine integer-Konstante, damit du in OnTimer abfragen kannst, welcher Timer denn gerade gemeint ist. Also ist dieser Wert ziemlich frei wählbar, wnen du nur einen Timer verwendest. (Ansonsten muss sowieso in OnTimer die TimerID abgefragt werden)
vBegin sollte außerdem ein CString sein, mit was für einem Objekt hast du ihn denn verbunden? Schau mal in der UpdateData nach, ob da auch so etwas drin steht: DX_Text(pDX, IDC_KEINEAHNUNGWAS, vBegin); IDC_KEINEAHNUNGWAS sollte die ID vom Dialogfeldelement sein.
mfg Frauke2k
-
Hallo, danke für die antwort. Ich dachte mich haben die user hier schon vergessen. Ich habe alles so gemacht wie du das schreibst. Auch die variable habe ich richtig deklariert. Ich habe auch sicherheitshalber die variable angesprochen und die ausgabe läuft. Was einfach nicht laufen will, ist die ausgabe bei der OnTimer funktion. Ich habe auch schon anstatt einer uhrzeit einfach nen dummer spruch hingeschrieben. Nichts tut sich. Ich weiß wirklich nicht mehr wieter. Ich sitze schon seit einer wochen an den dummer problem. Das kann doch nicht so schwer sein oder?
Falls es dir weiterhilft list ich die hier mein vorgehen. Ich habe eine funktion erstellt die OnTimer heißt. Diese habe ich dem CzeiterfassungDlg hinzugefügt und nicht der CzeiterfassungApp. das ist doch richtig so oder? dann habe ich noch die referenz hinzugefügt: OnTimer(UINT nIDEvent). Dann wie du schon oben siehst habe ich hingeschrieben wann diese funktion machen soll. natürlich habe ich auch eine variable vom typ CString für vbegin erstellt. Sie referenziert auf ein editcontrol. danach habe ich SetTimer (id_clock_timer,1000,null) bei initDlg hinzugefügt. id_clock_timer habe ich als ressource hinzgefügt die den wert 1 hat. ich habe auch schon versucht einfach eine 1 bei settimer einzugeben und nicht id_clock_timer. aber alles war ohne erfolg. Ich wäre wirklich sehr dankbar wenn mir jemand helfen könnte
-
ich hab dir mal was hochgeladen, schaus dir mal an (vc6.0 projekt)
http://home.arcor.de/frauke2k/timer.zip
-
Hallo, ich bin es nochmal. ich lese nochmal dein kommentar. Wie komme ich den überhaupt auf updateData. alles was ich nur mache, ich gehe auf mein feld und dann auf variable hinzufügen. Das mußte doch ausreichen oder? Wenn ich selbst da ein wert zuweise dann bekomm ich ich die ausgabe. nur in der ontimer funktion will das nicht gehen.
-
Kommt drauf an, was du für vars nimmst. bei controls kannst du dir das sparen, aber bei normalen variablen brauchst du das schon. funktioniert mein code?
-
Hallo, danke nochmal für deine mühe. der code läuft bei mir nicht wiel ich .net habe. aber ich konnte in dein code schauen. ich bin gerade dabei das nochmal bei mir zu implementieren. ich hoffe es wird gleich laufen.
-
Hallo nochmal. habe dein code konvertiert und es läuft einwandfrei. ich weiß nicht was ich falsch machen. ich werde mich noch damit genauer befassen was du gemacht hast. das muß doch irgendwie gehen. so dumm bin ich wirklich nicht
-
ich schätze, du hast irgendwo eine kleinigkeit übersehen oder sowas, wahrscheinlich nur eine unachtsamkeit, s wird bestimmt

-
Ich arbeite grad an einem Programm mit nem Timer.
lösch mal UpdateData(); raus oder schreib zumindest true rein, könnte sein, dass das der Grund ist!
-
Ich habe mir den code von frauke2k angeguckt. was ich vieleicht falsch gemacht habe, ist dass ich die funktion nicht als afx_msg habe. Kann es vieleicht daran liegen. wenn ja wie deklariere ich sowas? ich gehe einfach auf ctimerdlg und dann funktion hinzufügen
-
Hallo frauke2k. Ich weiß nicht was los ist aber ich habe dein projekt mit meinem verglichen. Ich habe alles so gemacht wie es in deinem projekt ist. meins läuft aber immer noch nicht und deins läuft. irgendwo muß ich da einen kleinen fehler gemacht haben aber ich weiß nicht wo. Bleibt mir nichts anderes übrig als dein projekt zu nehmen und dann damit weitermachen. Ich bin echt sauer. Wieso geht das blos nicht bei mir. Ich würde gerne sowas selber machen und nicht von anderen nehmen. Es muß auf jeden fall an mir liegen sonst würde dein timer bei mir auch nicht laufen. Irgendeine kleine feinheit mache ich falsch.
-
Hallo alle zusammen. Ich haaaaabbbbbbbbbbbsssssssssss geschaft. Und zwar lag es daran, dass ich an diese stelle etwas nicht hatte:
BEGIN_MESSAGE_MAP(CTimerDlg, CDialog) //{{AFX_MSG_MAP(CTimerDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_TIMER() //}}AFX_MSG_MAP END_MESSAGE_MAP()Und zwar habe ich dort den Befehl ON_WM_TIMER() nicht drin gehabt. Darauf wäre ich nie gekommen wenn mir frauke2k geholfen hätte. Jetzt hätte ich da noch die letzte frage: Wieso ist das bei mir nicht da gewesen. Muß ich das dort selbst per hineinschreiben oder habe ich da was vergessen zu machen?
-
hm.
entweder du hast die funktion OnTimer() mit dem Klassenassistenten angelegt (dann ,üsste es drin sein) oder du hast halt einfach nur die Funtkion von Hand eingebaut, dann isses klar, warums fehlt. Schön, dass du den Fehler gefunden hast, viel Spass beim weiterproggen