我可以使用GetClientRect和GetWindowRect Win32调用来获取窗口整个区域的坐标以及客户区的坐标。我的问题是GetClientRect总是返回0,0左上角。我如何确定实际的客户端区域与窗口矩形的关系?如何获取窗口客户区的坐标
回答
您可以使用ClientToScreen来获取屏幕左上角(0,0)点的坐标坐标。由GetClientRect返回的RECT将适合让你在右下角(只需添加到由ClientToScreen设置的POINT)。
使用ClientToScreen将客户端坐标转换为屏幕坐标。窗口矩形(GetWindowRect)已经在屏幕坐标中,并且包括非客户区域(边框,标题等)
,这是我失踪的关键一点; *并包括非客户区(边界,标题等)*谢谢! – nspire 2012-07-11 18:44:28
您也可以使用MapWindowPoints函数将整个RECT一次转换为屏幕坐标。
这可以在Control.RectangleToScreen和它的表亲Control.RectangleToClient中找到。 – 2011-09-15 16:19:55
如果您正在使用WinForms,那么您可以使用PointToScreen而不是ClientToScreen作为Reed Copsey提出的解决方案。
我喜欢iyt比API function.thx更好。 – ChadD 2011-03-17 11:19:54
使用AdjustWindowRectEx()最容易找到窗口矩形(带边框等)和客户端矩形(内部边框)之间的关系。获取窗口的样式和样式,并调用该函数,查看每边有多少边框。
- 1. 获取窗口(客户端坐标)为python窗口
- 2. 通过坐标获取窗口
- 3. 如何将窗口坐标转换为2D OpenGL ES坐标?
- 4. 如何设置Win32窗口的非客户区大小(本地)
- 5. 如何删除窗口客户区的边框?
- 6. 获取插入点的窗口坐标 - Cocoa
- 7. 如何获得窗口客户区域的每个像素的RGB值数组
- 8. 如何获取vtkboxwidget坐标
- 9. 如何获取UIImageView坐标?
- 10. 如何获取我的谷歌地图窗口的边界框坐标
- 11. 获取某个区域内的坐标
- 12. C++ WINAPI:客户区父窗口模糊子选项卡窗口
- 13. 获取区域内的坐标坐标 - Google地图
- 14. 获取鼠标坐标相对于jQuery对话窗口而不是视口?
- 15. 在C中获取活动窗口坐标和高度宽度#
- 16. 获取包含非客户区域的窗体的总高度?
- 17. 获取窗口标题?
- 18. 整个窗口上的鼠标坐标
- 19. 如何将窗口坐标转换为标准化的设备坐标?
- 20. Python Open CV - 获取地区坐标
- 21. 如何获取sikuli区域内图像的坐标?
- 22. 如何重用WPF客户窗口
- 23. QGraphicsView:如何高效地获取QGraphicsItems的视口坐标?
- 24. 如何获取鼠标坐标和.push()?
- 25. 将鼠标光标隐藏在窗口中的特定客户区域
- 26. 如何在控制台窗口中找到光标的坐标?
- 27. 如何获得客户端的时区
- 28. 如何获取用户点击/触摸相对于窗口的x和y坐标?
- 29. 如何获取Gridlayout的坐标
- 30. 如何获取图像的坐标/ JLabel?
如果您使用WinForms(并根据您的意见,看起来像你),你不应该为此使用PInvoke。使用'Control.ClientRectangle'和'Control.Bounds'。 – 2011-09-15 16:12:28
我需要使用PInvoke,因为我在另一个应用程序中获取窗口的坐标。 – Jeremy 2012-09-27 03:46:54