代码之家  ›  专栏  ›  技术社区  ›  Jeremy

如何获取窗口客户端区域的坐标

  •  11
  • Jeremy  · 技术社区  · 15 年前

    我可以使用GetClientRect和GetWindowRect Win32调用获取windows整个区域的坐标,以及客户机区域的坐标。我的问题是GetClientRect对于左上角总是返回0,0。如何计算出相对于windowrect的实际客户机区域是什么?

    5 回复  |  直到 15 年前
        1
  •  18
  •   Reed Copsey    15 年前

    ClientToScreen 获取屏幕坐标中左上角(0,0)点的坐标。GetClientRect返回的RECT将适合于获得右下角(只需添加到ClientToScreen设置的点)。

        2
  •  5
  •   dthorpe    15 年前

    使用ClientToScreen将客户机坐标转换为屏幕坐标。window rect(GetWindowRect)已经在屏幕坐标中,并且包括非客户区域(边框、标题等)

        3
  •  3
  •   Stan    14 年前

    如果您正在使用WinForms,那么您可以使用 PointToScreen

        4
  •  2
  •   SMUsamaShah    9 年前

    window rect(带边框等)和client rect(内边框)之间的关系最容易通过 AdjustWindowRectEx() . 获取窗口的样式和ex样式,并调用该函数,以查看每侧有多少边框。

        5
  •  0
  •   Ben Voigt    15 年前

    您也可以使用 MapWindowPoints 函数将整个RECT一次转换为屏幕坐标。