Suporte a layouts ajustáveis em seu aplicativo da área de trabalho Windows 11

Os layouts ajustáveis são um recurso novo do Windows 11 para ajudar a apresentar aos usuários o poder do encaixe de janelas. Layouts de ajuste são facilmente acessíveis ao passar o mouse sobre o botão maximizar de uma janela ou pressionar Win + Z. Depois de invocar o menu que mostra os layouts disponíveis, os usuários podem clicar em uma zona de um layout para ajustar uma janela a essa zona específica e usar o Assistente de Ajuste para concluir a criação de todo um layout de janelas. Os layouts de ajuste são personalizados de acordo com o tamanho e a orientação da tela atual, incluindo suporte para três janelas lado a lado em telas paisagem grandes e janelas empilhadas de cima para baixo em telas retrato.

O aplicativo Bloco de Notas no Windows 11 com cantos arredondados.

Se a janela do aplicativo tiver o botão Maximizar legenda disponível, o sistema mostrará automaticamente layouts ajustáveis quando um usuário passar o mouse sobre esse botão. Os layouts ajustáveis serão exibidos automaticamente na maioria dos aplicativos, exceto alguns aplicativos da área de trabalho. Este tópico descreve como garantir que seu aplicativo mostre o menu com layouts ajustáveis se o sistema não o mostrar automaticamente.

Por que meu aplicativo não mostra o menu Ajustar layout?

Se a janela principal do aplicativo tiver o botão Maximizar legenda disponível, mas não mostrar o menu Ajustar layout, talvez seja porque você personalizou os botões de legenda ou a barra de título de uma forma que impede isso.

Como corrigi-la?

Se você tiver uma barra de título personalizada, será possível realizar as seguintes operações:

  • Usar as APIs de janelas do SDK de Aplicativo do Windows (confira Gerenciar aplicativos do Windows) e fazer com que a plataforma desenhe e implemente os botões de legenda para você.

  • Para aplicativos Win32, verifique se você está respondendo adequadamente ao WM_NCHITTEST(com um valor de HTMAXBUTTON retornado para o botão Maximizar/restaurar).

    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);
    }
    
  • Se o aplicativo usa o Electron, você pode atualizar para a versão estável v13 do Electron para habilitar layouts ajustáveis.

E se a janela do meu aplicativo mostrar layouts ajustáveis, mas não estiver encaixando corretamente?

Se o aplicativo puder invocar o menu com layouts ajustáveis, mas não puder encaixar corretamente nos tamanhos de zona, é provável que o tamanho mínimo da janela do aplicativo seja muito grande para que a janela se ajuste à zona selecionada.

O aplicativo precisa ser compatível com uma largura mínima de no máximo 500 epx (pixels efetivos) para aceitar layouts ajustáveis nos tamanhos de tela mais comuns. No entanto, é recomendável que você dê suporte a uma largura mínima menor (330 epx ou menos), pois ela será compatível com um conjunto maior de dispositivos e layouts ajustáveis.