首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Win32在C++中获得非缩放的虚拟桌面大小

Win32在C++中获得非缩放的虚拟桌面大小
EN

Stack Overflow用户
提问于 2022-05-03 15:39:55
回答 1查看 175关注 0票数 2

在C++应用程序上工作,尝试将鼠标从坐标映射到全屏窗口。

使用GetPhysicalCursorPos(&mouse_point);获取鼠标坐标,后者返回相对于原点0、0的坐标。这会导致问题,因为鼠标正在“超出”监视器的范围,因为窗口正在缩小监视器的大小。例如,当它位于右下角时,它返回{3839,1079},但是Windows计算桌面的总大小为3200x1080。(这个例子是两个1080 p显示器,并排,左有100%缩放,右边有150%缩放)

使用以下方法检索虚拟桌面大小:

代码语言:javascript
运行
复制
unsigned int vScreenWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN);
unsigned int vScreenHeight = GetSystemMetrics(SM_CYVIRTUALSCREEN);

但是这是返回一个桌面,其中具有较高DPI的监视器较小,因此对于3840x1080的双1080p监视器配置,它返回3200x1080 (上面的配置)。

我尝试过在96 DPI中使用GetSystemMetricsForDpi (100%),但它返回的结果与上面的相同:

代码语言:javascript
运行
复制
unsigned int vScreenWidth = GetSystemMetricsForDpi(SM_CXVIRTUALSCREEN, 96 /* 100% scaling*/);
unsigned int vScreenHeight = GetSystemMetricsForDpi(SM_CYVIRTUALSCREEN, 96 /* 100% scaling*/);

在上面的混合缩放示例中,上面还返回3200x1080,尽管显式告诉它强制使用100%缩放。

有没有其他方法来获得联合国规模的虚拟桌面大小?

注意,应用程序是,而不是新闻部感知的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-03 17:52:15

多亏了@RaymondChen,我才能在GetSystemMetricsForDpi之前打电话给GetSystemMetricsForDpi来解决这个问题。

它现在返回完整的虚拟桌面大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72101951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档