WinAPI: Create a window with a specified client area size

与世无争的帅哥 提交于 2019-12-04 08:14:45

问题


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;
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.


回答1:


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



来源:https://stackoverflow.com/questions/4843806/winapi-create-a-window-with-a-specified-client-area-size

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!