我正在Rust中使用winit板条箱创建一个新窗口。我的程序最初创建一个CLI,GUI窗口是根据用户在CLI中的可选输入创建的。如何在不退出进程并完全关闭程序的情况下关闭新创建的窗口。
我看到的文档和示例都使用ControlFlow::Exit来处理CloseRequested事件,但它会从整个程序中退出;我只想关闭创建的窗口,然后继续在CLI中运行其余的代码。如果有一个操作系统特定的命令,我的目标是windows操作系统。
要关闭窗口,只需放下Window
对象。
但是,我怀疑您可能也希望退出事件循环这在所有平台上都是不可能的,这就是为什么你不经常看到关于它的文档。要运行事件循环并有机会退出它,请使用winit::platform::run_return::EventLoopExtRunReturn::run_return()
,这是一个仅在那些可以支持从事件循环返回的平台(包括Windows(上实现的特性。在该run_return()
中,从事件处理程序使用ControlFlow::Exit
将把控制权返回给调用函数,而不是退出进程。
您也可以执行以下操作之一,而不是使用run_return()
:
- 构建程序结构,使其在关闭窗口后使用CLI界面在
winit
事件循环中继续运行 - 在其他线程上运行CLI交互