CEF3关闭流程如下:
- 用户点击关闭按钮,发送 WM_CLOSE 消息。
- 在 WM_CLOSE 中调用 TryCloseBrowser() 并返回 false,表示取消关闭窗口。
- 调用 JS 的 onbeforeunload 方法,如果允许关闭,则4,否则处理结束。
- 则调用 JS 的 onunload 方法。
- 调用 CefLifeSpanHandler::DoClose() 方法,可以重写该方法以处理需要在关闭时进行的操作,如果该方法返回false,则6,否则需要发送自定义关闭消息。
- 由 CEF 再次发送 WM_CLOSE 消息。
- 再次调用 TryCloseBrowser() 并返回 true,表示允许关闭。
- 销毁窗口。
- 调用 CefLifeSpanHandler::OnBeforeClose() ,可以重写该方法以进行最后的清理操作。
- 调用 CefQuitMessageLoop() 结束主消息循环。
- 退出进程。