此question中接受的答案说明了如何获取窗口客户区的宽度和高度:
RECT rect; if(GetWindowRect(hwnd, &rect)) { int width = rect.right - rect.left; int height = rect.bottom - rect.top; }
但我不明白为什么不做以下事情:
RECT rect;
if(GetWindowRect(hwnd, &rect))
{
int width = rect.right;
int height = rect.bottom;
}
由于GetClientRect()的文档说明如下:
因为客户坐标是相对于a的左上角 窗口的客户区,左上角的坐标是 (0,0)。
我的猜测是,这只是如何从RECT
获取宽度和高度的一般示例,或者我可能遗漏了某些内容!
答案 0 :(得分:3)
您提供的示例是GetWindowRect
而不是GetClientRect
。因此返回屏幕坐标而不是客户端坐标。因此,假设左上角为0,0是错误的。
因此请注意,您提供的代码会计算窗口宽度和高度,而不是客户区宽度和高度。
如果您想要客户区的尺寸,请改为调用GetClientRect
。并且,正如您所观察到的,返回的矩形将在左上角为0,0。