Partilhar via


Suporte a layouts de encaixe para aplicações desktop no Windows 11

Os layouts de encaixe são uma nova funcionalidade do Windows 11 para ajudar a apresentar aos utilizadores o poder do encaixe de janelas. Os layouts de encaixe são facilmente acessíveis ao passar o rato sobre o botão de maximizar numa janela ou pressionando Win + Z. Depois de invocar o menu que mostra os layouts disponíveis, os utilizadores podem clicar numa zona dentro de um layout para encaixar uma janela nessa zona específica e, em seguida, usar o Assistente de Encaixe para concluir a criação de um layout completo de janelas. Os layouts de ajuste são ajustados ao tamanho e orientação atuais do ecrã, incluindo suporte para três janelas lado a lado em grandes ecrãs em modo paisagem e janelas empilhadas na parte superior/inferior em ecrãs em modo retrato.

A aplicação 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 de ajuste quando um usuário passar o mouse sobre o botão maximizar da janela. Os esquemas de encaixe aparecerão automaticamente na maioria das aplicações, mas algumas aplicações de ambiente de trabalho podem não exibir esquemas de encaixe. Este tópico descreve como garantir que seu aplicativo mostre o menu com layouts de ajuste se o sistema não o mostrar automaticamente.

Porque é que a minha aplicação não mostra o menu de esquemas de disposição?

Se a janela principal da tua aplicação tiver o botão de maximizar disponível, mas não mostrar as disposições de acoplamento, isso pode ocorrer porque personalizaste os botões de legenda ou a barra de título de uma forma que o impede.

Como faço para corrigi-lo?

Se você tiver uma barra de título personalizada, poderá:

  • Use as APIs de janela do SDK de aplicativos do Windows (consulte Gerenciar janelas de aplicativos) e faça com que a plataforma desenhe e implemente os botões de legenda para você.

  • Nas aplicações Win32, certifique-se de que está a responder adequadamente a WM_NCHITTEST, devolvendo um valor de retorno de HTMAXBUTTON para o botão de 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 a sua aplicação usa Electron, atualize para a versão estável v13 do Electron para permitir layouts de snap.

E se a janela do meu aplicativo mostrar disposições de encaixe, mas não estiver encaixando corretamente?

Se a sua aplicação conseguir invocar o menu com layouts de encaixe, mas não se encaixar corretamente nos tamanhos das zonas, provavelmente, o tamanho mínimo da janela da aplicação é demasiado grande para que a janela caiba na zona selecionada.

A sua aplicação deve suportar uma largura mínima de no máximo 500 píxeis efetivos (epx) para suportar layouts snap nos tamanhos de ecrã mais comuns. No entanto, recomendamos que você suporte uma largura mínima ainda menor (330 px ou menos) para que seja compatível com um conjunto maior de dispositivos e layouts de encaixe.