스냅 레이아웃은 사용자에게 창 스냅의 강력한 기능을 소개하는 데 도움이 되는 새로운 Windows 11 기능입니다. 스냅 레이아웃은 창의 최대화 단추 위로 마우스를 이동하거나 Win + Z를 눌러 쉽게 액세스할 수 있습니다. 사용 가능한 레이아웃을 표시하는 메뉴를 호출한 후 사용자는 레이아웃의 영역을 클릭하여 창을 특정 영역에 스냅한 다음, Snap Assist로 전체 창 레이아웃 빌드를 완료할 수 있습니다. 스냅 레이아웃은 큰 가로 화면에 3개의 창을 나란히 배치하는 것을 지원하고 세로 화면에 창을 위/아래로 쌓는 것을 포함하여 현재 화면 크기와 방향에 맞게 조정됩니다.
앱의 창에 캡션 최대화 버튼을 사용할 수 있는 경우, 사용자가 창의 최대화 버튼 위로 마우스를 가져가면 시스템이 자동으로 스냅 레이아웃을 표시합니다. 스냅 레이아웃은 대부분의 앱에 대해 자동으로 표시되지만 일부 데스크톱 앱은 스냅 레이아웃을 표시하지 않을 수 있습니다. 이 문서에서는 시스템이 스냅 레이아웃을 자동으로 표시하지 않는 경우 앱이 스냅 레이아웃 메뉴를 표시하는 방법에 대해 설명합니다.
앱에 스냅 레이아웃 메뉴가 표시되지 않는 이유는 무엇인가요?
앱의 주 창에 캡션 최대화 버튼을 사용할 수 있지만 스냅 레이아웃을 표시하지 않는 경우 캡션 버튼 또는 제목 표시줄을 표시하지 않는 방식으로 사용자 지정했기 때문일 수 있습니다.
수정 방법
사용자 지정 제목 표시줄이 있는 경우 다음을 수행할 수 있습니다.
Windows 앱 SDK 창 API를 사용하고(앱 창 관리 참조) 플랫폼이 자동으로 캡션 버튼을 그리고 구현하도록 합니다.
For Win32 apps, make sure you are responding appropriately to WM_NCHITTEST (with a return value of
HTMAXBUTTON
for 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. 그러나 더 많은 디바이스 및 스냅 레이아웃 세트와 호환되도록 더 작은 최소 너비(330epx 이하)를 지원하는 것이 좋습니다.
Windows developer