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 オフと DC 作成の間に遅延がある場合、DC がしばらくの間正しい [== オフセットなし] である可能性がありますが、ウィンドウが移動されたり、Z オーダーが変更されたりすると、DC はオフセットを取得します。回避策: オフセットが発生したときに新しい DC を作成します。

影響を受けるグラフィック アダプタ: Intel GMA 4500、Nvidia 9600GT

4

0 に答える 0