Client Window
-
Hi,
ich hab ein Fenster und möchte das das Client genau 800x600 groß ist unabhängig von der Fenstergröße.
Wie kann ichs machen das die Fenstergröße sich anpasst und das Client immer 800x600 groß ist?
-
Du kannst ja mit MoveWindow([...]); die Fenstergröße anpassen. Mit LOWORD(lParam) und HIWORD(lParam) kannst du die aktuelle Fenstergröße abfragen und einarbeiten. Dein Client-Window brauchst du ja bloß immer mit 800x600 angegeben, also kein Problem (hoffe ich doch).
-
*** schrieb:
das das Client genau 800x600 groß ist unabhängig von der Fenstergröße.
Wie soll das denn gehen? Ein Fenster besteht nunmal aus Border, Titelleiste und Client-Bereich. Was soll denn da sein, wo weder Border noch Titelleiste noch Client-Bereich ist???
-
er könnte doch bsp 800*600 plus höhe title bar usw nehmen und das ergibt dann die fenstergrösse die man bei movewindow angibt.
an die werte kommst du mit http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemmetrics.asp
-
Achso. Ich glaub, jetzt hab ich geschnallt, was er will. Dass das Fenster immer gleich groß bleibt und die Client-Area 800x600 ist. Das würde ich nicht über GetSystemMetrics machen, sondern so:
// Fenster (hwnd) ist bereits erstellt mit willkürlicher Größe RECT rcClient, rcWindow; GetWindowRect(hwnd, &rcWindow); GetClientRect(hwnd, &rcClient); int diff_x = (rcWindow.right - rcWindow.left) - rcClient.right; int diff_y = (rcWindow.bottom - rcWindow.top) - rcClient.bottom; MoveWindow(hwnd, 0, 0, 800 + diff_x, 600 + diff_y, TRUE);Man kann mit den Styles für das Fenster erreichen, dass es nicht in der Größe vom User verändert werden kann.
-
viele wege führen nach rom
aber ehrlich gesagt würde ich deinen favorisieren, da er wesentlich kürzer ist als mein weg.
-
Und er ist vor allem sicher.
-
WebFritzi schrieb:
Und er ist vor allem sicher.
erklärung?
-
Naja, wer weiß... vielleicht baut man ja z.B. noch ein Menu ein. Ein Menu wird nicht in die Client-Area mit eingerechnet. Außerdem: Ich kenne mich jetzt mit dem genauen Aufbau eines Fensters nicht SOOO genau aus, aber ich glaube, es gibt da noch andere Arten von Borders. Wenn man die nicht mit einrechnet, kommt man wieder in Teufels Küche.