【发布时间】:2014-01-03 18:06:07
【问题描述】:
我正在尝试按照MSDN given here 上的说明禁用辅助监视器。
我正在尝试专门使用这组函数来兼容旧版本的 Windows。
但是,我无法禁用监视器。我正在 Windows 7 x64 上运行和测试它。 我得到的只是一个闪烁的屏幕。该代码肯定能正确检测到显示器 - 我设法更改分辨率并轻松查看它的显示模式。
这是我的代码的(部分) - 我在 DEVMODE 的字段上尝试了很多变体
DEVMODE deleteScreenMode;
ZeroMemory(&deleteScreenMode, sizeof(DEVMODE));
deleteScreenMode.dmSize = sizeof(DEVMODE);
deleteScreenMode.dmDriverExtra = 0;
deleteScreenMode.dmFields = DM_POSITION | DM_PELSHEIGHT | DM_PELSWIDTH;
deleteScreenMode.dmPelsWidth = 0;
deleteScreenMode.dmPelsHeight = 0;
POINTL delete;
deleteion.x=0;
deleteion.y=0;
deleteScreenMode.dmPosition = deleteion;
LONG result = ChangeDisplaySettingsEx(devName,
&deleteScreenMode,
NULL,
CDS_UPDATEREGISTRY,
NULL);
有人有这方面的经验吗?谢谢
【问题讨论】:
-
根据提到的文章,
dmFields掩码包含更多标志。也许还必须设置(并将相应的字段归零)以分离监视器? -
我试过了,没用。在他们的示例中,他们使用了所有可能的标志 - 当我这样做时,它抱怨给定模式无效。当我删除 DM_BITSPERPEL 标志时,它可以工作,但结果不会改变。监视器闪烁并保持活动状态。
标签: c++ winapi multiple-monitors