我遇到的问题是,当工具栏从4k拖动到标准def时,它们会丢失。在200%缩放的桌面(它们只是消失)(从CMFCToolbar派生)上进行监控。这看起来有点像MFC错误,因为我不处理拖动过程,但是在应用程序上。启动它会通过执行此操作来检查Windows是否在桌面上的某处-
int width = GetSystemMetrics(SM_CXVIRTUALSCREEN);
int height = GetSystemMetrics(SM_CYVIRTUALSCREEN);
这使我得到11520(不正确)x 2160(正确)。
我在左边有一个4K显示器,在右边有1080p显示器。桌面缩放比例为200%
对于每台显示器缩放比例,我得到5760 x 2160。该应用程序在4k显示器上。
(在没有DPI支持的情况下,我的分辨率为5760 x1080。这不是告诉我我的主显示器是1920像素吗?)
那么(1)这些API是否存在一个错误,告诉我我的桌面大小? (2)我是否需要深入研究MFC源代码以了解为什么它不能处理从高清拖动到sd屏幕的问题?
答案 0 :(得分:1)
如GetSystemMetrics函数文档中所述:
此API不支持DPI,如果调用此API,则不应使用 线程是每个监视器DPI感知的。对于此的DPI感知版本 API,请参阅GetSystemMetricsForDPI。有关DPI的更多信息 了解,请参阅Windows High DPI文档。
https://docs.microsoft.com/uk-ua/windows/win32/api/winuser/nf-winuser-getsystemmetrics