ディスプレイ モードを返す: DrvGetModes
ディスプレイ ドライバーは、DrvGetModes もサポートする必要があります。 この関数は、GDI に DEVMODEW 構造体の配列を指すポインターを提供します。 構造体は、寸法 (ピクセルとミリメートルの両方)、平面の数、平面あたりのビット数、色情報など、サポートするさまざまなモードのディスプレイの属性を定義します。
DrvGetModes 関数が呼び出されたときに、ドライバーが使用可能なディスプレイ モードをメモリに書き込む順序は、Windows が選択する最終的なディスプレイ モードに影響する可能性があります。 一般に、アプリケーションが既定のモードを指定しない場合、システムはドライバーによって提供されるリストで最初に一致するモードを選択します。
たとえば、現在のディスプレイ モードが
800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_CENTER
と仮定すると、ドライバーは、使用可能なディスプレイ モードのリストを次のように指定します。
モード | モードの詳細 |
---|---|
A | 600x800x32bpp@60Hz DMDO_270 DMDFO_STRETCH |
B | 600x800x32bpp@60Hz DMDO_90 DMDFO_STRETCH |
C | 600x800x32bpp@60Hz DMDO_90 DMDFO_CENTER |
D | 600x800x32bpp@60Hz DMDO_270 DMDFO_CENTER |
ケース 1
アプリケーションがモニターを 600x800x32bpp@60Hz に設定しようとしても、DEVMODEW の dmFields メンバーに DM_DISPLAYORIENTATION フラグと DM_DISPLAYFIXEDOUTPUT フラグが設定されていない場合、システムは方向と固定出力モードを選択する必要があります。 この場合、システムは現在の DMDFO_CENTER 設定に一致するリストされた最初のモードであるため、ディスプレイ モード C を選択します。
ケース 2
アプリケーションがモニターを 600x800x32bpp@60Hz DMDFO_STRETCH に設定しようとすると、システムはディスプレイ モード A を選択します。
ケース 3
アプリケーションがモニターを 600x800x32bpp@60Hz DMDO_270 に設定しようとすると、システムはディスプレイ モード D を選択します。
ケース 4
アプリケーションがモニターを 600x800x32bpp@60Hz DMDO_DEFAULT に設定しようとすると、システムは受け入れ可能な一致を見つけることができません。
1 つの例外がこれらのルールに適用されます。システムが表示方向の一致を求め、方向が指定されておらず、現在のモードが一致しない場合、システムは他の表示方向よりも DMDO_DEFAULT を優先します。
たとえば、現在のディスプレイ モードが
600x800x32bpp@60Hz DMDO_90 DMDFO_STRETCH
と仮定すると、ドライバーは、使用可能なディスプレイ モードのリストを次のように指定します。
モード | モードの詳細 |
---|---|
A | 800x600x32bpp@60Hz DMDO_180 DMDFO_CENTER |
B | 800x600x32bpp@60Hz DMDO_180 DMDFO_STRETCH |
C | 800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_CENTER |
D | 800x600x32bpp@60Hz DMDO_DEFAULT DMDFO_STRETCH |
このような状況では、アプリケーションがモニターを 800x600x32bpp@60Hz に設定しようとすると、システムはディスプレイ モード D を選択します。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示