ChangeDisplaySettingsEx(NULL, &DevMode, NULL, 0, NULL)这个我用过了,
我还试了ChangeDisplaySettingsEx(NULL, &DevMode, NULL, CDS_RESET, NULL)等 ,都试过了
返回的值一直是-2,也就是DISP_CHANGE_BADMODE,
我用
BOOL EnumDisplaySettings(
LPCTSTR lpszDeviceName,
DWORD iModeNum,
LPDEVMODE lpDevMode
);
读回了当前系统显示参数信息是正常的,分辩率和色深等,都是对了,但是
原封不动地,再ChangeDisplaySettingsEx,就返回DISP_CHANGE_BADMODE,
我的方法是:EnumDisplayDevices()得到当前显示设备的device name,然后传入EnumDisplaySettings,
读回分辩率等信怎,也就是DevMode的所有信息,然后,
修改一下DevMode结构的dmBitsPerPel = 16; //16BIT
DevMode结构的dmFields = DM_BITSPERPEL;
然后再:ChangeDisplaySettingsEx(NULL, &DevMode, NULL, CDS_RESET, NULL);
但是返回的一直是 -2 ,不知为什么,就算我EnumDisplaySettings读得DEVMODE 结构信息后,
原封不动地传入:ChangeDisplaySettingsEx(),还是返回-2,真是奇怪了,
是不是有什么细节我忘了?请高手指点 |