NtGdiDdResetVisrgn 関数
[この機能は、オペレーティング システムのリビジョンごとに変更される可能性があります。 代わりに、Microsoft DirectDraw と Microsoft Direct3DAPIs を使用します。これらの API は、このようなオペレーティング システムの変更からアプリケーションを保護し、ディスプレイ ドライバーとの直接対話に関連する他の多くの困難を隠します。
ユーザー モードを有効にして、デスクトップ上のウィンドウのクリッピング領域の有効な理解を得るために使用します。 このクリッピングは、ユーザー モード スレッドの観点から非同期的に変更される可能性があります。
構文
BOOL APIENTRY NtGdiDdResetVisrgn(
_In_ HANDLE hSurface,
_In_ HWND hwnd
);
パラメーター
-
hSurface [in]
-
クリッピングをリセットする DirectDraw デバイスに属するサーフェスのユーザー モード オブジェクトへのポインター。 詳細については、DDK のドキュメントを参照してください。
-
hwnd [in]
-
予約済み。
戻り値
成功した場合、この関数は 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 [デスクトップ アプリのみ] |
ヘッダー |
|
こちらもご覧ください