Schleifenabbruch durch Mausklick ??
-
ich hätte das wohl so gemacht das ich die schleife solange laufen lasse bis ein schalter, nennen wir ihn mouse_pressed, true ist. und dann würde ich halt noch eben das entsprechende mouseevent abfragen und dann halt den schalter auf true setzen. ich weiss nun nicht warum man einen solchen aufwand mit extra threads und timern machen sollte ...
-
@hardy
Wahrscheinlich, weil die Lösung für diese Schleife zwar einfach ist, ich es aber nicht jedem Anfänger zutraue, sofort zu wissen, wie die Messageverarbeitung innerhalb einer Schleife zu implementieren ist!
-
@Hardy
wenn er bilder anzeigen lassen will, wird eventuell der rechner recht stark ausgelastest und der dialog wird blokiert, so das es nicht möglich ist weitere eingaben zu machen, bzw. es dauert ne weile, bis er das klickereignis auswertet und in der zwischenzeit werden noch weitere bilder geladen
-
Original erstellt von Emperor_L0ser:
es dauert ne weile, bis er das klickereignis auswertet und in der zwischenzeit werden noch weitere bilder geladenDas kann je nach Rechnerleistung noch ne ganze Weile dauern
-
ich steh grad auf der leitung, wie ist das jetzt gemeint
-
Bejahend... Das kann ganz schön lange dauern bis die WM_LBUTTONDOWN ankommt wenn der PC ständig Invalidates macht...
-
@MaSTaH
*kopfschüttel*Solange der PC nur Invalidates macht, passiert gar nichts weiter! Invalidate schickt KEINE WM_ERASEBKGND und WM_PAINT - Nachricht!
Erst UpdateWindow, oder falls genügend Zeit ist, Windows selber, wenn es mitbekommt, dass eine Region invalidiert wurde!
-
@RenéG: Ich hatte mal den Fall, dass Timer-Messages nicht ankamen weil ich in OnPaint mit GetDC gearbeitet habe anstatt mir einen CPaintDC zu erstellen. Folge: Die Timer-Messages kamen nicht an weil ständig neu gezeichnet wurde. Ich vermute es hing damit zusammen, dass ein CPaintDC-Objekt im Destruktor ein Validate macht. Was ich nur sagen wollte. Wenn eine Endlosschleife läuft kann es bisweilen ziemlich lange dauern bis das Programm wieder auf eine EIngabe reagiert...
-
@MaSTaH
Dann hat man aber das gleiche Problem auch, wenn man die Endlosschleife in einen Thread baut, denn dieser schickt ja auch nur Messages an den Hauptthread, dass dieser sich updaten soll. Wenn aber die MessageQueue nicht leer ist, würde es genauso lange dauern, bis die Message auch wirklich verarbeitet wird.
-
Original erstellt von RenéG:
[QBDann hat man aber das gleiche Problem auch, wenn man die Endlosschleife in einen Thread baut.[/QB]Ja, aber in diesem Thread kann man dann ein Sleep einbauen welches nicht sofort das ganze Programm für ein paar Sekunden lahmlegt. Ich denke mal die Bilder sollen mit einer bestimmten Frequenz gewechselt werden.