Es über einen Timer steuern eventuell?
Also Timer wird angeworfen wenn User Maus-Event fürs "hab-jetzt-Taste-gedrückt" wenn Timer fertig dann startet die eigentliche "ich-habe-noch-Taste-gedrückt-und-erwarte-bewegung" Ausführung.
Danke, hab da bissl rumgetestet. Danach mein Problem an ganz andere Stelle entdeckt.
Meine ScrollBar ändert für eine ListBox die TopIndex bzw. mit SendMessage und WM_HSCROLL/SB_PAGEDOWN wird der Inhalt gescrollt. Die ListBox selbst ist mit WS_EX_COMPOSITED gesetzt. Irgendwie bleibt der erste Scrollzustand mit einem Smooth Scrolling behaftet, der zwar nicht angezeigt wird (wegen WS_EX_COMPOSITED) aber diese Millisekunden werden dennoch verarbeitet, sprich die Reaktion auf "OnMouseDown" in meiner ScrollBar mit anschließenden SendMessage (damit die Listbox scrollt) reagiert versetzt. Dies aber nur beim ersten mal und deshalb kam ich da mit meiner While/End Schleife und Application.ProcessMessages nicht ganz weiter. Ich mach nun einfach "SPI_SETLISTBOXSMOOTHSCROLLING" rein, was leider aber Systemweit gesetzt wird. Nach Programmende schalte ich dann dieses Smooth wieder ein. So geht auch meine While/End Schleife für die ScrollBar und durch dieses SPI_SETLISTBOXSMOOTHSCROLLING sind auch andere Kinderkrankheiten weg, die mir gar nicht zuvor aufgefallen sind.
Alles bissl kompliziert zu beschreiben
Jetzt muss ich nur noch irgendwie SPI_SETLISTBOXSMOOTHSCROLLING abfragen, ob dieses überhaupt aktiviert ist, da ich es ja bei Programmende aktiviere. Soll ja nur aktiviert werden, wenn es vom System her auch vorher aktiv ist.
Dir trotzdem Danke für den Tipp mit dem Timer.
Michael