我试图使用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;

}