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.
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.
Windows developer