Supporto dei layout di ancoraggio per le app desktop in Windows 11

I layout di ancoraggio sono una nuova funzionalità di Windows 11 pensata per aiutare gli utenti a scoprire le potenzialità dell’ancoraggio delle finestre. I layout di aggancio sono facilmente accessibili passando il puntatore del mouse sul pulsante Ingrandisci di una finestra o premendo Win + Z. Dopo aver richiamato il menu che mostra i layout disponibili, gli utenti possono fare clic su un'area di un layout per agganciare una finestra a quella specifica area e quindi usare Snap Assist per completare la composizione di un intero layout di finestre. I layout di ancoraggio sono personalizzati in base alle dimensioni e all'orientamento attuali dello schermo, incluso il supporto per tre finestre affiancate su schermi orizzontali di grandi dimensioni e finestre superiori/inferiori raggruppate su schermi verticali.

L'app Blocco note in Windows 11 con angoli arrotondati.

Se nella finestra dell'app è disponibile il pulsante di ingrandimento nella barra del titolo, il sistema mostrerà automaticamente i layout di snap quando l'utente passa il puntatore del mouse sul pulsante di ingrandimento. I layout di ancoraggio appariranno automaticamente per la maggior parte delle app, ma alcune app desktop potrebbero non mostrare i layout di ancoraggio. Questo argomento descrive come fare in modo che l'app mostri il menu dei layout di aggancio se il sistema non lo mostra automaticamente.

Perché la mia app non mostra il menu dei layout di aggancio?

Se la finestra principale dell'app ha disponibile il pulsante di ingrandimento ma non visualizza i layout di ancoraggio, il motivo potrebbe essere che hai personalizzato i pulsanti della barra del titolo o la barra del titolo stessa in modo tale da impedirne la visualizzazione.

Come si risolve il problema?

Se si dispone di una barra del titolo personalizzata, è possibile:

  • Usa le API per la gestione delle finestre di SDK per app di Windows (vedi Gestire le finestre delle app) e lascia che la piattaforma disegni e implementi i pulsanti della barra del titolo per te.

  • Per le app Win32, assicurarsi di rispondere in modo appropriato a WM_NCHITTEST (restituendo un valore di HTMAXBUTTON per il pulsante ingrandisci/ripristina).

    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 l'app utilizza Electron, aggiorna alla versione stabile v13 di Electron per abilitare i layout snap.

Cosa succede se la finestra dell'app mostra i layout di aggancio ma non si aggancia correttamente?

Se l'app può richiamare il menu con layout di ancoraggio, ma non è in grado di agganciarsi correttamente alle dimensioni della zona, è probabile che le dimensioni minime della finestra dell'app siano troppo grandi per adattarsi alla zona selezionata.

L'app deve supportare una larghezza minima di al massimo 500 pixel effettivi (epx) per supportare layout a scatto tra le dimensioni dello schermo più comuni. Tuttavia, è consigliabile di supportare una larghezza minima ancora più piccola (330 epx o minore) in modo che sia compatibile con un set più ampio di dispositivi e layout di ancoraggio.