这是我的代码
DEVMODE dm;
int index = 0;
while(0 != EnumDisplaySettings(NULL, index++, &dm)){
qDebug() << index-1 << dm.dmPelsWidth << dm.dmPelsHeight;
Resolution* resolution = new Resolution(dm.dmPelsWidth, dm.dmPelsHeight);
}
输出
0 320 200
1 320 200
2 320 200
3 320 240
4 320 240
5 320 240
6 400 300
7 400 300
8 400 300
9 512 384
10 512 384
11 512 384
12 640 400
13 640 400
14 640 400
15 640 480
.....
25 640 480
26 640 480
27 800 600
.....
41 800 600
42 1024 768
50 1024 768
51 1152 864
....
62 1152 864
63 1280 600
我得到的只有一件事是320x200
,甚至不是1600x900
,这是我目前的决议。
答案 0 :(得分:1)
EnumDisplaySettings
为您提供屏幕参数的所有可能组合。
诀窍是知道要注意DEVMODE
结构的哪些字段。
这些重要字段是:
例如,以下是我的显示器的前14个合法设置:
dmPelsWidth dmPelsHeight dmBitsPerPixel dmDisplayFrequence dmDisplayFixedOutput 640 480 8 59 Default 640 480 8 59 Stretch 640 480 8 59 Center 640 480 8 60 Default 640 480 8 60 Stretch 640 480 8 60 Center 640 480 8 75 Default 640 480 16 59 Default 640 480 16 59 Stretch 640 480 16 59 Center 640 480 16 60 Default 640 480 16 60 Stretch 640 480 16 60 Center 640 480 16 75 Default (... etc ...)
答案 1 :(得分:0)
你需要循环调用它。我的感觉是用if
替换while
会立即解决这个问题。