Timer mit Listview - Abfrage der Variable
-
Hallo!
Ich habe einen Mousehook erstellt der mir die Position des Mauszeigers gibt und importiere also nun die POINT-Variable in mein Hauptprogramm.
Wollte jetzt einen Timer einbauen zum aktualisieren des Listenfensters.Den Timer starte ich in WM_INITDIALOG. Es funktioniert auch (es werden also die Fensternamen hinzugefügt, auch wenn das Programm nicht fokussiert ist).
Allerdings fügt er jetzt jede Sekunde ein Item ein. Nun möchte ich, dass er erst überprüft ob der Wert der importierten POINT-Variable sich geändert hat und die Liste erst aktualisiert wenn dies der Fall ist.
Wie realisier ich das am besten?
mfg
-
Du merkst dir den vorigen Wert der Variablen und vergleichst:
CPoint position=CPoint(0,0),old_position=CPoint(0,0); void OnTimer(...) { if(position!=old_position) { //mach was old_position = position; } }
-
Ich würde eher bevor du einen neuen Eintrag in deine Liste machst überprüfen ob dieser Wert (der Name des Fensters) schon vorhanden ist. Und wenn ja ihn nicht eintragen.
Du kannst ja mit der Maus auch Horizontal über die Titelleiste fahren. Dann ändert sich die Mausposition aber der Name bleibt gleich und wird wieder zig mal in die Liste eingetragen.schirrmie
-
Ok..klingt logisch..Nur wie vergleiche ich jetzt diese Werte?
Ich habe mich schonmal beim Sortieren umgeschaut (bei dem man ja auch vergleichen muss) .. Allerdings bleib ich immer an der Stelle hängen, an dem ich die Zeilen Vergleichen soll.....Oder hab ich grad nur ein Brett vorm Kopf und seh die Lösung nicht?

-
Na eigentlich doch ganz easy, mit LB_GETCOUNT holst du dir die Anzahl.
Dann machst du ne schleife und holst dir jedes Item mit LB_GETTEXT, dieses vergleichst du dann. Wenn es noch nicht drinn war trägst du es ein.schirrmie