Unterstützung von Andocklayouts für Desktop-Apps in Windows 11

Andocklayouts sind ein neues Feature in Windows 11, um Benutzer mit den Möglichkeiten zum Ausrichten von Fenstern vertraut zu machen. Andocklayouts sind leicht verfügbar, indem Sie mit dem Mauszeiger auf die Schaltfläche „Maximieren“ eines Fensters zeigen oder WIN+Z drücken. Nach dem Aufrufen des Menüs, in dem die verfügbaren Layouts angezeigt werden, können Benutzer auf eine Zone in einem Layout klicken, um ein Fenster an diese bestimmte Zone anzudocken, und dann die Andockhilfe verwenden, um die Erstellung eines gesamten Layouts von Fenstern abzuschließen. Andocklayouts sind auf die aktuelle Bildschirmgröße und -ausrichtung zugeschnitten, einschließlich Unterstützung für drei nebeneinander angeordnete Fenster auf großen Querformatbildschirmen und übereinander gestapelte Fenster auf Hochformatbildschirmen.

The Notepad app on Windows 11 with rounded corners.

Wenn im Fenster der App die Schaltfläche zum Maximieren der Beschriftung verfügbar ist, zeigt das System automatisch Andocklayouts an, wenn ein Benutzer mit der Maus auf die Schaltfläche zum Maximieren des Fensters zeigt. Andocklayouts werden für die meisten Apps automatisch angezeigt, aber einige Desktop-Apps zeigen möglicherweise keine Andocklayouts an. In diesem Thema wird beschrieben, wie Sie sicherstellen, dass Ihre App das Menü mit Andocklayouts anzeigt, wenn es vom System nicht automatisch angezeigt wird.

Warum verfügt meine App nicht über das Menü „Layout andocken“?

Wenn im Hauptfenster Ihrer App die Titelleistenschaltfläche „Maximieren“ verfügbar ist, aber keine Andocklayouts angezeigt werden, liegt dies möglicherweise daran, dass Sie die Titelleistenschaltflächen oder die Titelleiste so angepasst haben, dass dies verhindert wird.

Wie behebe ich das Problem?

Wenn Sie über eine benutzerdefinierte Titelleiste verfügen, haben Sie folgende Möglichkeiten:

  • Verwenden Sie die Windows App SDK-Fenster-APIs (siehe dazu Verwalten von App-Fenstern), und lassen Sie die Titelleistenschaltflächen von der Plattform zeichnen und implementieren.

  • Stellen Sie bei Win32-Apps sicher, dass Sie auf WM_NCHITTEST in angemessener Weise (mit dem Rückgabewert HTMAXBUTTON für die Schaltfläche „Maximieren/Wiederherstellen“) reagieren.

    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);
    }
    
  • Wenn Ihre App Electron verwendet, aktualisieren Sie auf das Stable-Release v13 von Electron, um Andocklayouts zu aktivieren.

Was geschieht, wenn das Fenster meiner App Andocklayouts anzeigt, aber nicht ordnungsgemäß andockt?

Wenn Ihre App das Menü mit Andocklayouts aufrufen kann, aber nicht ordnungsgemäß an die Zonengrößen andocken kann, ist die Mindestfenstergröße Ihrer App wahrscheinlich zu groß, um in die ausgewählte Zone zu passen.

Ihre App sollte eine Mindestbreite von höchstens 500 effektiven Pixeln (epx) unterstützen, um Andocklayouts für die gängigsten Bildschirmgrößen zu unterstützen. Es wird jedoch empfohlen, eine noch geringere Mindestbreite (330 epx oder weniger) zu unterstützen, um mit einer größeren Gruppe von Geräten und Andocklayouts kompatibel zu sein.