Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Debug Assertion?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
09.06.2004, 00:04 Uhr
~toxic
Gast


hi, wann wird eigentlich die OnTimer aufgerufen, doch nicht nur wenn DEIN timer läuft ! desshalb der aufruf am besten mit einer ID_TIMER1 (oder so)

C++:
UINT m_timer1 = SetTimer(ID_TIMER1, nInterval, NULL);

in OnTimer auf alle fälle auf ID_TIMER1 prüfen ! sonst wird dein code auch weiterhin ausgeführt obwohl der dialog(oder das fenster) schon geschlossen ist...

C++:
void CDeinDlg::OnTimer(UINT nIDEvent)
{
    switch(nIDEvent)
    {
        case ID_TIMER1:// Dein Timer !!!
        {
            // do somthing...
            Sleep(100);
        }
        break;
        case ID_TIMER2:// zB. irgendwas anderes...
        {
            // hier was machen...
            KillTimer(ID_TIMER2);
        }
        break;
    }    
    CDialog::OnTimer(nIDEvent);
    return;
}

--
grusz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
09.06.2004, 08:23 Uhr
Unwissende
...die wirklich Unwissende 8-)


Hab ich das hier jetzt richtig verstanden?
Also, jeder Timer hat eine gewisse ID (ID_TIMER1, ID_TIMER2), d.h. wir haben also eine Timerfkt(OnTimer) aber 2 Möglichkeiten, was der Timer macht. (In meinem Fall eine ProgressBar aktualisieren).
Aber wieso legt du bei case ID_TIMER1 den Timer "nur" schlafen und killst ihn nicht gleich?
Wieso wird der Timer in der Fkt OnTimer gekillt.....?
Das hab ich mir gestern auch noch überlegt, dass es ja sein kann, dass der Code weiterhin ausgeführt wird, auch wenn das (modale) Dialogfeld schon wieder geschlossen ist, vielleicht könnte man sich so auch die "Memory leaks" erklären, die als Warnung aufgezeigt wurden...
--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
09.06.2004, 08:34 Uhr
Unwissende
...die wirklich Unwissende 8-)


Ach ja, um nochmal auf das Grundproblem hinzuweisen:
Mit der Fkt. OnCancel soll die Ausführung der Fkt check_addressline() abgebrochen werden...Um das zu realisieren dachte ich eigentlich an PeekMessage(...). PeekMEssage bewirkt,das weiterhin Nachrichten verarbietet werden können, z.B. eben diese OnCancel-Funktion...Oder hab ich etwa falsch gedacht?

--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
09.06.2004, 09:16 Uhr
ao

(Operator)


Halt, nicht verwirren lassen.

PeekMessage liefert den Inhalt der nächsten Message in der Warteschlange, aber im Gegensatz zu GetMessage wird die Message nicht aus der Queue entfernt, es ist also ein "Nachschauen, aber nicht abholen".

Und "Memory leaks" haben überhaupt nichts zu bedeuten, solange das Programm irgendwie unnormal beendet wird (z.B. wenn du im Breakpoint abbrichst oder wenn es einen harten Absturz gibt). Es kann sein, wenn du den Fehler gefunden hast und das Programm normal terminiert, dass wieder richtig aufgeräumt wird und alle Speicherlecks weg sind. Also hier erst mal abwarten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
09.06.2004, 09:25 Uhr
Unwissende
...die wirklich Unwissende 8-)


Ich weiß jetzt irgendwie grad gar nich mehr weiter....

C++:
if (::PeekMessage(&message,NULL,0,0,PM_REMOVE))
{
    ::TranslateMessage(&message);
    ::DispatchMessage(&message);
}


Dachte, das bewirkt, dass weiterhin auf Benutzereingaben reagiert werden kann...


Ich hab grad echt keine Ahnung, wie ich mein Problem denn jetzt lösen könnte....

Was haltet ihr von einem KillTimer in der Fkt OnCancel???
--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
10.06.2004, 15:34 Uhr
~toxic
Gast


hi, also mein code-sample sollte nicht zur verwirrung dienen
das sleep() soll nur bedeuten da da was gemacht wird, also einfach rechenzeit verbraten... (KillTimer() in ontimer ist auch nur ein beispiel)
die ID_TIMERx legst einfach selber an

der killtimer in OnCancel ist schon richtig, wenn das deine abbruch-funktion für den timer ist.

falls noch etwas grunsätzliches in sachen timer unklar ist solltest du dir vielleicht mal in "Visual C++ in 21 tagen" den abschnitt Timer genau ansehen.
--
grusz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: