在 Windows 11 上支援傳統型應用程式的貼齊版面配置
貼齊版面配置是新的 Windows 11 功能,協助使用者瞭解視窗貼齊的功效。 將滑鼠停留在視窗的最大化按鈕或按下 Win + Z,即可輕鬆存取貼齊版面配置。叫用顯示可用版面配置的功能表之後,使用者可以按一下版面配置中的區域,將視窗貼齊該特定區域,然後使用「貼齊小幫手」來完成整個視窗配置。 貼齊版面配置會針對目前的螢幕大小和方向量身打造的,包括支援大型橫向螢幕上的三個並排視窗,以及直向螢幕上的頂端/底部堆疊視窗。
如果應用程式的視窗有可用的最大化標題按鈕,當使用者將滑鼠停留在視窗的最大化按鈕上時,系統會自動顯示貼齊版面配置。 大部分應用程式會自動顯示貼齊版面配置,但有些傳統型應用程式可能不會顯示貼齊版面配置。 本主題說明如果系統未自動顯示貼齊版面配置,如何確保您的應用程式會顯示包含貼齊版面配置的功能表。
為什麼我的應用程式不會顯示貼齊版面配置功能表?
如果您的應用程式主視窗有可用的最大化標題按鈕,但未顯示貼齊版面配置,可能是因為您以阻止貼齊版面配置的方式,自訂了標題按鈕或標題列。
如何修正?
如果您有自訂標題列,則可以:
使用 Windows 應用程式 SDK 將 API 視窗化 (請參閱管理應用程式視窗),讓平台為您繪製並實作標題按鈕.
針對 Win32 應用程式,確定您已適當地回應 WM_NCHITTEST (最大化/還原按鈕的傳回值為
HTMAXBUTTON
).LRESULT CALLBACK TestWndProc(HWND window, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_NCHITTEST: { // Get the point in screen coordinates. // GET_X_LPARAM and GET_Y_LPARAM are defined in windowsx.h POINT point = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; // Map the point to client coordinates. ::MapWindowPoints(nullptr, window, &point, 1); // If the point is in your maximize button then return HTMAXBUTTON if (::PtInRect(&m_maximizeButtonRect, point)) { return HTMAXBUTTON; } } break; } return ::DefWindowProcW(window, msg, wParam, lParam); }
如果您的應用程式使用 Electron,請更新為 v13 穩定版本的 Electron,以啟用貼齊版面配置。
如果我的應用程式視窗顯示貼齊版面配置,但未正確貼齊,該怎麼辦?
如果您的應用程式可叫用包含貼齊版面配置的功能表,但無法正確貼齊區域大小,則您的應用程式的視窗大小下限可能太大,讓視窗無法放入選取的區域。
您的應用程式應支援最多 500 有效像素 (epx) 的寬度下限,以支援大多數常見螢幕大小的貼齊版面配置。 不過,我們建議您支援更小的寬度下限 (330 epx 或更少),使其與較大一組的裝置和貼齊版面配置相容。