Windows 11에서 데스크톱 앱에 대한 스냅 레이아웃 지원
스냅 레이아웃은 사용자에게 창 스냅의 강력한 기능을 소개하는 데 도움이 되는 새로운 Windows 11 기능입니다. 스냅 레이아웃은 창의 최대화 단추 위로 마우스를 이동하거나 Win + Z를 눌러 쉽게 액세스할 수 있습니다. 사용 가능한 레이아웃을 표시하는 메뉴를 호출한 후 사용자는 레이아웃의 영역을 클릭하여 창을 특정 영역에 스냅한 다음, Snap Assist로 전체 창 레이아웃 빌드를 완료할 수 있습니다. 스냅 레이아웃은 큰 가로 화면에 3개의 창을 나란히 배치하는 것을 지원하고 세로 화면에 창을 위/아래로 쌓는 것을 포함하여 현재 화면 크기와 방향에 맞게 조정됩니다.
앱의 창에 캡션 최대화 버튼을 사용할 수 있는 경우, 사용자가 창의 최대화 버튼 위로 마우스를 가져가면 시스템이 자동으로 스냅 레이아웃을 표시합니다. 스냅 레이아웃은 대부분의 앱에 대해 자동으로 표시되지만 일부 데스크톱 앱은 스냅 레이아웃을 표시하지 않을 수 있습니다. 이 문서에서는 시스템이 스냅 레이아웃을 자동으로 표시하지 않는 경우 앱이 스냅 레이아웃 메뉴를 표시하는 방법에 대해 설명합니다.
앱에 스냅 레이아웃 메뉴가 표시되지 않는 이유는 무엇인가요?
앱의 주 창에 캡션 최대화 버튼을 사용할 수 있지만 스냅 레이아웃을 표시하지 않는 경우 캡션 버튼 또는 제목 표시줄을 표시하지 않는 방식으로 사용자 지정했기 때문일 수 있습니다.
수정 방법
사용자 지정 제목 표시줄이 있는 경우 다음을 수행할 수 있습니다.
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을 사용하는 경우, 스냅 레이아웃을 사용하려면 Electron의 안정적인 v13 릴리스로 업데이트하세요.
앱의 창에 스냅 레이아웃이 표시되지만, 제대로 스냅되지 않으면 어떻게 해야 하나요?
앱이 스냅 레이아웃으로 메뉴를 호출할 수 있지만 영역 크기에 적절하게 스냅할 수 없는 경우 앱의 최소 창 크기가 너무 커서 창이 선택한 영역에 맞지 않을 수 있습니다.
앱은 가장 일반적인 화면 크기에서 스냅 레이아웃을 지원하기 위해 최대 500epx(유효 픽셀)의 최소 너비를 지원해야 합니다. 그러나 더 많은 디바이스 및 스냅 레이아웃 세트와 호환되도록 더 작은 최소 너비(330epx 이하)를 지원하는 것이 좋습니다.
Windows developer