Поддержка клавиши табуляции в элементе управления IWebBrowser2

У меня есть встроенный элемент управления IWebBrowser2, использующий прямой C++ (с окнами, а не без окон), и когда кто-то нажимает клавишу Tab для перехода между полями в браузере, он выпрыгивает из веб-браузера.

Любые идеи о том, что мне нужно реализовать или что я могу облажаться?

Спасибо!

2 ответа

Решение

Клавиши акселератора, такие как табуляция, обрабатываются циклом сообщений перед отправкой. Как таковая функция ловушки должна вызываться циклом сообщений - IOleInPlaceActiveObject:: TranslateAccelerator iirc. - дать элементу управления возможность делать вещи типа клавиатуры.

Я решил эту проблему по ссылке ниже.

http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/1f485dc6-e8b2-4da7-983f-ca431f96021f/

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();

}
Другие вопросы по тегам