如何获得窗口调整角的大小(以像素为单位)

时间:2013-07-17 13:40:41

标签: windows winapi

有没有办法(API)获得调整大小角的像素大小(垂直和水平)?

我指的是窗口每个角落的区域,您可以使用鼠标同时在两个方向(从左到右和从上到下)调整窗口大小。当您将鼠标光标悬停在窗口的角上并且鼠标光标是对角线调整大小光标时,您将知道您的鼠标光标在那里。

谢谢

编辑: 示例:将鼠标悬停在相当大的窗口的右边缘上。从窗口的中间(垂直)开始,沿着边缘向上移动鼠标,直到水平尺寸光标变为对角线尺寸光标。如何通过向操作系统询问光标变化时该位置的距离是从窗口顶部开始的。

2 个答案:

答案 0 :(得分:2)

我建议使用滚动条的大小。使用SM_CYHSCROLL和SM_CXVSCROLL调用GetSystemMetrics。也可以结合SM_CYSIZEFRAME和SM_CXSIZEFRAME大小。

但我认为更好的价值是使用状态栏的高度。但是,即使Microsoft Windows似乎也使用了一些固定值,如屏幕截图所示。

enter image description here

答案 1 :(得分:1)

比较GetClientRectGetWindowRect的结果会告诉您窗口每个边缘的非客户(边框)区域有多宽。

如果您担心尺寸调整可能不是全部(尤其是顶部),或者您想要区分对角线尺寸区域和边缘尺寸区域,您可以采取步骤1中发现的坐标并通过他们到SendMessage(WM_NCHITTEST)请参阅its documentation了解各种返回代码。重复发送此消息没有问题 - 它被设计为每次鼠标移动事件都被调用,因此非常快。