我们如何获得窗口的边框大小?

Posted

技术标签:

【中文标题】我们如何获得窗口的边框大小?【英文标题】:How do we get the border size of a window? 【发布时间】:2013-05-24 00:30:23 【问题描述】:

我正在绘制一个矩形(在 OpenGL 中),角基于光标位置。我将像素位置修改为浮动位置,但我需要宽度和高度(保存在某处)。

所以我做了一些测试,在一个 1024x512 的窗口上,左上角确实是 (0,0) 但下角是 (1007,473) 或附近的东西。

现在它工作正常,但如果窗口调整大小,那么它显然不再工作,所以这是我的问题:

如何获取边框大小? 这样我认为我可以从窗口大小中减去它并为我的光标绘制矩形获得正确的位置。

【问题讨论】:

您使用的是什么平台和窗口处理程序? 【参考方案1】:

在 Windows 上,您可以使用 GetWindowRectGetClientRect

RECT windowRect;
GetWindowRect(hwnd, &windowRect);

RECT clientRect;
GetClientRect(hwnd, &clientRect);

int borderWidth = ((windowRect.right - windowRect.left) - (clientRect.right -clientRect.left))/2;

虽然GetClientRect 应该给你窗口的内部宽度,这对你来说应该足够了。

int innerWidth = clientRect.right - clientRect.left;

【讨论】:

甜蜜!我以前见过,但解释得不好。完美运行!

以上是关于我们如何获得窗口的边框大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取窗口的真实边框大小

调整大小时,使用虚线边框使窗口透明

VC:如何实现窗口和窗口内容在鼠标拖动下改变大小

c# WINFORM窗体如何设置才可以不能随意拖动大小

如何将图形保持在主窗口的中心

调整大小时创建自定义窗口边框边缘消失