シナリオ:
マルチ ディスプレイ マシンでのスクリーン キャプチャ。
セカンダリ モニターの画面をキャプチャする [影響を受ける唯一のモニター]
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 オフと DC 作成の間に遅延がある場合、DC がしばらくの間正しい [== オフセットなし] である可能性がありますが、ウィンドウが移動されたり、Z オーダーが変更されたりすると、DC はオフセットを取得します。回避策: オフセットが発生したときに新しい DC を作成します。
影響を受けるグラフィック アダプタ: Intel GMA 4500、Nvidia 9600GT