Platform SDK: DirectX

ディスプレイ モードの設定

ディスプレイ モードを設定するには、C++ の IDirectDraw7::SetDisplayMode メソッドまたは Visual Basic の DirectDraw7.SetDisplayMode メソッドを使用する。SetDisplayMode メソッドは、設定するモードのディメンジョン、ビット深度、およびリフレッシュ レートを記述する 4 つのパラメータを受け取る。このメソッドでは、5 番目のパラメータを用いて、与えられたモードに対する特別なオプションを示す。現在、オプションはモード 13 とモード X 320 × 200 × 8 ディスプレイ モードを区別するためだけに使用されている。

[C++]

望ましいディスプレイ モードのビット深度を指定できるが、そのビット深度に対して使用するディスプレイ ハードウェアのピクセル フォーマットを指定することはできない。現在のビット深度に対して使用するディスプレイ ハードウェアの RGB ビットマスクを決めるには、ディスプレイ モードを設定してから IDirectDraw7::GetDisplayMode を呼び出す。現在のディスプレイ モードがパレット化でなければ、正確な赤、緑、および青のビットを決めるために、DDPIXELFORMATdwRBitMaskdwGBitMask、および dwBBitMask メンバのマスク値を調べることができる。詳細については、「ピクセル フォーマット マスク」を参照すること。

1 枚のディスプレイ カードをすべて共有しているかぎり、1 つ以上のアプリケーションでモードを変更できる。ディスプレイ モードのビット深度は、DirectDraw オブジェクトへの排他アクセスが取得できた場合にだけ、アプリケーションから変更できる。モードが変更されると、すべての DirectDrawSurface オブジェクトはサーフェス メモリを失い操作不能となる。サーフェスのメモリは、IDirectDrawSurface7::Restore メソッドを使うことで再割り当てしなくてはならない。

DirectDraw の排他 (フルスクリーン) モードでは、他のアプリケーションが DirectDrawSurface オブジェクトを割り当てられたり、DirectDraw や GDI 機能も利用可能となる。ただし、排他モード以外のアプリケーションがディスプレイ モードやパレットを変更することはできない。

 :  アプリケーション ウィンドウを作成したスレッドからは、IDirectDraw7::SetDisplayMod メソッドだけを呼び出せる。単一のスレッド化されたアプリケーション (大部分はそうである) に対しては、この制限は問題にならない。

[Visual Basic]

望ましいディスプレイ モードのビット深度を指定できるが、そのビット深度に対して使用するディスプレイ ハードウェアのピクセル フォーマットを指定することはできない。現在のビット深度に対して使用するディスプレイ ハードウェアの RGB ビットマスクを決めるには、ディスプレイ モードを設定してから DirectDraw7.GetDisplayMode を呼び出す。現在のディスプレイ モードがパレット化でなければ、正確な赤、緑、および青のビットを決めるために、DDPIXELFORMATlRBitMasklGBitMask、および lBBitMask メンバのマスク値を調べることができる。詳細については、「ピクセル フォーマット マスク」を参照すること。

1 枚のディスプレイ カードをすべて共有しているかぎり、1 つ以上のアプリケーションでモードを変更できる。ディスプレイ モードのビット深度は、DirectDraw オブジェクトへの排他アクセスが取得できた場合にだけ、アプリケーションから変更できる。モードが変更されると、すべての DirectDrawSurface オブジェクトはサーフェス メモリを失い操作不能となる。サーフェスのメモリは、DirectDrawSurface7.Restore メソッドを使うことで再割り当てしなくてはならない。

DirectDraw の排他 (フルスクリーン) モードでは、他のアプリケーションが DirectDrawSurface オブジェクトを割り当てられたり、DirectDraw や GDI 機能も利用可能となる。ただし、排他モード以外のアプリケーションがディスプレイ モードやパレットを変更することはできない。