Здравствуйте, 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), окно для глаз будет невидимо, но процесс будет считать, что оно видимо. Тут есть косяк: как только сменится страница — пойдёт перерисовка.