【发布时间】:2011-02-07 11:50:07
【问题描述】:
我遇到了一个有趣的问题。至少在 Vista 中,当桌面 DPI 设置未设置为 100% 时,getSystemMetrics(SM_CXSCREEN) 返回的值不正确。例如,我在 1366x768 屏幕上尝试了 150%,getSystemMetrics() 返回 911 而不是 1366(和 1366 / 1.5 ~ 911)
根据 MSDN,getSystemMetrics(SM_CXSCREEN) 返回像素,所以我认为这个值不会受到 DPI 设置的影响 - 但确实如此。那么有没有更安全的方法来找出真实的、未缩放的屏幕分辨率?
【问题讨论】:
-
您从哪种应用程序中调用它?我刚刚尝试从 C 调用该 API,并在 Vista Business 上以不同的 DPI 设置和不同的分辨率运行它,它在每个实例中都正确报告了像素。这是一个 vmware 映像,所以可能会导致差异。
-
这是一个普通的、普通的 C++ 应用程序。没有标准框架,只有 WinMain。
标签: winapi dpi screen-resolution