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

我可以使用GetClientRect和GetWindowRect Win32调用获取windows整个区域的坐标,以及客户区的坐标。 我的问题是GetClientRect总是返回左上角的0,0。 如何确定实际客户区域相对于窗口rect的含义?

您可以使用ClientToScreen获取屏幕坐标中左上角(0,0)点的坐标。 GetClientRect返回的RECT适合于让您进入右下角(只需添加到ClientToScreen设置的POINT)。

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

如果您正在使用WinForms,那么您可以使用PointToScreen而不是ClientToScreen来提供Reed Copsey提出的解决方案。

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

使用AdjustWindowRectEx()可以很容易地找到窗口rect(带边框等)和客户端rect(内部边框)之间的关系。 获取窗口的窗口样式和样式,并调用该函数,以查看每边有多少边框。