Windows 11에서 데스크톱 앱에 대한 스냅 레이아웃 지원

스냅 레이아웃은 사용자에게 창 스냅의 강력한 기능을 소개하는 데 도움이 되는 새로운 Windows 11 기능입니다. 스냅 레이아웃은 창의 최대화 단추 위로 마우스를 이동하거나 Win + Z를 눌러 쉽게 액세스할 수 있습니다. 사용 가능한 레이아웃을 표시하는 메뉴를 호출한 후 사용자는 레이아웃의 영역을 클릭하여 창을 특정 영역에 스냅한 다음, Snap Assist로 전체 창 레이아웃 빌드를 완료할 수 있습니다. 스냅 레이아웃은 큰 가로 화면에 3개의 창을 나란히 배치하는 것을 지원하고 세로 화면에 창을 위/아래로 쌓는 것을 포함하여 현재 화면 크기와 방향에 맞게 조정됩니다.

The Notepad app on Windows 11 with rounded corners.

앱의 창에 캡션 최대화 버튼을 사용할 수 있는 경우, 사용자가 창의 최대화 버튼 위로 마우스를 가져가면 시스템이 자동으로 스냅 레이아웃을 표시합니다. 스냅 레이아웃은 대부분의 앱에 대해 자동으로 표시되지만 일부 데스크톱 앱은 스냅 레이아웃을 표시하지 않을 수 있습니다. 이 문서에서는 시스템이 스냅 레이아웃을 자동으로 표시하지 않는 경우 앱이 스냅 레이아웃 메뉴를 표시하는 방법에 대해 설명합니다.

앱에 스냅 레이아웃 메뉴가 표시되지 않는 이유는 무엇인가요?

앱의 주 창에 캡션 최대화 버튼을 사용할 수 있지만 스냅 레이아웃을 표시하지 않는 경우 캡션 버튼 또는 제목 표시줄을 표시하지 않는 방식으로 사용자 지정했기 때문일 수 있습니다.

수정 방법

사용자 지정 제목 표시줄이 있는 경우 다음을 수행할 수 있습니다.

  • 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 이하)를 지원하는 것이 좋습니다.