Entwickler-Ecke

Windows API - Frage zu WM_MOUSEMOVE


webmaker - Fr 29.08.03 17:39
Titel: Frage zu WM_MOUSEMOVE
Mein Vorhaben ist, dass ich die Mauskoordinaten auf dem ganen Bildschirm haben will.
DAs Problem ist ja, dass WM_Mousemove nur dann aufgerufen wird, wenn ´sich der Cursor auf dem Form befindet
Wie mache ich das jetzt genau?


derDoc - Fr 29.08.03 18:22

Nimm einen Timer, setze das Intervall auf 1 und nutze folgenden Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  Punkt: TPoint;
begin
  GetCursorPos(Punkt);
  //Mit Punkt.X und Punkt.Y kannst du dann die Koordinaten bekommen
  ...


webmaker - Fr 29.08.03 19:49

Ich will aber keinen Timer nutzen ;-)
danke dir trotzdem !
Denn wenn es schon ein Event gibt, dann sollte man es auch nutzen.
Mein code sieht so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  private
   procedure WMMOUSEMOVE(var msg : TMessage); message WM_MOUSEMOVE;
{...}

procedure TForm1.WMMOUSEMOVE(var msg : TMessage);
var
 aPoint : TPoint;
begin
 GetCursorPos(aPoint);
 Form1.Caption := 'x: ' + IntToStr(aPoint.x) + ' y: ' + IntToStr(aPoint.x);
end;

Funktioniert ja auch prakitsch, nur halt das mit dem Clientbereich des fensters...
Maus sich also auf Form befinden...
Oder muss ich einen Timer nutzen? Ich hoffe mal nicht...


Motzi - Fr 29.08.03 19:54

Das ganze funktioniert mit einem Hook! Schau dir mal auf http://www.assarbad.org das Hook-Tutorial an...


webmaker - Fr 29.08.03 19:58

mhm doch sowas hochgegriffenes...mal kucken...