ClientSize
-
Hi,
ich möchte ein Fenster mit einer ClientSize der Größe width x height haben. Also errechne ich mir mit AdjustWindowRect aus der gewünschten ClientSize die Fenstergröße:
RECT size; size.top = 0; size.left = 0; size.bottom = height; size.right = width; DWORD style = WS_SYSMENU | WS_BORDER | WS_CAPTION | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; AdjustWindowRect(&size, style, FALSE); int windowWidth = size.right - size.left; int windowHeight = size.bottom - size.top; int windowLeft = GetSystemMetrics(SM_CXSCREEN) / 2 - windowWidth / 2; int windowTop = GetSystemMetrics(SM_CYSCREEN) / 2 - windowHeight / 2; windowHandle = CreateWindow("Window", title, WS_OVERLAPPEDWINDOW, windowLeft, windowTop, windowWidth, windowHeight, NULL, NULL, GetModuleHandle(NULL), this); // RECT rect; // GetClientRect(windowHandle, &rect);Nur wenn ich jetzt die ClientSize des Fenster wieder auslese (wie unten in dem auskommentierten Code), dann krieg ich andere Werte für Breite und Höhe als sie in width und height stehen. z.B: bei width=640 und height=480 bekomme ich rect.bottom=478 und rect.right=638.
Wieso stimmen die Werte nicht überein und wie fix ich das?
-
Vielleicht weil Du nicht den gleichen Style benutzt:
DWORD style = WS_SYSMENU | WS_BORDER | WS_CAPTION | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; AdjustWindowRect(&size, style, FALSE); ... windowHandle = CreateWindow("Window", title, WS_OVERLAPPEDWINDOW, windowLeft, windowTop, windowWidth, windowHeight, NULL, NULL, GetModuleHandle(NULL), this);Du könntest beim CreateWindow "style" übergeben.
-
Ich denke auch, dass in beiden Fällen der selbe Stil übergeben werden muss.
-
Aaaaargh! Manchmal hat man echt Tomaten auf den Augen. Genau das wars! Vielen Dank
