GetWindowRect(..)

hallo…
jetzt häng ich schonwieder fest. :frowning:

Das Mouseleave funktioniert mit GetCursorPos ganz gut, nur find ich das Viereck vom Zeichenbereich nicht. ALso wenn ich GetWindowRect verwende ist es schon FAST richtig, nur dass GetWindowRect das Viereck vom Kompletten Fenster zurückgibt (mit Rahmen und Title-Leiste).
Für meine Zwecke brauche ich aber das Viereck vom Zeichenbereich im Fenster, die Koordninaten der MW_MOUSEMOVE-Nachrichten beziehen sich auch auf den inneren Sichtbereich.
Wie kommt man auf dieses Viereck? Mein DeviceContext hat anscheinend auch keine Methoden dazu und das GetClientRect hat grundsätzlich als linke obere Ecke die 0.

Steffen

Hmm…
also ich weiss gar nicht was GetWindowRect bringt, die hilfe hat mir nix gebracht.
aber in der Hilfe war ein Verweis auf GetClientRect
guck dir das mal an, ich glaube du suchst das.

was programmierst du eigentlich?

MfG Roman

ich habs

Hmm…
also ich weiss gar nicht was GetWindowRect bringt, die hilfe
hat mir nix gebracht.
aber in der Hilfe war ein Verweis auf GetClientRect
guck dir das mal an, ich glaube du suchst das.

Das ClientRect hab ich schon probiert. Es gibt nur die Fenstergrösse zurück.

Aber nachdem ich standenlang nach einer Funktion gesucht hab, is mir dann dieser Trick eingefallen:

POINT punkt;
punkt.x=punkt.y=0;
ClientToScreen(hwnd,&punkt);
GetClientRect(hwnd,&rect);
rect.top=punkt.y;
rect.left=punkt.x;
rect.bottom+=punkt.y;
rect.right+=punkt.x;

ich lasse einfach die relative Fenster-Koordinate 0/0 in eine globale umrechnen. Da kommt dann genau die Position des inneren Fensters bei raus. Die Fenstergrösse addiert und schon hab ich das Viereck.

was programmierst du eigentlich?

es geht darum, dass ich bei OpenGl meinen eigenen Mauscursor zeichnen möchte. Im Fullscreen kein Problem. Nur im Fenstermodus muss er den Windowscursor beim Eintreten in das Fenster ausschalten und den OpenGl-Cursor (mit Alphablending und Schatten) zeitgleich aktivieren.

cu
Steffen

GetClientRect() gibt das Zeichenrechteck aus. Will man das in Schirmkoordinten, helfen ScreenToClient() bzw ClientToScreen() weiter.

Gruß, Moriarty