开发者

WinAPI: Create a window with a specified client area size

开发者 https://www.devze.com 2023-02-08 01:18 出处:网络
I was wondering how can I create a window using Win32 API with a specific client area size. When trying to create a window using the following piece of code, the entire window is 640x480, with the wi

I was wondering how can I create a window using Win32 API with a specific client area size.

When trying to create a window using the following piece of code, the entire window is 640x480, with the window's chrome taking some of the client area:

HWND       hWnd;
WNDCLASSEX WndClsEx;
ZeroMemory(&WndClsEx, sizeof(WNDCLASSEX));

WndClsEx.cbSize        = sizeof(WNDCLASSEX);
WndClsEx.style         = CS_HREDRAW | CS_VREDRAW;
WndClsEx.lpfnWndProc   = DefWindowProc开发者_如何学Go;
WndClsEx.cbClsExtra    = 0;
WndClsEx.cbWndExtra    = 0;
WndClsEx.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
WndClsEx.hCursor       = LoadCursor(NULL, IDC_ARROW);
WndClsEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClsEx.lpszMenuName  = NULL;
WndClsEx.lpszClassName = TEXT("Title");
WndClsEx.hInstance     = hInstance;
WndClsEx.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

RegisterClassEx(&WndClsEx);

hWnd = CreateWindowEx(  NULL,
            TEXT("Title"),
            TEXT("Title"),
            WS_OVERLAPPEDWINDOW,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            640,
            480,
            NULL,
            NULL,
            hInstance,
            NULL);

Assuming simple math won't quite solve the problem, how do I take the chrome size into account?

Note: I'm using SDL after creating the window, but I'm guessing it's bound to the window size and makes no difference to its size.


You can use the AdjustWindowRect or AdjustWindowRectEx function to calculate the window size given a desired client area size.

0

精彩评论

暂无评论...
验证码 换一张
取 消