Hallo Community,
ich spiele zur Zeit ein wenig mit der Windows API herum und wollte mir ein Fenster mit folgenden Eigenschaften erstellen:
- Fenstergröße lässt sich NICHT zur Laufzeit verändern
- Einen Rand, sowie eine Fensterleiste mit "Minimieren" und "Schließen" Knopf (kein Maximieren)
- Vorallem möchte ich einen Client-Bereich mit im voraus festgelegter Größe
Der letzte Punkt ist auch leider der Problematische. Ich habe schon die Funktion
AdjustWindowRect() gefunden, aber bekomme trotzdem nicht meinen gewünschten Client-Bereich. Zum testen soll er 1000x1000 Pixel groß sein.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
|
RECT WindowRect = {};
WindowRect.left = 500;
WindowRect.top = 500;
WindowRect.bottom = 1000;
WindowRect.right = 1000;
BOOL Test = AdjustWindowRect (&WindowRect, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX | WS_VISIBLE, 0);
|
Die übergebenen Stile für AdjustWindowRect zeigen nur meinen letzten Versuch. Zu Beginn hatte ich nur WS_CAPTION übergeben.
Mein Fenster erstelle ich wie folgt:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
HWND WindowHandle = CreateWindowA (
"Window Class",
"Test",
WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX | WS_VISIBLE,
WindowRect.left, WindowRect.top, WindowRect.right, WindowRect.bottom,
0,
0,
Window,
0);
|
Ich habe das ganze auch schon mit und ohne WS_OVERLAPPED versucht.
Und die Größe des Client-Bereichs überprüfe ich anschließend mit
|
C-/C++-Quelltext
|
1
2
|
RECT TestClientRect;
GetClientRect (WindowHandle, &TestClientRect);
|
Wenn ich mir TestClientRect im Visual Studio Debugger anschaue zeigt er mir für linksoben 0, 0 an und für rechtsunten 992, 970. Nun frage ich mich, ob ich zum Einen die richtigen Angaben gemacht habe und zum Anderen, ob ich das Ergebnis richtig deute.
Ich hoffe, jemand hier hat mehr Ahnung von der Windows API als ich und kann mir helfen.