Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как передать фокус TCppWebBrowser?

25K
19 марта 2007 года
Bobbie
5 / / 07.03.2007
Создаю в программе несколько окошек с компонентой браузера в каждом (внешне чем-то на оперу похоже).
Так вот, проблемма в том, что при переходе из окошка в окошко, или при переходе в др. программу и возврате в мою теряется фокус у браузера.

Пытался его всяко вернуть - не получается:

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, возможно и не из этой оперы.
1.8K
19 марта 2007 года
Evgeni
188 / / 14.06.2006
у компонентов есть свойство taborder, если у одного стоит значение 1 и на нем фокус стоит, а у другого 2, то при нажатии на Таб,то фокус будет передаваться на копонент со следующим значением.
Потом программно меняешь знчение taborder c 2 на 1, а у другого с 1на2 и т.д
sorrу, если неправильно понял
25K
20 марта 2007 года
Bobbie
5 / / 07.03.2007
Цитата: Evgeni
у компонентов есть свойство taborder, если у одного стоит значение 1 и на нем фокус стоит, а у другого 2, то при нажатии на Таб,то фокус будет передаваться на копонент со следующим значением.
Потом программно меняешь знчение taborder c 2 на 1, а у другого с 1на2 и т.д
sorrу, если неправильно понял



Да в том то весь и фокус, что компонента браузера - это единственная компонента на форме дочернего окна, которая может иметь фокус, и taborder у нее 0.

Возможно что-то там связаное с этой компонентой и получает фокус, но сам ole-объект браузера фокуса не получает.
И при переходе из браузера в одной дочерней форме, в браузер в другой форме фокус улетучивается как-то.

Чтобы понятно было.
Представь что ты открыл в опере две страницы. В одной есть текстовое поле, ты в ней набираешь текст. Переходишь в другую страницу и в другом текстовом поле набираешь текст.
Потом возвращаешся на первую страницу. Курсор у тебя уже стоит в том же текстовом поле и ты можешь просто продолжать набирать.
Так вот. У меня курсор не стоит в том же поле. Приходится отрыватся от клавы и тыкать мышкой в текстовое поле :(

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог