Fensterstyles setzen?
-
Hi!
Hmmm ich habe ein Problem, und zwar will ich das Fensterstyle eines Fensters verändern. Ok das sollte eigentlich mit SetWindowLong und ein anschliessendes SetWindowPos gehen, aber irgendwie stürzt bei mir das Fenster immer ganz ab.Könnt ihr mir helfen?
Das habe ich da immoment stehen:
SetWindowLong(Win[1], GWL_STYLE, WS_CAPTION ); SetWindowPos(Win[1], HWND_TOP, 0, 0, 0, 0, SWP_FRAMECHANGED );
auch sowas wie
SetWindowLong(Win[1], GWL_STYLE, WS_SYSMENU | WS_CAPTION ); SetWindowPos(Win[1], HWND_TOP, 0, 0, 0, 0, SWP_FRAMECHANGED );
geht net.
Gruss,code_pilot
-
LONG lStyle = GetWindowLong( Win[l], GWL_STYLE); SetWindowLong(Win[1], GWL_STYLE, lStyle|WS_CAPTION );
Du darfst zu 90% ja schliesslich nicht alle der Styles weglassen, welche standardmässig gesetzt sind. Das gilt vor allem für WS_CHILD.
-
Hi!
No, geht nich!Das Fenster schmiert zwar nicht mehr ab, aber es hat sich gar nicht verändert. Denn wenn ich das aktuelle Style übernehme und einfach nur WS_CAPTION hinzuadde kommt doch hinten gar nix raus!
Das Fenster ist wiefolgt definiert:Win[1] = CreateWindowEx(0, szClassName, "Windows App2", WS_OVERLAPPEDWINDOW, 200, 200, 544, 375, HWND_DESKTOP,NULL,hInstance,NULL);
Hmmmm ...
-
Hmmm, habe nochwas enddeckt...
Also, erstmal habe ich jetzt
SetWindowPos(Win[1], HWND_TOP, 0, 0, 0, 0, SWP_FRAMECHANGED );
geändert auf
SetWindowPos(Win[1], HWND_TOP, 100, 100, 100, 100, SWP_FRAMECHANGED );
Zwar funktioniert sowas wie
SetWindowLong(Win[1], GWL_STYLE, WS_OVERLAPPED | WS_CAPTION );
immer noch nicht, wohl aber
SetWindowLong(Win[1], GWL_EXSTYLE, WS_EX_TOOLWINDOW);
Seltsam seltsam ...
-
WS_OVERLAPPEDWINDOW besitzt ja auch schon WS_CAPTION. Ein Hinzufügen des gleichen Flags nochmal bringt dann natürlich nix.
-
OK aber was muss ich dann setzen?
Ich möchte nämlich ein Fesnter haben, das nur einen schliessen-Button und eine Titelleiste hat, jedoch keine Minimieren- oder Maximieren-Box und keinen skalierbaren Rahmen.Wie kriege ich das hin mit SetWindowLong() ?
-
LONG lStyle = GetWindowLong( Win[l], GWL_STYLE); SetWindowLong(Win[1], GWL_STYLE, lStyle&~(WS_CAPTION|WS_THICKFRAME|WS_MINIMIZEBOX) );
-
Hi!
Hey cool was man hier nicht noch alles lerntdein Beispiel ergab zwar ein Fenster ohne Titel
aber so ging es dann:
SetWindowLong(Win[1], GWL_STYLE, lStyle&~(WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX) );
also nochmals besten dank
:p