先用系统窗口验证内容
先让普通窗口显示页面,再考虑无边框外观。配置标题、初始尺寸与最小尺寸,确保主操作在最小窗口仍可访问。不要为了模仿设计稿隐藏了关闭入口。
自定义标题栏需要真实行为
frameless 改变的是窗口边框,最小化、最大化、还原和关闭还要连接 Window API。标题栏拖拽区使用 app-region,按钮排除拖拽;状态变化时更新最大化图标和可访问名称。
auto* minimize = doc->getElementById("window-minimize");
auto* maximize = doc->getElementById("window-maximize");
auto* close = doc->getElementById("window-close");
if (!minimize || !maximize || !close) return 6;
auto* nativeWindow = window.get();
const auto updateWindowControls = [nativeWindow, maximize, english]() {
const bool maximized = nativeWindow->isMaximized();
maximize->setAttribute("data-maximized", maximized ? "true" : "false");
const std::string label = maximized ? (english ? "Restore" : "还原")
: (english ? "Maximize" : "最大化");
maximize->setAttribute("aria-label", label);
maximize->setAttribute("title", label);
};
minimize->addEventListener("click", [nativeWindow](kui::Event&) { nativeWindow->minimize(); });
maximize->addEventListener("click", [nativeWindow, updateWindowControls](kui::Event&) {
if (nativeWindow->isMaximized()) nativeWindow->restore();
else nativeWindow->maximize();
updateWindowControls();关闭时检查未完成的任务
保存策略由应用决定。若有未保存文本、网络任务或 Lua 计时器,关闭流程要明确处理;不要让后台结果继续访问已关闭窗口。窗口回调、脚本和页面模型应按所有权顺序清理。
窗口验收
每个按钮都实际点击一遍,不能只检查图标。
- 最小化后能从任务栏恢复。
- 最大化再还原,内容重排、图标与提示同步。
- 拖动标题栏移动窗口;点击按钮不会误触发拖拽。
- 缩至最小尺寸,输入和保存可用;关闭后进程正常结束。
文档有误或遗漏?
反馈此页问题 →