【问题标题】:WinAPI: Create a window with a specified client area sizeWinAPI:创建具有指定客户区大小的窗口
【发布时间】:2011-06-18 03:30:18
【问题描述】:

我想知道如何使用具有特定客户区大小的 Win32 API 创建一个窗口。

当尝试使用以下代码创建窗口时,整个窗口为 640x480,窗口的镶边占据了一些客户区:

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

假设简单的数学运算并不能完全解决问题,我该如何考虑镀铬尺寸?

注意:我是在创建窗口后使用 SDL,但我猜它是与窗口大小绑定的,对其大小没有影响。

【问题讨论】:

    标签: c++ winapi window createwindowex


    【解决方案1】:

    您可以使用AdjustWindowRectAdjustWindowRectEx 函数来计算给定所需客户区大小的窗口大小。

    【讨论】:

    • 修正,根据客户区坐标计算窗口区坐标。
    • A related answer 关于为什么 AdjustWindowRect 不能与 WS_OVERLAPPED 一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多