Win7:如果禁用Aero,辅助监视器的监视器DC会偏移

时间:2009-12-15 07:54:56

标签: winapi windows-7 aero monitors

情景:

多台显示器上的屏幕截图。

捕获辅助监视器的屏幕[这是唯一受影响的]

关闭Aero:

DwmEnableComposition(DWM\_EC_DISABLECOMPOSITION)

通过以下方式为辅助监视器创建[新] DC:

m_DC->CreateDC(_T("DISPLAY"), _T("\\.\DISPALY2", NULL, NULL);

结果:

DC将获得一个偏移量,该偏移量“指向”虚拟显示器的错误部分

CPoint DCOffset;

BOOL ok = ::GetDCOrgEx( hDC, &DCOffset );

其中DCOffset.x.y将是!= 0

备注:

Vista上不会发生此行为

如果Aero Off和DC创建之间存在延迟,则可能会出现DC正常一段时间[==无偏移],但如果移动窗口或更改其z顺序,则DC将获得偏移。解决方法:在发生偏移时创建新DC。

受影响的图形适配器:Intel GMA 4500,Nvidia 9600GT

0 个答案:

没有答案