c++ - WinAPI:创建具有指定客户区大小的窗口

标签 c++ winapi window createwindowex

我想知道如何使用具有特定客户区大小的 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);

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

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

最佳答案

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

关于c++ - WinAPI:创建具有指定客户区大小的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4843806/

相关文章:

c++ - 自动化 C++ 类的 pimpl'ing——有简单的方法吗?

windows - 内存映射文件可选写入可能吗?

jquery - 单击事件后继续调整 div 大小

java - windowActivated 和 windowFocusGained 之间的区别

qt - 父级之上的无模式 Qt 窗口,但不在其他应用程序之上

c++ - 使用 std::is_same,为什么我的函数仍然不能用于 2 种类型

c++ - 此代码 O(R*C) 的最坏时间情况如何?

c++ - 是否可以在没有折线近似的情况下渲染贝塞尔曲线?如果是这样,如何?

c++ - 关闭控制台窗口时优雅退出

c++ - 使用 Win32 API 获取 Windows 屏幕保护程序超时