MFC-在创建Iwebbrowse控件后,为什么在调用SetUIHandle后内部的网页元素无法输入字符?

发布于 2017-01-29 03:55:29 字数 84 浏览 1284 评论 2

我实现了IDocHostUIHandler,想做一些特殊处理,但发现browse控件设置SetUIHandle后变得无法编辑了,无法接受字符,什么原因啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-08-27 11:13:52

IDocHostUIHandler键盘相关的接口只有TranslateAccelerator了,你可以看一下你的TranslateAccelerator如何实现的。

我查了一下MSDN,应该是TranslateAccelerator的原因,这是TranslateAccelerator的描述:

When you use accelerator keys, such as TAB, you might want to override the default host behavior. This example shows how to disable the default tabbing behavior of the host. The code returns S_OK to indicate that the message was handled.

黑色部分说明了问题,你应该缺省都返回了S_OK,导致browser丢充了所有键盘输入,所以会无法输入字符。

晚风撩人 2017-04-11 10:12:59

你的TranslateAccelerator实现有问题。看下面我的实现方式:

HRESULT STDMETHODCALLTYPE TranslateAccelerator(MSG *pMsg, DWORD dwFlags){
HRESULT hr = S_FALSE;
if (pMsg && pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_TAB) {
// The message was handled.
hr = S_OK;
}
return hr;
}

如果返回S_OK相当于过滤掉这个字符消息,不让其继续下传了,所以不响应你的输入了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文