桌面扩展时使用ChangeDisplaySettings更改分辨率会导致黑屏
我使用此功能更改分辨率: 变更决议(NULL,1440900) 这很有效 扩展桌面时会出现问题(按Windows键+p并选择“扩展”)。然后,当桌面被扩展(非精神显示)时,在使用我的ChangeResolution后,只要我的函数调用ChangeDisplaySettings(&oDEVMODE,bUpdateReg?CDS_UPDATEREGISTRY:0),屏幕就会变黑 返回屏幕的方法是再次按Windows键+p,然后按Enter键 (因为屏幕是黑色的,所以你看不到自己在做什么) 无论我下了什么新决心,它都会变黑 如果我尝试在扩展模式下更改分辨率,但从控制面板更改分辨率效果很好,因此问题在于我的功能 我认为这是因为当我更改默认屏幕的分辨率(NULL)时,我还需要更改虚拟屏幕的某些内容,但我不确定 有什么帮助吗桌面扩展时使用ChangeDisplaySettings更改分辨率会导致黑屏,c,windows,winapi,C,Windows,Winapi,我使用此功能更改分辨率: 变更决议(NULL,1440900) 这很有效 扩展桌面时会出现问题(按Windows键+p并选择“扩展”)。然后,当桌面被扩展(非精神显示)时,在使用我的ChangeResolution后,只要我的函数调用ChangeDisplaySettings(&oDEVMODE,bUpdateReg?CDS_UPDATEREGISTRY:0),屏幕就会变黑 返回屏幕的方法是再次按Windows键+p,然后按Enter键 (因为屏幕是黑色的,所以你看不到自己在做什么) 无论我下了
谢谢 你还在面对这个问题吗?你还在面对这个问题吗?
bool ChangeResolution(WCHAR *sDeviceName, int iNewW, int iNewH)
{
DEVMODE oDEVMODE = { 0 };
oDEVMODE.dmSize = sizeof(DEVMODE);
EnumDisplaySettings(sDeviceName, ENUM_CURRENT_SETTINGS, &oDEVMODE);
oDEVMODE.dmPelsWidth = iNewW;
oDEVMODE.dmPelsHeight = iNewH;
bool bUpdateReg = true;
LONG lRet = ChangeDisplaySettings(&oDEVMODE, CDS_TEST | CDS_UPDATEREGISTRY);
if (lRet != DISP_CHANGE_SUCCESSFUL)
{
lRet = ChangeDisplaySettings(&oDEVMODE, CDS_TEST);
bUpdateReg = false;
}
if (lRet == DISP_CHANGE_SUCCESSFUL)
lRet = ChangeDisplaySettings(&oDEVMODE, bUpdateReg?CDS_UPDATEREGISTRY : 0);
return lRet == DISP_CHANGE_SUCCESSFUL;
}