DdResetVisrgn 関数 (ddrawgdi.h)
[この機能は、オペレーティング システムのリビジョンごとに変更される場合があります。 代わりに、Microsoft DirectDraw と Microsoft Direct3DAPIs を使用します。これらの API は、このようなオペレーティング システムの変更からアプリケーションを保護し、ディスプレイ ドライバーと直接やり取りすることに関連する他の多くの困難を隠します。
NtGdiDdResetVisrgn 関数のラッパー。デスクトップ上のウィンドウのクリッピング領域に関するユーザー モード情報をタイムリーに有効にします。
GdiEntry6 は、この関数のエイリアスとして定義されます。
構文
BOOL DdResetVisrgn(
LPDDRAWI_DDRAWSURFACE_LCL pSurfaceLocal,
HWND hWnd
);
パラメーター
pSurfaceLocal
クリッピングをリセットする DirectDraw デバイスに属する任意のサーフェスのユーザー モード オブジェクトへのポインター。 詳細については、DDK のドキュメントを参照してください。
hWnd
予約済み。
戻り値
成功した場合、この関数は TRUE を返します。それ以外の場合は FALSE を返します。
注釈
クリッピングは、ユーザー モード スレッドの観点から非同期的に変更できます。 DirectDraw と Windows グラフィックス デバイス インターフェイス (GDI) のカーネル モード部分では、デスクトップ全体のクリッピング リストが変更されるたびにインクリメントされるカウンターが維持されます。 この関数を呼び出すと、このカウンターは、システム上の既存のすべての DirectDraw プライマリ サーフェスに記録されます。
これらのプライマリ サーフェスの 1 つが IDirectDrawSurface7::Blt または IDirectDrawSurface7::Lock 操作 (DDK ドキュメントを参照) によって変更されると、そのサーフェスに記録されたカウンターはグローバル カウンターと比較されます。 これらの値が異なる場合は、エラー コード DDERR_VISRGNCHANGEDがユーザー モード コードに返されます。 その後、ユーザー モード コードは、デスクトップの現在のクリッピングに対してクエリを再実行し、 NtGdiDdResetVisrgn を呼び出し、新しいクリッピングを考慮して、プライマリ サーフェスに適用された IDirectDrawSurface7::Blt を再試行します。 最終的には、ユーザー モード コードによってサンプリングされたクリッピングは、カーネル モードによって所有されている現在のクリッピングと同じになり、IDirectDrawSurface7::Blt の続行が許可されます。
アプリケーションでは、非同期クリッピングの変更を処理するために 、IDirectDrawClipper インターフェイスまたは IDirect3DDevice8::P resent メソッドを使用することをお勧めします。 これらのコンストラクトは、自動化されたオペレーティング システムに依存しない方法で非同期クリッピングを実装します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ddrawgdi.h |