Platform SDK: DirectX

ステップ 6 : オーバーレイ サーフェスの隠蔽

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectDraw Visual Basic チュートリアル」を参照すること。

[C++]

オーバーレイ サーフェスが必要なくなるか、または単にビューから削除したい場合は、該当するフラグを設定して IDirectDrawSurface7::UpdateOverlay メソッドを呼び出すと、サーフェスを隠蔽できる。Mosquito では、アプリケーションを閉じることに備えてオーバーレイを隠蔽する。次にこのコードを示す。

void DestroyOverlay()
{
    if (g_lpddsOverlay){
// UpdateOverlay() に DDOVER_HIDE フラグを使用して  
// オーバーレイをディスプレイから削除する。
        g_lpddsOverlay->UpdateOverlay(NULL, g_lpddsPrimary, NULL, DDOVER_HIDE, NULL);
        g_lpddsOverlay->Release();
        g_lpddsOverlay=NULL;
    }
}
 

上記の例で IDirectDrawSurface7::UpdateOverlay を呼び出す場合、オーバーレイの隠蔽には無関係なため、転送元および転送先矩形は NULL を指定する。同様に、5 番目のパラメータも、オーバーレイ エフェクトを使用しないために NULL とする。2 番目のパラメータは、ターゲット サーフェスへのポインタとなる。最後に、オーバーレイがビューから削除されることを示すために、4 番目のパラメータに DDOVER_HIDE フラグを使用する。

オーバーレイを隠蔽した後、この例では IDirectDrawSurface7 インターフェイスを解放し、NULL に設定することでそのグローバル変数を無効にする。Mosquito サンプル アプリケーションでは、オーバーレイ サーフェスはもはや必要ではない。後でオーバーレイ サーフェスが必要になることがあれば、オーバーレイを解放せずに単に隠蔽しておき、必要に応じて再表示すればよい。