gpt4 book ai didi

c++ - 如何检测当前屏幕分辨率?

转载 作者:太空狗 更新时间:2023-10-29 23:15:26 24 4
gpt4 key购买 nike

我如何从 Winapi(在 C 或 C++ 中)检测当前屏幕分辨率?

一些背景:

我想启动一个新的 OpenGL 全屏窗口,但希望它以桌面已设置的相同水平和垂直尺寸打开。 (现在每个人都使用 LCD 屏幕,我认为这是获得屏幕原始分辨率的最佳方式。)

我并不迫切需要知道桌面颜色深度,尽管那将是一个不错的收获。

最佳答案

  • 主监视器的大小:GetSystemMetrics SM_CXSCREEN/SM_CYSCREEN(也可以使用GetDeviceCaps)
  • 所有显示器的大小(组合):GetSystemMetrics SM_CX/YVIRTUALSCREEN
  • 主监视器上的工作区大小(屏幕不包括任务栏和其他停靠栏):SystemParametersInfo SPI_GETWORKAREA
  • 特定显示器的尺寸(工作区和“屏幕”):GetMonitorInfo

编辑:重要的是要记住,监视器并不总是从 0x0“开始”,因此仅知道大小不足以定位窗口。您可以使用 MonitorFromWindow 找到您的窗口所在的监视器,然后调用 GetMonitorInfo

如果您想走低级路线或更改分辨率,您需要使用 EnumDisplayDevices、EnumDisplaySettings 和 ChangeDisplaySettings(这是获得刷新率 AFAIK 的唯一方法,但 GetDeviceCaps 会告诉您颜色深度)

关于c++ - 如何检测当前屏幕分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com