Fenster bewegen (MoveWindow)
-
Ich möchte mein Hauptfenster bewegen, allerdings muss ich immer mit MoveWindow auch die größe angeben. Wie lässt sich das umgehen?
-
Hol dir doch die aktuelle Größe (GetClientRect oder GetWindowRect, weiß ich nicht genau) und rechne was drauf.
-
... oder mit SetWindowPos und SWP_NOSIZE (andere Flags kannst du natürlich je nach Bedarf auch noch setzen )
-
Danke! Ich habs so gemacht:
SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOSIZE);
Vielen Danke nochmal!
-
Wenn Du für hWndInsertAfter NULL angibst, solltest Du auch als Flag SWP_NOZORDER angeben!
Also:
SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOZORDER);
-
Hepi schrieb:
Wenn Du für hWndInsertAfter NULL angibst, solltest Du auch als Flag SWP_NOZORDER angeben!
Also:
SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOZORDER);
Hä? Kannst du mir das Nochmal erklärn? Was ist hWndInsertAfter? Und warum "sollte" ich das?
-
joomoo schrieb:
Was ist hWndInsertAfter? Und warum "sollte" ich das?
hWndInsertAfter ist der 2. Parameter, und damit dieser ignoriert wird (sich also die Z-Order nicht ändert) musst du SWP_NOZORDER mitangeben
-
Aso. Was ist die z-order? Ist das wo mein fenster sein soll, also im vordegrund oder hinter nem anderen?
-
Hallo,
ja, das ist ungefähr das, was man sich unter Z-Order vorstellen kann. Genauer kann man sich eine z-Achse eines drei-dimensionalen Raumes vorstellen (daher der Name), diese z-Achse steht quasi senkrecht auf dem Bildschirm, und jedes Fenster hat auf dieser Achse eine gewisse "z-Position", so daß sich Fenster aufgrund ihrer unterschiedlichen z-Position überlappen/überdecken. Dazu solltest du den Abschnitt "Z-Order" unter "Window Relationships" lesen:
MfG