【发布时间】:2020-12-02 14:29:18
【问题描述】:
我最近将我的一个项目迁移到WebView2,我不知道的最后一部分是如何拦截 webview 的 Windows 消息。我的代码与webview/webview 非常相似,但我无法在他们的 GitHub 上找到帮助。
以前,我能够找到 webview 的 hWnd 并使用 SetWindowSubclass 将我自己的 wndproc 添加到 webview。但是,我已经使用了Spy++ 并在所有出现在那里的窗口上尝试了SetWindowSubclass(见下文),但除了一些我认为没有的窗口管理消息之外,我的wndproc 中没有任何窗口消息有用 - 我得到的最好的是 WM_PARENTYNOTIFY,但我对 WM_MOUSEMOVE 和 WM_NCHITTEST 感兴趣 - 我都找不到。
我的目标是创建一个基于 WebView2 的无边框、可拖动、可调整大小的应用程序。
【问题讨论】:
-
为什么? WebView2 允许您为感兴趣的事件注册代表。您真正想在这里解决什么问题?
-
@IInspectable 例如,无法为
WM_NCHITTEST注册事件。我正在尝试实现可拖动和可调整大小的无边界 Webview2。我用以前的 Webview 以这种方式工作,但现在我正在尝试迁移到 Webview2 -
您可能应该将一些 javascript 注入到您正在查看的页面中,然后您可以在 javascript 中编写事件处理程序并使用
window.chrome.webview2.postmessage向您的 C++ 代码报告。 -
@PoulBak 我可以这样做来拖动窗口,但如果我尝试这样做以调整大小并发送 WM_NCHITTEST,光标将在 webview 尝试发送的内容和我尝试发送的内容之间闪烁发送
-
在我之前的 webview1 框架中,我通过捕获而不是传播某些消息来解决这个问题。
标签: c++ winapi webview wndproc webview2