Share via


傳回顯示模式: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,但未在DEVMODEWdmFields成員中設定DM_DISPLAYORIENTATION和DM_DISPLAYFIXEDOUTPUT旗標,系統必須選擇方向和固定輸出模式。 在此情況下,系統會選擇顯示模式 C ,因為它是符合目前DMDFO_CENTER設定的第一個列出的模式。

  • 情況 2

    如果應用程式嘗試將監視器設定為 600x800x32bpp@60Hz DMDFO_STRETCH,系統會選擇顯示模式 A

  • 案例 3

    如果應用程式嘗試將監視器設定為 600x800x32bpp@60Hz DMDO_270,系統會選擇顯示模式 D

  • 案例 4

    如果應用程式嘗試將監視器設定為 600x800x32bpp@60Hz DMDO_DEFAULT,系統將無法找到可接受的相符專案。

其中一個例外狀況適用于這些規則:當系統搜尋顯示方向的相符專案,且未指定方向且無法比對目前的模式時,系統會提供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