对于虚假显示,ChangeDisplaySettingsEx失败并显示BAD_MODE

时间:2017-11-06 13:09:26

标签: c++ winapi operating-system

我使用DisplaySwitch.exe / extend命令创建虚假显示,然后尝试使用以下代码更改此显示的分辨率。

DISPLAY_DEVICE display;
display.cb = sizeof(DISPLAY_DEVICE);
EnumDisplayDevices(NULL, 1, &display, EDD_GET_DEVICE_INTERFACE_NAME);
DEVMODE dvMode;
ZeroMemory(&dvMode, sizeof(DEVMODE));
dvMode.dmSize = sizeof(DEVMODE);
dvMode.dmPelsHeight = 1080;
dvMode.dmPelsWidth = 1920;
dvMode.dmBitsPerPel = 32;
dvMode.dmFields = (DM_BITSPERPEL|DM_PELSWIDTH | DM_PELSHEIGHT);
long value = ChangeDisplaySettingsEx(display.DeviceName, &dvMode, NULL, CDS_UPDATEREGISTRY | CDS_RESET, NULL);

此代码适用于我的笔记本显示,但它总是返回扩展的DISP_CHANGE_BADMODE。返回的DISPLAY_DEVICE似乎有效,因为EnumDisplaySettings返回正确的当前分辨率。 如果我使用窗口中的调整屏幕分辨率,一切都按预期工作。

0 个答案:

没有答案