我试图使用ChangeDisplaySettings来更改默认显示设备的桌面分辨率。然而,当我执行我的函数(set_resolution)时,ChangeDisplaySettings总是成功的,尽管我的桌面解析没有明显的改变(返回的代码总是DISP_CHANGE_SUCCESSFUL)。
我已经尝试了dwFlags的每个值,但是对于每个值,我得到了相同的结果。我尝试了多个决议,我的显示器应该支持,但我得到了同样的结果。我的显示器是16:9,原版1920x1080。例如,我尝试过1280x720。
我尝试在创建窗口的同时执行set_resolution,并且尝试在每个WM_ACTIVATE事件上执行函数。
代码语言:javascript运行复制LONG set_resolution(uint32_t width, uint32_t height)
{
DEVMODE dm;
dm.dmPelsWidth = width;
dm.dmPelsHeight = height;
dm.dmBitsPerPel = 32;
dm.dmDisplayFrequency = 60;
dm.dmFields =
DM_PELSWIDTH |
DM_PELSHEIGHT |
DM_BITSPERPEL |
DM_DISPLAYFREQUENCY;
DWORD flags =
0;
//CDS_FULLSCREEN;
//CDS_GLOBAL;
//CDS_NORESET;
//CDS_RESET;
//CDS_SET_PRIMARY;
//CDS_TEST;
//CDS_UPDATEREGISTRY;
LONG code = ChangeDisplaySettings(&dm, flags);
if (code == DISP_CHANGE_SUCCESSFUL)
{
printf("Display change successful [%dx%d]: %d", width, height, flags);
}
else
{
printf("Display change failed [%dx%d]: %d", width, height, code);
}
return code;
}