Mendukung tata letak snap untuk aplikasi desktop di Windows 11

Tata letak snap adalah fitur Windows 11 baru untuk membantu memperkenalkan pengguna ke kekuatan snapping jendela. Tata letak snap mudah diakses dengan mengarahkan mouse ke atas tombol memaksimalkan jendela atau menekan Win + Z. Setelah memanggil menu yang memperlihatkan tata letak yang tersedia, pengguna dapat mengklik zona dalam tata letak untuk memposisikan jendela ke zona tertentu, lalu menggunakan Snap Assist untuk menyelesaikan pembangunan seluruh tata letak jendela. Tata letak snap disesuaikan dengan ukuran dan orientasi layar saat ini, termasuk dukungan untuk tiga jendela berdampingan pada layar lanskap besar dan jendela bertumpuk atas/bawah pada layar potret.

The Notepad app on Windows 11 with rounded corners.

Jika jendela aplikasi memiliki tombol maksimalkan keterangan yang tersedia, sistem akan secara otomatis menampilkan tata letak snap saat pengguna mengarahkan mouse ke atas tombol maksimalkan jendela. Tata letak snap akan muncul secara otomatis untuk sebagian besar aplikasi, tetapi beberapa aplikasi desktop mungkin tidak menampilkan tata letak snap. Topik ini menjelaskan cara memastikan aplikasi Anda menampilkan menu dengan tata letak snap jika sistem tidak menampilkannya secara otomatis.

Mengapa aplikasi saya tidak menampilkan menu tata letak snap?

Jika jendela utama aplikasi Anda memiliki tombol maksimalkan keterangan yang tersedia tetapi tidak menampilkan tata letak snap, mungkin karena Anda telah menyesuaikan tombol keterangan atau bilah judul dengan cara yang mencegahnya.

Bagaimana saya memperbaikinya?

Jika Anda memiliki bilah judul kustom, maka Anda dapat:

  • Gunakan API jendela SDK Aplikasi Windows (lihat Mengelola jendela aplikasi) dan membuat platform menggambar dan mengimplementasikan tombol keterangan untuk Anda.

  • Untuk aplikasi Win32, pastikan Anda merespons dengan tepat untuk WM_NCHITTEST (dengan nilai HTMAXBUTTON pengembalian untuk tombol maksimalkan/pulihkan).

    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);
    }
    
  • Jika aplikasi Anda menggunakan Electron, perbarui ke rilis Electron stabil v13 untuk mengaktifkan tata letak snap.

Bagaimana jika jendela aplikasi saya menampilkan tata letak snap tetapi tidak di-snap dengan benar?

Jika aplikasi Anda dapat memanggil menu dengan tata letak snap tetapi tidak dapat memposisikan dengan benar ke ukuran zona, kemungkinan ukuran jendela minimum aplikasi Anda terlalu besar agar jendela pas di zona yang dipilih.

Aplikasi Anda harus mendukung lebar minimum paling banyak 500 piksel efektif (epx) untuk mendukung tata letak snap di seluruh ukuran layar yang paling umum. Namun, sebaiknya Anda mendukung lebar minimum yang lebih kecil (330 epx atau kurang) sehingga kompatibel dengan sekumpulan perangkat dan tata letak snap yang lebih besar.