Ich code da gerade an einem GUI, bei dem man u. a. mit der Maus Images in Viewports verschieben kann (Panning). Damit die Drag-Bewegung nicht von dem Fenster- oder dem Desktoprahmen begrenzt ist, frage ich die Mausbewegung über MouseDeltaX() bzw. MouseDeltaY() ab. Also muß ich die DirectX-Mausfunktionen verwenden, also muß dazu InitMouse() herangezogen werden. Nach der Dragbewegung soll dann sofort wieder zur OS-Maus zurückgekehrt werden, dies geschieht eben per ReleaseMouse().
Obskurerweise taucht der Mauszeiger dann meistens an ganz anderen Stellen auf, als man erwarten würde. Das hab ich zu vermeiden versucht, indem ich zu Beginn des Dragvorgangs die Mauskoordinaten über MouseX() und MouseY() (also ebenfalls über DirectX-basierte Funktionen) sichere und sie nach dem Vorgang per MouseLocate() wieder zurücksetze. Das hilft leider überhaupt nichts, anscheinend ist der Maus-Space des gewöhnlichen OS-Betriebs und der von PB-Screens bzw. der entsprechenden DirectX-Funktionen völlig unabhängig voneinander.
Was kann man da machen? Gibt's vielleicht eine WinApi-Funktion, mit der man den Mauszeiger an eine bestimmte Position setzen kann? Wahrscheinlich schon, hab aber noch nicht herausgefunden, welche. Oder sonst ne andere Möglichkeit, das Problem zu lösen?
Mauszeiger an seltsamen Positionen nach ReleaseMouse()
Moin,
Abfragen der aktuellen Mouse- Position:
Setzen der Mouse- Position:
Abfragen der aktuellen Mouse- Position:
Code: Alles auswählen
CursorPT.Point
GetCursorPos_(CursorPT)
Debug CursorPT\X
Debug CursorPT\Y
Code: Alles auswählen
SetCursorPos_(x,y)
Wer lesen kann, ist klar im Vorteil
MfG
strgalt
MfG
strgalt