情景:
多台显示器上的屏幕截图。
捕获辅助监视器的屏幕[这是唯一受影响的]
关闭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