C找出显卡支持的分辨率

前端之家收集整理的这篇文章主要介绍了C找出显卡支持的分辨率前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个小程序让我切换我的分辨率,因为我的投影机无法处理与我的屏幕相同的分辨率.我已经知道如何使用 Windows API设置屏幕分辨率.以及使用Windows API或QT4工具包读取当前的分辨率.我的问题是我想要一个菜单​​的所有不同的分辨率支持的屏幕和显卡.这个程序将被分发,所以我需要程序实际上与图形卡通信,以找出它支持什么.我想使用的唯一的API是Windows API或QT4工具包,但我不认为QT4会这样做,除非您以奇怪的方式使用图形部件.

我很确定这是可能与WINDOWS API.我只是不知道该怎么做.

哦,请给我一些松懈,我熟悉QT4和C,但我通常是一个Linux程序员,我正在写给别人.我用Windows API做的唯一的事情就是做一个消息框,设置背景,并使用系统变量.所以请简单说明一下这个过程.请不要只是发布到msdn的链接,我讨厌他们的文档,我讨厌微软.我每年使用Windows也许两次.

解决方法

在一般情况下,以下内容可能适用于您
DEVMODE dm = { 0 };
dm.dmSize = sizeof(dm);
for( int iModeNum = 0; EnumDisplaySettings( NULL,iModeNum,&dm ) != 0; iModeNum++ ) {
  cout << "Mode #" << iModeNum << " = " << dm.dmPelsWidth << "x" << dm.dmPelsHeight << endl;
  }

这应该打印出运行.exe的当前显示的所有支持的分辨率.假设你没有处理多显示图形卡,这应该是正常的.否则,您必须在每个显示器上使用EnumDisplayDevices循环.

一旦找出你想要的分辨率,你可以使用’ChangeDisplaySettingsEx’来将显示改变为所需的模式.

使用DirectX是可能的,但我不会推荐它,因为代码更复杂(必须初始化DirectX和使用COM指针),除非您打算实际使用DirectX不仅仅是确定显示分辨率.

猜你在找的C&C++相关文章