窗口与原生服务
从 main 调用一次 Application::new().run(...)。启动回调负责创建窗口。
#窗口生命周期
cx.open_window(WindowOptions::new("Title").size(width, height), view) 会创建一个带有自己 View 的窗口。关闭窗口会丢弃该 View。当 has_visible_windows 为 false 时,用 Application::on_reopen 处理 Dock 图标。
Application::new()
.on_reopen(|has_visible_windows, cx| {
if !has_visible_windows {
cx.open_window(WindowOptions::new("My App").size(760.0, 520.0), App);
}
})
.run(|cx| {
cx.open_window(WindowOptions::new("My App").size(760.0, 520.0), App);
})#命令与服务
cx.prompt("Save changes?", ["Save", "Cancel"]);
cx.prompt_for_paths(PathPromptOptions::new().files(true));
cx.message_box(MessageBoxOptions::new("Replace this file?"));带类型的 API 覆盖对话框、剪贴板、Shell、外观、菜单和显示器。如果后续工作需要该窗口,在监听器中捕获 cx.window_handle()。托盘图标见托盘图标。
#事件与文件监听
窗口事件包括焦点、调整大小、外观、最小化、全屏和关闭。应用回调包括重新打开、激活、退出和打开 URL。需要文件系统事件时启用 file-watcher crate feature,并随所属 View 一起丢弃 watcher。
