You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ultralig.ht开发点击标题栏关闭按钮调用Hide仍关闭窗口问题求助

问题原因

Ultralight 框架的 OnClose 回调仅作为关闭事件的通知入口,默认在回调执行完成后,框架会自动触发后续的窗口销毁流程。仅在回调中调用 Hide() 不会阻止这个默认销毁逻辑,所以点击标题栏关闭后窗口对象实际已经被释放,后续调用 Show() 自然无响应。而通过托盘按钮主动调用 Hide() 时没有触发关闭事件流,窗口对象仍存活,所以可以正常唤起。

解决方法

Ultralight 提供了 set_close_cancelled() 方法用于终止默认的关闭流程,你需要在 OnClose 回调中先调用该方法,再执行窗口隐藏逻辑,修改后的代码如下:

void MyApp::OnClose(ultralight::Window* window) {
   // 阻止框架默认的窗口销毁逻辑
   window->set_close_cancelled(true);
   // 执行窗口隐藏,直接使用回调传入的window对象即可,无需依赖全局window_指针
   window->Hide();
   // app_->Quit()保持注释即可
}
跨平台适配补充
  • Windows端:实现托盘退出功能时,需要主动调用app_->Quit(),否则应用会长期驻留后台无法正常退出。
  • Mac端:应用初始化阶段需要额外调用app_->set_quit_on_window_close(false),避免系统在所有窗口关闭后自动触发应用退出逻辑。

内容的提问来源于stack exchange,提问作者Kai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:57:02