傳回顯示模式: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旗標,系統必須選擇方向和固定輸出模式。 在此情況下,系統會選擇顯示模式 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。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應