Auf scrollen eines ListBoxes reagieren
-
Schön guten Tag alle zusammen!
Ich habe ein kleines Problem:
Wie kann ich eine Nachricht über einen Scrollereigniss eines ListBoxes abfangen? Meine Aufgabe ist zwei ListBoxen synchron scrollen zu können.
Mit einer Zuweisung:ListBox1->TopIndex = ListBox2->TopIndex;
kann man das schon erreichen.
Wie kann man errechen dass dies unverzüglich beim Scrollen passiert?
Danke für Eure Antworten im voraus!
-
Du könntest einen Timer benutzen (ca. 50 ms), um die Anweisung auszuführen.
-
Danke!
Mit Timer gehts auch, nur mit kleine Verzögerung.
Ich habe den Timer schon auf 1ms gehabt, trotzdem kleine Verzögerung zu sehen ist. Dein Vorschlag mit (50ms) ist am optimalsten.Meine Code im Timer:
if(lb1->TopIndex != TempIndex) { lb2->TopIndex = lb1->TopIndex; TempIndex = lb1->TopIndex; } else lb1->TopIndex = lb2->TopIndex;
Die
int TempIndex;
ist in der Klasse privat deklariert.
Vielleicht kann man an der Performace was tun?!
-
Suchfunktion benutzen!
http://www.c-plusplus.net/forum/viewtopic-var-t-is-115713.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-11893.html
-
Hallo aesse,
mit Performance hat das weniger zu tun, sondern nur mit Pixelgenauigkeit beim Scrollen (TopIndex verhält sich quasi wie Ganze Zahlen zu Fließkommazahlen).
Wenn du es pixelgenau scrollen willst, dann mußt du direkt die Win-Message (WM_VSCROLL) abfangen, s. hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-107941-and-highlight-is-.html (auf den Jansen indirekt verwiesen hat -)
-
Na ja mit Abfang der WM_VSCROLL Botschaft funktioniert es recht gut, jedoch beim scrollen durch Weel-Maus wird die Nachricht nicht ausgelöst. Also ich habe den Timer parallel auch gelassen, und schalte den während die Botschaft durch scrollen per Scrollbar ausgelöst wird aus.
-
Hallo,
beim Scrollen mit dem Mausrad gibt es die Botschaft WM_MOUSEWHEEL.
-
Danke!
Es funktioniert mit Reaktion auf WM_MOUSEWHEEL Botschaft.
Aber generell die Geschwindigkeit den automatischen nachscrollen in zweiten Listbox ist einfach zu langsam -> Wishi-Waschi Effekt.Ich denke das ListBox Control für schnelles scrollen gaar nicht geeignet ist und werde höhstwarscheinlich auf ListView umsteigen müssen.
Ich danke Euch allen für die Hilfestellung!