スナップ レイアウトは、ウィンドウ スナップの機能をユーザーに紹介するための Windows 11 の新機能です。 スナップ レイアウトは、ウィンドウの最大化ボタンの上にマウスを置くか、Win + Z キーを押すことで簡単に使用できます。使用できるレイアウトを表示するメニューを呼び出した後、レイアウト内のゾーンをクリックしてウィンドウをその特定のゾーンにスナップし、さらにスナップ アシストを使用してウィンドウのレイアウト全体の構築を完了することができます。 スナップ レイアウトは、現在の画面サイズと向きに合わせて調整され、横長の大画面に 3 つのウィンドウを横に並べて表示したり、縦長の画面には上下に重ねて表示したりすることができます。
アプリのウィンドウに最大化キャプション ボタンがある場合、ウィンドウの最大化ボタンにマウスを置くと、自動的にスナップ レイアウトが表示されます。 ほとんどのアプリではスナップ レイアウトが自動的に表示されますが、スナップ レイアウトが表示されないデスクトップ アプリもあります。 このトピックでは、自動的にスナップ レイアウトが表示されない場合に、スナップ レイアウトを使用したメニューをアプリに表示する方法について説明します。
アプリにスナップ レイアウト メニューが表示されない理由
アプリのメイン ウィンドウで最大化キャプション ボタンを使用できても、スナップ レイアウトが表示されない場合、表示されないようにキャプション ボタンまたはタイトル バーをカスタマイズしている可能性があります。
これを解決するにはどうすればいいですか?
カスタムのタイトル バーがある場合は、次のことができます。
Windows App SDK ウィンドウ設定 API 使用して (「アプリ ウィンドウの管理」を参照)、プラットフォームにキャプション ボタンを描画させ、実装させます。
For Win32 apps, make sure you are responding appropriately to WM_NCHITTEST (with a return value of
HTMAXBUTTONfor the maximize/restore button).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); }If your app uses Electron, update to the v13 stable release of Electron to enable snap layouts.
アプリのウィンドウにスナップ レイアウトが表示されていても、正しくスナップされない場合
スナップ レイアウトを使用するメニューを呼び出すことはできても、ゾーン サイズに合わせて適切にスナップされない場合は、アプリの最小ウィンドウ サイズが大きすぎて、選択したゾーンにウィンドウが収まらない可能性があります。
Your app should support a minimum width of at most 500 effective pixels (epx) to support snap layouts across the most common screen sizes. ただし、より小さな最小幅 (330 epx 以下) をサポートすることをお勧めします。これは、より大きなデバイス セットとスナップ レイアウトとの互換性があるためです。
Windows developer