Как передать фокус TCppWebBrowser?
Так вот, проблемма в том, что при переходе из окошка в окошко, или при переходе в др. программу и возврате в мою теряется фокус у браузера.
Пытался его всяко вернуть - не получается:
void __fastcall TMDIChild::FormActivate(TObject *Sender)
{
//1
Browser->SetFocus();
//2
IOleInPlaceActiveObject *pOleInPlaceActiveObject;
Browser->Document->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID*)&pOleInPlaceActiveObject);
if (pOleInPlaceActiveObject)
{
pOleInPlaceActiveObject->OnFrameWindowActivate(TRUE);
pOleInPlaceActiveObject->OnDocWindowActivate(TRUE);
}
//3
Browser->DoObjectVerb(OLEIVERB_UIACTIVATE);
}
И еще по разному извращался.
Как сделать опроще, где копать?
Еще нашел что-то с реализацией своего интерфейса IDocHostUIHandler
и реализацией в нем метода GetHostInfo, но на VB, возможно и не из этой оперы.
Потом программно меняешь знчение taborder c 2 на 1, а у другого с 1на2 и т.д
sorrу, если неправильно понял
Потом программно меняешь знчение taborder c 2 на 1, а у другого с 1на2 и т.д
sorrу, если неправильно понял
Да в том то весь и фокус, что компонента браузера - это единственная компонента на форме дочернего окна, которая может иметь фокус, и taborder у нее 0.
Возможно что-то там связаное с этой компонентой и получает фокус, но сам ole-объект браузера фокуса не получает.
И при переходе из браузера в одной дочерней форме, в браузер в другой форме фокус улетучивается как-то.
Чтобы понятно было.
Представь что ты открыл в опере две страницы. В одной есть текстовое поле, ты в ней набираешь текст. Переходишь в другую страницу и в другом текстовом поле набираешь текст.
Потом возвращаешся на первую страницу. Курсор у тебя уже стоит в том же текстовом поле и ты можешь просто продолжать набирать.
Так вот. У меня курсор не стоит в том же поле. Приходится отрыватся от клавы и тыкать мышкой в текстовое поле :(