API C ++, win32: Как создать окно рендеринга html, чтобы ваше приложение получало обратные вызовы от вызовов JS? - PullRequest
3 голосов
/ 25 июня 2011

Мне нужно просто: у нас есть проект консольного приложения.Мы хотим иметь такую ​​функцию, которая открывала бы простое окно только с html (основанным на системе по умолчанию) окном рендеринга html + js, которое считывало бы некоторую стандартную строку html + js (строка формы или const char *).мы хотим, чтобы наш собственный API соединялся с js api по умолчанию, чтобы при вызове JS некоторого значения our.function(argument); приложение C ++ выполняло некоторую функцию и, например, аргумент cout.Как создать такую ​​вещь на windows?

Ответы [ 3 ]

2 голосов
/ 25 июня 2011
  1. Создайте com-объект MSHTML для документов HTML:

    CComPtr spDoc;HRESULT hr = CoCreateInstance (CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, (void **) & spDoc);

  2. Сделайте что-то вроде этой , чтобы читать строку HTMLдокумент представляет его.

  3. В зависимости от того, что вам нужно с точки зрения обратных вызовов, вы можете использовать COM DOM Interfaces , чтобы пройти по дереву, а затем утопить соответствующий DispInterfaces для получения событий на интересующих вас элементах. Я бы порекомендовал это.

  4. Если то, что я предлагаю в # 3, недостаточно для вас(и я хотел бы услышать, почему), тогда вы можете реализовать свой собственный элемент управления ActiveX и иметь скрипт на своих методах вызова страницы, как предложено raj.

1 голос
/ 25 июня 2011

Хост для элемента управления WebBrowser может предоставить объект, который будет доступен для сценариев через объект external.

См. http://msdn.microsoft.com/en-us/library/aa770041.aspx#GetExternal

1 голос
/ 25 июня 2011

Отбросив в сторону любые проблемы безопасности / кросс-браузер / платформы, которые вы можете использовать, реализуйте объект ActiveX в вашем C ++, который вы можете вызывать из javascript.

http://msdn.microsoft.com/en-us/library/7sw4ddf8(v=vs.94).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...