Re: Кликнуть в скрытое окно
От: CEMb  
Дата: 01.08.19 07:13
Оценка: 2 (1)
Здравствуйте, Cannol, Вы писали:

C>Сейчас который день мучаюсь над другой проблемой:

C>надо реализовать мышиные клики от пользователя. Т.е. юзер кликает в том DirectX окне по ссылкам на веб-страничке, а фактически всего лишь на Bitmap картинку от неё в DirectX.
C>И надо из этой DirectX-картинки переслать событие клика на само IWebBrowser2 окно. (А потом снова сграбить новое состояние страницы и показать bitmap в 3D.)
C>Думалось, есть небось какая-нибудь готовая функция типа webBrowser2->Navigate(хPos, уPos), но увы, такой не нашлось.

C>Поэтому пришлось транслировать координаты, и отправлять сообщения в то скрытое окно. Перепробовал много вещей, ничто не помогает:


C>II. Когда к этому коду добавляю в самом конце скрытие окна (SW_HIDE), всё перестаёт работать, т.е. браузер больше не получает клики! Очень странно, я ведь событие отправил до вызова SW_HIDE!


C>III. Не показывая окна вообще на экран (всегда SW_HIDE) пытаюсь посылать сообщения по-разному (SendMessage/PostMessage) — вообще глухо, ни один вариант не работает.


Гипотеза: процесс окна проверяет у себя WS_VISIBLE.
Ок, насколько я знаю, ShowWindow вызывает перерисовку, а SetWindowLong — нет. Поэтому можно попробовать "показать" окно через SetWindowLong(hWnd, GWL_STYLE, dwFlags | WS_VISIBLE), окно для глаз будет невидимо, но процесс будет считать, что оно видимо. Тут есть косяк: как только сменится страница — пойдёт перерисовка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.