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