Maus-Position in meinem Fenster
-
Hi,
ich habe ein Fenster, und will gerne anzeigen (bei Mausklick) an welcher position in meinem Fenster der Mauszeiger ist.GetCurserPos gibt es ja nicht (zumindest bei MSDN), obwohl ich gelesen hatte das es damit gehen sollte.

Mit welcher Funktion kann ich da ran gehen?
MFG und danke im voraus.
-
Wie wäre es mit GetCursorPos?
Aber das brauchst du eigentlich nicht, da dir Windows die Mauszeigerposition schon im lParam mitgibt (relativ zur Fensterposition, wie du es vermutlich auch haben möchtest).
-
lippoliv schrieb:
GetCurserPos gibt es ja nicht...
Nanyuki schrieb:
Wie wäre es mit GetCursorPos?
Wolltest du damit was sagen? Hast du meinen beitrag gelesen?Ich finde nirgends eine referenz zu lParam... Ist das ein Array oder wie oder was?
Bei MSDN finde ich da auch ncihts zu.. .suche ich falsch?[edit]OH jetzt habei ch gesehen was du meintest...werde mal suchen.. danke
-
WM_RBUTTONDOWN, WM_RBUTTONUP, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_RBUTTONDBLCLK, WM_LBUTTONDBLCLK und WM_MOUSEMOVE liefern alle in LOWORD(lParam) die X-Position und in HIWORD(lParam) die Y-Position.
MSDN schrieb:
The WM_RBUTTONDBLCLK message is posted when the user double-clicks the right mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
WM_RBUTTONDBLCLK
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursorlParam ist ein 32-Bit-Wert, der spezielle Informationen der WM_Message enthält. Mit LOWORD und HIWORD greifst Du auf die Teilwörter zu.
-
Wie hast du gesucht???
Bin ich zu blöd dafür

-
Tutorial durcharbeiten:;)
-
Jap. Man sollte vllt. auch mal gucken was unter der Message bei lParam und wParam steht und dann wenn da nix von Cursor steht kann man immer noch danach suchen (und findet GetCursorPos, nicht GetCurserPos!).
-
Das mit GetCursor... habe ich ja noch im Edit berichtigt(wörtlich da auch andere meine fehler sehen können sollen).
leider war bei MSDN zu lParam kein link, von daher... Ja diese WinAPI seite scheint spitze zu sein, werd mir auf jeden fall ansehen.
Frage:
case WM_LBUTTONDOWN: _itoa( LOWORD(lParam), xPos, 10 ); printf( "%s\n", xPos ); break;geht, aber
char xPos[6]; [...] case WM_PAINT: [...] if( 0 < lastKnownX ) { _itoa( LOWORD(lParam), xPos, 10 ); printf( "%s\n", xPos ); TextOut( myHdc, versionXPos, versionYPos, xPos, strlen( xPos ) ); } else { _itoa( LOWORD(lParam), xPos, 10 ); printf( "%s\n", xPos ); } [...] break;nicht. Wo ist der unterschied? Er müsste doch wenigstens auf der Kommandozeile die Daten ausgeben oder?
Variante eins:
C:\cprogs>winProg 0 184 298 222Variante 2:
C:\cprogs>winProg 0(beide male ca 4 Klicks)
Bei Variante 2 Schreibt er nichtmal 4 0en.
-
Im zweiten Fall kann es ja nicht gehen, weil Du die Mausposition aus dem lParam einer WM_PAINT Message auslesen möchtest, eine WM_PAINT Message aber keine Mauspositionen liefert!
Also generell:
Benutzerinteraktionen (unter anderem) werden Fenstern über Messages mitgeteilt, auf die dann entsprechend reagiert werden kann/soll. Je nachdem, von welchem Typ die Message ist, enthalten wParam und lParam andere Informationen. Im Fall, dass die Message vom Typ WM_LBUTTONDOWN ist, also die linke Maustaste gedrückt wurde, enthält der lParam die Position (macht ja auch Sinn). Eine WM_PAINT Message fordert das Fenster allerdings auf sich neu zu zeichnen, Informationen über irgendeine Mausposition sind in dieser Nachricht also gar nicht vorhanden. Deswegen kannst Du sie dort auch nicht auslesen!Ich bin selber noch N00B in der Windowsprogrammierung, deswegen verstehe ich Deine Situation, wenn Du offensichtlich noch keinen Plan von der Windowsprogrammierung hast. Für Deine Zwecke solltest Du Dich mal grundsätzlich mit dem Thema Windows Messaging auseinandersetzen. Da gibt es 1000 Seiten zu (guck mal bei Google).
Bis denn,
Timo
-
Elektronix schrieb:
Tutorial durcharbeiten:;)
Sehr geil danke...
@Black Widow: Wenn du Zeit und lust hast
Diese übersicht ~(linky by Elektronix)~ ist glaube ich gut... Habe mir sein gepostetes durchgelesen und werde jetzt erstmal bischen rumbasteln...
Ist auf jeden fall etwas neues.Danke auch für deinen Post, jetzt habe ich meinen Fehler wenigstens verstanden... KA wie ich so blind sein konnte...

-
Kann noch eins beisteuern: http://pronix.linuxdelta.de/C/win32/index.shtml

-
Danke... Sei ehrlich bedankt...

Werd ich mir auf jeden fall anschauen.