我有一个使用直接 C++ 的嵌入式 IWebBrowser2 控件(有窗口,而不是无窗口),当有人按 Tab 键在浏览器中的字段之间切换时,它会将焦点从 Web 浏览器中跳出来。
关于我需要实施什么或我可能搞砸的任何想法?
谢谢!
我有一个使用直接 C++ 的嵌入式 IWebBrowser2 控件(有窗口,而不是无窗口),当有人按 Tab 键在浏览器中的字段之间切换时,它会将焦点从 Web 浏览器中跳出来。
关于我需要实施什么或我可能搞砸的任何想法?
谢谢!
诸如 tab 之类的加速键击在被分派之前由消息循环处理。因此,需要通过消息循环调用挂钩函数 - IOleInPlaceActiveObject::TranslateAccelerator iirc。- 让控件有机会做键盘导航类型的事情。
我通过以下链接解决了这个问题。
IWebBrowser2* iBrowser;
IOleInPlaceActiveObject* pIOIPAO;
hr = mpWebObject->QueryInterface(IID_IWebBrowser2,(void**)&iBrowser);
if ( SUCCEEDED(hr) )
{
iBrowser->QueryInterface(IID_IOleInPlaceActiveObject,(void**)&pIOIPAO);
if ( SUCCEEDED(hr) )
{
pIOIPAO->TranslateAccelerator(msg);
pIOIPAO->Release();
}
iBrowser->Release();
}