2016-06-21 5 views
0

Я хочу использовать Chromium Embedded Framework в качестве графического интерфейса моего приложения OpenGL.Хром встроенный датчик обнаружения нажмите

Я использую Off-Screen Rendering.

Как определить, когда нажата кнопка HTML/ссылка?

Я попытался сделать это, но с таким общим поисковым термином есть только шум. Вики общего использования также не содержат этого.

ответ

2

Я думаю, вы должны поймать событие в JS-коде и отправить сообщение на код C++. Это может быть сделано с помощью сообщений маршрутизатора, описанный здесь: https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown-header-asynchronous-javascript-bindings

Это также возможно реализовать пользовательские сообщения маршрутизатора с помощью JS интеграции механика: https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegration.md

1

Вы передаете какие-либо события пользовательского интерфейса в CEF из своего приложения OpenGL?

В общем случае вы должны приложить OpenGL и экземплярам CEF к тому же окну. Вы также должны переопределить запрос на недействительность области окна, чтобы уведомить ваш код OpenGL, который требуется для окна Rerender, включая содержимое этого экранного буфера.

Последовательность действий:

  1. Окно получает события перемещения мыши.
  2. Окно передает его на экземпляр CEF.
  3. Если CEF определяет, что ему необходимо применить: наведите курсор на свою кнопку, тогда он вызовет window.invalidateArea (areaOfTheButton).
  4. Вы обрабатываете это window.invalidateArea(), обновляя сцену OpenGL, включая новую версию вашего растрового изображения вне экрана.
  5. Из CEF вы также должны получать различные вторичные события DOM в ответ на движение мыши/вверх/вниз/и т. Д. на окне.

И проверьте это: http://sciter.com/sciter-and-directx/ - это окно DirectX со встроенным HTML/CSS-интерфейсом с моим механизмом Sciter. На данный момент я разрабатываю то же самое, но для OpenGL.

+0

У меня нет проблем с использованием CEF в качестве браузера. Я просто не могу уловить нажатие кнопки в коде C++. Я ищу обратные вызовы/события. Я не знаю, на что смотреть. – akaltar

+1

Кажется, что CEF не предоставляет простой вариант подписки на события DOM. Поэтому вам нужно будет зарегистрировать в нем свою собственную функцию и прикрепить ее к объекту документа DOM с помощью document.addEventListener (yourfunc) в скрипте. Для запуска сценариев установки вам нужно будет использовать функцию ExecuteJavaScript. .See: https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegration#markdown-header-using-js-callbacks –

Смежные вопросы