Mauszeiger an seltsamen Positionen nach ReleaseMouse()

Für allgemeine Fragen zur Programmierung mit PureBasic.
sire
Beiträge: 10
Registriert: 25.11.2005 02:09

Mauszeiger an seltsamen Positionen nach ReleaseMouse()

Beitrag von sire »

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?
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag von strgalt »

Moin,

Abfragen der aktuellen Mouse- Position:

Code: Alles auswählen

CursorPT.Point

GetCursorPos_(CursorPT)

Debug CursorPT\X
Debug CursorPT\Y

Setzen der Mouse- Position:

Code: Alles auswählen

SetCursorPos_(x,y)
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
Antworten