我正在尝试使用WinAPI C ++函数设置我的监视器的显示模式。
我的问题:致电ChangeDisplaySettingsEx()
始终会返回DISP_CHANGE_BADPARAM
。我做错了什么?
我认为可能是我的devMode.dmDriverExtra值导致错误。我读过MSDN,devMode.dmDriverExtra的解释令人困惑。它是什么以及我如何找到监视器的dmDriverExtra?
导致下面的代码总是返回DISP_CHANGE_BADPARAM
?
DEVMODE devMode;
POINTL p = {0,0};
_tcscpy(devMode.dmDeviceName, _T("\\Device\\00000072"));
devMode.dmSpecVersion = DM_SPECVERSION;
devMode.dmDriverVersion = 1; // How do I determine the driver version?
devMode.dmSize = sizeof(DEVMODE);
devMode.dmDriverExtra = 0x5c0000; //
devMode.dmFields = DM_POSITION;
devMode.dmPosition = p;
LONG res = ChangeDisplaySettingsEx(_T("\\Device\\00000072"), &devMode, mainHwnd, 0, NULL);
_tprintf(_T("%s: %d\n\n\n"), _T("\\Device\\00000072"), res);
// The above printf always prints out "\Device\00000072: -5" (DISP_CHANGE_BADPARAM=-5)
答案 0 :(得分:1)
hwnd参数记录为保留,必须为NULL。另外dmDriverExtra是一个16位值,所以0x5c0000不适合。