支持为 Windows 11 上的桌面应用使用贴靠布局 - Windows apps

支持为 Windows 11 上的桌面应用使用贴靠布局 - Windows apps

贴靠布局是 Windows 11 中的一项新功能,用户可通过该布局了解强大的窗口贴靠功能。 通过将鼠标悬停在窗口的最大化按钮上或按 Win + Z,可以轻松访问对齐布局。调用显示可用布局的菜单后,用户可以单击布局中的区域,将窗口对齐到该特定区域,然后使用“贴靠助手”完成整个窗口布局的生成。 对齐布局根据当前屏幕大小和方向定制,包括支持大型横向屏幕上的三个并排窗口,以及纵向屏幕上的上/下堆叠窗口。

如果应用窗口中有最大化标题按钮可用,则当用户将鼠标悬停在窗口的最大化按钮上时,系统将自动显示贴靠布局。 对于大多数应用,系统会自动显示贴靠布局,但某些桌面应用可能不会显示贴靠布局。 本主题介绍在系统未自动显示贴靠布局菜单的情况下,如何确保应用显示该菜单。

为什么我的应用不显示贴靠布局菜单?

如果应用的主窗口提供了“最大化”标题按钮,但没有显示贴靠布局菜单,这可能是由于你已经以阻止标题按钮或标题栏的方式自定义了标题按钮或标题栏。

如何解决问题?

如果有自定义标题栏,则可以:

使用 Windows 应用 SDK 窗口化 API(请参阅管理应用窗口),并让平台绘制和实现标题按钮。

对于 Win32 应用,请确保对 WM_NCHITTEST 做出适当的响应(其中最大化/还原按钮应返回值 HTMAXBUTTON)。

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);

}

如果你的应用使用 Electron,请更新到 Electron 的 v13 稳定版本以启用紧凑布局。

如果我的应用窗口显示了贴靠布局,但未正确贴靠怎么办?

如果应用可以调用贴靠布局菜单,但无法正确按区域大小贴靠,则可能是应用的最小化窗口太大,导致窗口无法容纳所选区域。

你的应用应支持最多500个有效像素(epx)的最小宽度,以支持最常见屏幕尺寸的贴靠布局。 但是,建议支持更小的最小宽度(330epx 或更小),以便可以与更多设备和贴靠布局兼容。

相关推荐

国家气象信息中心
线上365bet开户

国家气象信息中心

📅 12-21 👁️ 2242
日本城市排名 | 人口、经济、安全
365账号怎么注册

日本城市排名 | 人口、经济、安全

📅 10-20 👁️ 1197
这40道健康蒸菜,味道一级棒
cctv3直播365

这40道健康蒸菜,味道一级棒

📅 10-29 👁️ 7706
qq匿名聊天在哪里打开 qq匿名聊天打开方法【详解】
365账号怎么注册

qq匿名聊天在哪里打开 qq匿名聊天打开方法【详解】

📅 08-23 👁️ 4715