【发布时间】:2015-04-08 08:26:12
【问题描述】:
我正在使用原始 WinAPI 在 C++ 上开发一个应用程序,该应用程序使用 CEF 3 来显示 UI。问题是这个 UI 嵌套在一个弹出窗口中(没有标题栏和关闭/最小化按钮)。所以我想让一些客户区像标题一样,用户可以拖动和移动窗口。
最简单的解决方案是子类化 CEF 窗口并“预处理”WM_NCHITTEST 消息,将其传递给父窗口(返回 HTTRANSPARENT),并在父窗口中管理窗口移动消息(在 WM_NCHITTEST 上返回 HTCAPTION,在 WM_MOVE、WM_PAINT 和其他消息)。如果我手动执行调用 CefDoMessageLoopWork 的 CEF 消息循环,这将有效,但这会占用所有 CPU 资源。
使用多线程 CEF 消息循环是一种解决方案,但这种技术不起作用。
所以,问题是:如何使用多线程 CEF 消息循环使客户端区域像标题一样使用,因为它使用的资源要少得多?
【问题讨论】:
标签: c++ multithreading winapi chromium-embedded