::GetSystemMetrics (SM_CYBORDER)
…返回 1,我知道标题栏比一个像素高:/
我也试过:
矩形 r;
r.left = r.top = 0; r.right = r.bottom = 400;
::AdjustWindowRect (& r, WS_OVERLAPPED, FALSE);
_bdW = (uword)(r.right - r.left - 400);
_bdH = (uword)(r.bottom - r.top - 400);
但是边界 w,h 回到 0。
在我的 WM_SIZE 处理程序中,我需要确保窗口的高度以“步长”变化,例如,一个全新的文本行可以适合窗口,底部没有“垃圾部分行空间”。
但是 ::MoveWindow 需要添加边框空间的尺寸。
以前一定有人这样做过…感谢您的帮助:)
原文由 Stephen Hazel 发布,翻译遵循 CC BY-SA 4.0 许可协议
GetWindowRect 和 GetClientRect 函数可用于计算所有窗口边框的大小。
Suite101 有一篇关于 调整窗口大小和将客户区保持在已知大小 的文章。
这是他们的示例代码: