PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Maus-Bewegungen erkennen ?


MrEasy
01.09.2002, 14:08
hi,


wie kann ich in windows bewegungen der maus nachverfolgen? insbesondere interessieren mich drag'n drop bewegungen mit der rechten maustaste
das ganze für C++
und da ich win-API-Nub bin, wären noch'n paar Infos gut, welche Header ich brauche und wo ich die herbekommen kann :)


Zapata
01.09.2002, 20:23
Benutze die window-message WM_MOUSEMOVE um zu erkennen ob die maus bewegt wird. In lParam stehen die Koordinaten (loword = x, hiword = y). Die Koords. kannst du auch ohne message mit GetCursorPos(POINT) bekommen.

MrEasy
04.09.2002, 16:13
thx zapate,
ich habe inzwischen halb-wegs den durchblick über die erkennung von maus + tastatur eingaben, allerdings immer nur, wenn das aktuelle fenster aktiviert ist, wie kann ich denn mausbewegungen immer erkennen unabhängig davon, wo, mit welchem aktivierten fenster sie ausgeführt werden?

Diogenes
04.09.2002, 18:30
Funktion SetCapture ist ideal: Läßt das als Parameter angegebene Fenster alle Mausbotschaften empfangen, bis ReleaseCapture abgesetzt wurde.

Gefunden in der Windows API.
Site: SetCapture à la MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputfunctions/setcapture.asp).

Unbedingt auch bei den Querverweisen lesen!

StoreMaster
04.09.2002, 22:56
@Lord_Otter
ja ist es und wird es auch ohne solche sinnlosposts bleiben!!

xOOn
05.09.2002, 10:24
so nun reichts sogar mir langsam Lord_Otter's post gibts nimmer

MrEasy
17.09.2002, 10:36
howdie noch ein mal
so, meine mausbewegungen erkenne ich nun wie der adler das kaninchen ;)

problem ist noch: eben nur, wenn die mausbewegung im programm-eigenen fenster ausgeführt wird
wie schon erwähnt, soll das aber unabhängig vom aktuellen fenster von meinem programm erkannt werden (und das aktuelle fenster als handle an mein programm übergeben werden)

habe mal mit SetCapture unf GetCapture 'rum-probiert, allerdings war das nicht von erfolg gekrönt

vielleicht kann mir jemand nochmal nen tip oder nen code-schnipsel als denk-anstoss geben :)

xOOn
17.09.2002, 13:05
GetCursorPos

das gibt die die aktuelle mouseposition zurueck

ich glaube du bist am schnellsten wenn du dir die moves dann selbst ausrechnest, ansonsten glaube ich gehts ueber hook's und das ist ein ei

MrEasy
17.09.2002, 13:54
Original geschrieben von xOOn
GetCursorPos

das gibt die die aktuelle mouseposition zurueck

ich glaube du bist am schnellsten wenn du dir die moves dann selbst ausrechnest, ansonsten glaube ich gehts ueber hook's und das ist ein ei

damit bekomme ich aber sicherlich nur die absolute position auf dem bildschirm und nicht das aktive fenster - richtig ?

Malte 2
17.09.2002, 14:56
Ja, aber mit den absoluten Koordinaten des Mauszeigers und denen des Fensters (GetWindowPlacement()) kannst du ja leicht die Position im Fenster rausfinden.

MrEasy
17.09.2002, 15:43
Original geschrieben von Malte 2
Ja, aber mit den absoluten Koordinaten des Mauszeigers und denen des Fensters (GetWindowPlacement()) kannst du ja leicht die Position im Fenster rausfinden.

ich würde sagen, das gibt nix:
BOOL GetWindowPlacement( HWND hWnd,
WINDOWPLACEMENT* lpwndpl
);

sinn der aktion wäre ja, das handle des aktiven fensters zu bekommen; ich müsste der funktion ja aber das handle des fenster übergeben :mauer:

Patrik Graf
17.09.2002, 16:36
GetActiveWindow könnte dir da unter umständen weiterhelfen... :D