Mausposition ausserhalb des Programm-Fensers ?
-
Hallo zusammen,
ich möchte gerne ein Programm schreiben, welches mir die Mausposition ausserhalb meines Programm-Fensters ermittelt.
GetCursorPos(&mPos); ermittelt mir nur die Koordinaten innerhalb des Fensters.
Gibt es eine Funktion, die mir diese Koordinaten liefert ?
Hintergrund ist, dass später ein Mausklick nach Ablauf eines Timers auf diese Koordinaten ausserhalb meiner Anwendung gemacht werden soll.
Vielleicht kann mir jemand helfen ?!? Danke im Voraus.
-
Die Funktion GetCursorPos() ermittelt die Koordinaten als Screen Koordinaten. Also eigentlich genau was du suchst.
Was du eventuell meinst, ist das dein Programm nicht auf die Klicke außerhalb deines Fensters reagiert.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/cursors/cursorreference/cursorfunctions/getcursorpos.asp
-
Danke für die Antwort, Guenni.
Ich gebe Dir Recht, wenn man das Programm als Konsolenprogramm schreibt:
int main() { POINT mPos; while(1) { GetCursorPos(&mPos); cout << "X:" << mPos.x << " Y:" << mPos.y << endl; system("CLS"); } return 0; }
jedoch möchte ich es als Dialogfeldbasierendes Programm haben. Da funktionierts leider nur im Programmfenster....:
Code:
void CMouseDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen und/oder Standard aufrufen UpdateData(TRUE); POINT mPos; GetCursorPos(&mPos); m_posX = mPos.x; m_posY = mPos.y; UpdateData(FALSE); CDialog::OnMouseMove(nFlags, point); }
Hast Du noch Vorschläge, bitte ?
-
WM_NCMOUSEMOVE, hilft das evtl.?
-
Ich galube da must du mal mit Release- und GetCapture rumprobieren.
-
connan schrieb:
Ich galube da must du mal mit Release- und GetCapture rumprobieren.
Kannst Du mir evtl. mal erklären, wo ich GetCapture() aufrufen soll ? Vielleicht hast Du nen Beispielcode, aus der ich mir die Funktion besser erklären kann als aus MSDN ?
Wäre Klasse.
-
Ups sorry, übersehen, die Funktion heißt SetCapture(), nach Aufruf werden alle Mauseingaben an das Aufrufende Fenster weitergeleitet, deshalb sollte dann auch irgendwann ein ReleaseCapture() folgen.
-
Schau dir das mal an:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputfunctions/trackmouseevent.asp
Habe ich aber selber noch nicht ausprobiert.