获取窗口客户区的宽度和高度

时间:2015-10-06 22:41:13

标签: c winapi

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获取宽度和高度的一般示例,或者我可能遗漏了某些内容!

1 个答案:

答案 0 :(得分:3)

您提供的示例是GetWindowRect而不是GetClientRect。因此返回屏幕坐标而不是客户端坐标。因此,假设左上角为0,0是错误的。

因此请注意,您提供的代码会计算窗口宽度和高度,而不是客户区宽度和高度。

如果您想要客户区的尺寸,请改为调用GetClientRect。并且,正如您所观察到的,返回的矩形将在左上角为0,0。