Platform SDK: DirectX

IDirectDraw7::SetCooperativeLevel

IDirectDraw7::SetCooperativeLevel メソッドは、アプリケーションの最上位動作を決定する。

HRESULT SetCooperativeLevel(
  HWND hWnd,     
  DWORD dwFlags  
);

パラメータ

hWnd
アプリケーションが使用するウィンドウ ハンドル。呼び出すアプリケーションの最上位ウィンドウ ハンドルに設定する (最上位ウィンドウが作成した子ウィンドウに対するハンドルではない)。dwFlags パラメータに DDSCL_NORMAL フラグを指定する場合、このパラメータは NULL となる。
dwFlags
以下のフラグのうち、1 つ以上の値を取る。
DDSCL_ALLOWMODEX
モード X ディスプレイ モードの利用を許可する。DDSCL_EXCLUSIVE と DDSCL_FULLSCREEN フラグが存在する場合だけ、このフラグを使用できる。
DDSCL_ALLOWREBOOT
排他 (フルスクリーン) モード時に、CTRL + ALT + DEL の機能を許可する。
DDSCL_CREATEDEVICEWINDOW
このフラグは、Microsoft® Windows 98 および Windows 2000 でのみサポートされる。DirectDraw が、この DirectDraw オブジェクトのデフォルトの デバイス ウィンドウ を作成および管理することを示す。詳細については、「フォーカス ウィンドウとデバイス ウィンドウ」を参照すること。
DDSCL_EXCLUSIVE
排他レベルを要求する。このフラグは、DDSCL_FULLSCREEN フラグと共に使用しなければならない。
DDSCL_FPUPRESERVE
呼び出し側アプリケーションで FPU の状態を監視し、アプリケーションでの管理のもと Direct3D による FPU の状態を変更しない。このモードでは、Direct3D は、FPU の状態を変更する必要があるたびに FPU の状態を保存および復元する。詳細については、「DirectDraw 協調レベルと FPU 精度」を参照すること。
DDSCL_FPUSETUP
呼び出し側アプリケーションでは、FPU を Direct3D パフォーマンスに最適な状態 (単精度および例外無効) に設定するので、Direct3D で FPU を明示的に毎回設定する必要はない。これはデフォルトの状態である。詳細については、「DirectDraw 協調レベルと FPU 精度」を参照すること。
DDSCL_FULLSCREEN
排他モードを所有する側にプライマリ サーフェス全体に対する責任がある。GDI は無視できる。このフラグは、DDSCL_EXCLUSIVE フラグと共に使用しなければならない。
DDSCL_MULTITHREADED
マルチスレッドの確実な DirectDraw 動作を要求する。これにより、Direct3D が頻繁にグローバル危険域を取得するようになる。
DDSCL_NORMAL
アプリケーションは通常の Microsoft® Windows® アプリケーションとして機能する。このフラグは、DDSCL_ALLOWMODEX、DDSCL_EXCLUSIVE、または DDSCL_FULLSCREEN フラグと共に使用することはできない。
DDSCL_NOWINDOWCHANGES
DirectDraw は、アクティブ時にアプリケーション ウィンドウを最小化または元のサイズに戻すことができない。
DDSCL_SETDEVICEWINDOW
このフラグは、Windows 98 および Windows 2000 でのみサポートされる。hWnd パラメータが、この DirectDraw オブジェクトにおけるデバイス ウィンドウのウィンドウ ハンドルであることを示す。このフラグは、DDSCL_SETFOCUSWINDOW フラグと共に使用することはできない。
DDSCL_SETFOCUSWINDOW
このフラグは、Windows 98 および Windows 2000 でのみサポートされる。hWnd パラメータが、この DirectDraw オブジェクトにおけるフォーカス ウィンドウのウィンドウ ハンドルであることを示す。このフラグは、DDSCL_SETDEVICEWINDOW フラグと共に使用することはできない。

戻り値

成功すれば、DD_OK を返す。

失敗すれば、以下のエラー値のいずれかを返す。

DDERR_EXCLUSIVEMODEALREADYSET
DDERR_HWNDALREADYSET
DDERR_HWNDSUBCLASSED
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DDERR_OUTOFMEMORY

注意

このメソッドは、アプリケーション ウィンドウを作成した同じスレッドで呼び出されなくてはならない。

アプリケーションでは、DDSCL_EXCLUSIVE または DDSCL_NORMAL フラグのいずれかを設定する必要がある。

他のアプリケーションに対して、大幅なパフォーマンス変化を引き起こす可能性のある関数を呼び出すには、DDSCL_EXCLUSIVE フラグを設定しなくてはならない。詳細については、「協調レベル」を参照すること。

このメソッドおよび IDirectDraw7::SetDisplayMode メソッド間の相互作用は、IDirectDraw でのものとは異なる。詳細については、「ディスプレイ モードのリストア」を参照すること。

Microsoft Foundation Classes (MFC) を使用する場合、このメソッドに渡されるウィンドウ ハンドルは、派生した子ウィンドウではなくアプリケーションの最上位ウィンドウを識別するものでなければならない。MFC アプリケーションの最上位ウィンドウ ハンドルを取得するには、次に示すコードを使用する。

    HWND hwndTop = AfxGetMainWnd()->GetSafeHwnd();

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 98 が必要。
  ヘッダー : ddraw.h で宣言。

参照

IDirectDraw7::SetDisplayModeIDirectDraw7::CompactIDirectDraw7::EnumDisplayModesモード X モードとモード 13 ディスプレイ モードフォーカス ウィンドウとデバイス ウィンドウ