Platform SDK: DirectX

デバイス コンテキストによるサーフェスの検出

[C++]

IDirectDraw7::GetSurfaceFromDC メソッドを呼び出すことにより、サーフェスに対するデバイス コンテキストからサーフェスの IDirectDrawSurface7 インターフェイスへのポインタを取得できる。この機能は、コンポーネント アプリケーションや ActiveX® コントロールで非常に役立つ。この場合、実行時に描画するためのデバイス コンテキストを一般的に与えられるが、IDirectDrawSurface7 インターフェイスで明らかにされる機能を利用することができる。

デバイス コンテキストは、DirectDraw オブジェクトと関係のないメモリを識別する可能性がある。また、デバイス コンテキストは、他の DirectDraw オブジェクトすべてに対するサーフェスを識別する可能性もある。後者の場合は、複数のモニタを使用するシステムで発生しやすい。デバイス コンテキストが DirectDraw オブジェクトで作成しなかったサーフェスを識別しない場合、メソッドは DDERR_NOTFOUND を返して失敗する。

次のサンプルコードで、非常に簡単な場合を説明する。

// この例では、hdc 変数がビデオ メモリ デバイス コンテキストに
// 対する有効なハンドルとなる。
// lpDD 変数は、有効な IDirectDraw7 インターフェイス ポインタである。
 
LPDIRECTDRAWSURFACE7 lpDDS;
HRESULT hr;
 
hr = lpDD->GetSurfaceFromDC(hdc, &lpDDS);
if(SUCCEEDED(hr)) {
// このサーフェスのインターフェイスを使用する。
}
else if(DDERR_NOTFOUND == hr) {
    OutputDebugString("HDC not from this DirectDraw surface\n");
 }
[Visual Basic]

DirectDraw7.GetSurfaceFromDC メソッドを呼び出すことにより、サーフェスに対するデバイス コンテキストからサーフェスの DirectDrawSurface7 オブジェクトを取得できる。この機能は、コンポーネント アプリケーションや ActiveX® コントロールで非常に役立つ。この場合、実行時に描画するためのデバイス コンテキストを一般的に与えられるが、DirectDrawSurface7 オブジェクトで明らかにされる機能を利用することができる。

デバイス コンテキストは、DirectDraw オブジェクトと関係のないメモリを識別する可能性がある。また、デバイス コンテキストは、他の DirectDraw オブジェクトすべてに対するサーフェスを識別する可能性もある。デバイス コンテキストが DirectDraw オブジェクトで作成しなかったサーフェスを識別しない場合、メソッドは DDERR_NOTFOUND を返して失敗する。

次のサンプルコードで、非常に簡単な場合を説明する。

' この例では、hdc 変数がビデオ メモリ デバイス コンテキストに
' 対する有効なハンドルとなる。
' DD 変数は有効な DirectDraw7 オブジェクトである。

Dim dds As DirectDrawSurface7

Set dds = dd.GetSurfaceFromDC(hDC)

If Err.Number = DDERR_NOTFOUND Then
MsgBox "hDC not from this DirectDraw surface"
End If