Prendre en charge les dispositions d’ancrage pour les applications de bureau sur Windows 11

Les dispositions d’ancrage sont une nouvelle fonctionnalité de Windows 11 qui permet aux utilisateurs de tirer profit de l’ancrage des fenêtres. Vous pouvez facilement accéder aux dispositions d’ancrage en plaçant le pointeur de la souris sur le bouton d’agrandissement d’une fenêtre ou en appuyant sur Win + Z. Après avoir appelé le menu présentant les dispositions disponibles, les utilisateurs peuvent cliquer sur une zone d’une disposition pour ancrer une fenêtre dans cette zone particulière, puis utiliser Alignement automatique pour finaliser la création d’une disposition entière de fenêtres. Les dispositions d’ancrage sont adaptées à la taille et à l’orientation actuelles de l’écran. Vous pouvez notamment avoir trois fenêtres côte à côte sur de grands écrans en mode paysage et trois fenêtres empilées verticalement sur des écrans en mode portrait.

The Notepad app on Windows 11 with rounded corners.

Si le bouton de légende Agrandir est disponible dans la fenêtre d’une application, le système affiche automatiquement les dispositions d’ancrage quand un utilisateur pointe la souris sur ce bouton Agrandir. Les dispositions d’ancrage apparaissent automatiquement pour la plupart des applications, mais ce n’est pas le cas pour certaines applications de bureau. Cette rubrique explique comment afficher le menu des dispositions d’ancrage dans votre application si le système ne le fait pas automatiquement.

Pourquoi le menu de dispositions d’ancrage n’est-il pas disponible dans mon application ?

Si la fenêtre principale de votre application contient le bouton de légende Agrandir mais n’affiche pas les dispositions d’ancrage, c’est peut être parce que vous avez personnalisé vos boutons de légende ou votre barre de titre d’une manière qui l’en empêche.

Comment y remédier ?

Si vous avez une barre de titre personnalisée, vous pouvez :

  • Utiliser les API de fenêtrage du kit SDK Windows App (voir Gérer les fenêtres d’application) et faire en sorte que la plateforme dessine et implémente les boutons de légende pour vous.

  • Pour les applications Win32, vérifier que vous répondez de manière appropriée à WM_NCHITTEST (avec une valeur de retour de HTMAXBUTTON pour le bouton Agrandir/Restaurer).

    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);
    }
    
  • Si votre application utilise Electron, effectuez la mise à jour vers la version stable v13 d’Electron pour activer les dispositions d’ancrage.

Que faire si la fenêtre de mon application affiche bien les dispositions d’ancrage, mais ne s’ancre pas correctement ?

Si votre application peut appeler le menu avec des dispositions d’ancrage mais ne parvient pas à s’ancrer correctement dans une zone, la fenêtre minimale de votre application est probablement trop grande pour tenir dans la zone sélectionnée.

Votre application doit prendre en charge une largeur minimale ne dépassant pas 500 pixels effectifs (epx) pour que les dispositions d’ancrage fonctionnent correctement sur les tailles d’écran les plus courantes. Toutefois, nous vous recommandons de prendre en charge une largeur minimale encore plus petite (330 epx ou moins), car celle-ci sera compatible avec un plus grand nombre d’appareils et de dispositions d’ancrage.