我可以使用GetClientRect和GetWindowRect Win32调用获取windows整个区域的坐标,以及客户区的坐标。我的问题是GetClientRect总是返回左上角的0,0。如何确定实际客户区域相对于窗口rect的含义?
答案 0 :(得分:18)
您可以使用ClientToScreen获取屏幕坐标中左上角(0,0)点的坐标。 GetClientRect返回的RECT适合您到右下角(只需添加到ClientToScreen设置的POINT)。
答案 1 :(得分:5)
使用ClientToScreen将客户端坐标转换为屏幕坐标。窗口rect(GetWindowRect)已经在屏幕坐标中,包括非客户区域(边框,标题等)
答案 2 :(得分:3)
如果您正在使用WinForms,那么您可以使用PointToScreen代替ClientToScreen来获取Reed Copsey提出的解决方案。
答案 3 :(得分:1)
使用AdjustWindowRectEx()最容易找到窗口rect(带边框等)和客户端rect(内部边框)之间的关系。获取窗口的窗口样式和样式,并调用该函数,以查看每边有多少边框。
答案 4 :(得分:0)
您还可以使用MapWindowPoints功能将整个RECT一次转换为屏幕坐标。