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 を返す。
失敗すれば、以下のエラー値のいずれかを返す。
注意
このメソッドは、アプリケーション ウィンドウを作成した同じスレッドで呼び出されなくてはならない。
アプリケーションでは、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::SetDisplayMode、IDirectDraw7::Compact、IDirectDraw7::EnumDisplayModes、モード X モードとモード 13 ディスプレイ モード、フォーカス ウィンドウとデバイス ウィンドウ