2

设想:

多显示器机器上的屏幕捕获。

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

关闭 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

4

0 回答 0