【发布时间】:2014-07-03 00:18:07
【问题描述】:
我试图在 MSDN 上找到这个问题的答案,但我没有清楚地了解它是如何工作的。我所有的工作都在 Windows 8.1 上。
这是我的问题。我正在使用具有 3200x1800 高分辨率显示器的笔记本电脑。我一直在使用 EnumDisplayMonitors 来获取屏幕的边界矩形。
如果我的显示设置是默认设置,这似乎可以正常工作。但是我注意到,当我更改窗口显示设置以提供更大的文本时,EnumDisplayMonitor 返回的分辨率会发生变化。而不是获得 3200x1800,我将获得 2133x1200。
我猜是因为我要求更大的文本,Windows 选择将屏幕表示为更小的分辨率。
如果我查看虚拟屏幕属性,似乎所有内容都以我屏幕的实际坐标表示,即 3200x1800。但是用于获取窗口和监视器矩形的 API 似乎是在这个“其他”坐标空间上运行的。
是否有任何文档/Windows API 来处理这些“其他坐标”和“虚拟坐标”之间的转换?即,如果我希望 EnumDisplayMonitor 或 GetMonitorInfo 给我真实的屏幕坐标,我该如何将 2133x1200 转换为 3200x1800?
【问题讨论】:
标签: windows coordinates