Самый простой способ встроить контент HTML / CSS / JS в приложение Windows (XP +) C ++? - PullRequest
1 голос
/ 29 сентября 2010

У меня есть приложение, написанное на C ++ и использующее Visual Studio 2010 для работы в Windows (версия XP и выше) как .EXE.Он использует простой Win32 для существующего пользовательского интерфейса.

У меня также есть некоторый контент, основанный на форматах веб-браузера, HTML / CSS / JavaScript.Я хотел бы, чтобы этот контент отображался в окне приложения так же, как WebView работает на Android и UIWebView работает на iPhone.Веб-контент должен иметь возможность общаться с окружающим собственным приложением, используя вызовы пользовательских методов JavaScript.

Мне известен проект WebKit.Однако, глядя на двоичные файлы, доступные для загрузки, он представляется как отдельное приложение, а не библиотека, которая может быть связана с приложением C ++ для отображения содержимого браузера.

Может кто-нибудь предложитьхороший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Если вы используете MFC, ответ Патрика правильный.

Если вы не используете MFC, вы можете встроить Internet Explorer, используя «сдерживание элемента управления ATL» - см. Как добавить элемент управления ATLподдержка локализации для любого окна в Visual C ++ .

Все сводится к связыванию с нужными библиотеками и использованию этой однострочной:

// Creates the Web Browser control and navigates to the 
// specified web page.
HWND hWnd = ::CreateWindow("AtlAxWin", "http://www.microsoft.com", 
                           WS_CHILD|WS_VISIBLE, 10, 10, 500, 300, hParent, NULL,
                           ::GetModuleHandle(NULL), NULL);

Получение JavaScript для вызова функцийв вашем приложении на C ++ это немного сложнее - вам нужно создать объект, который реализует IDispatch, а затем передать его в метод Advise интерфейса IE 101 IConnectionPoint, который вы получаете через IConnectionPointContainer::FindConnectionPoint.Затем ваш JavaScript вызывает window.external.my_func(...), который становится вызовом Invoke метода вашего IDispatch реализующего объекта.

1 голос
/ 29 сентября 2010

Вы можете попытаться включить Internet Explorer в качестве компонента COM в своем приложении.Это объясняется на http://msdn.microsoft.com/en-us/library/aa752046(VS.85).aspx.

Вы также можете использовать библиотеку QtWeb (см. http://www.qtweb.net/).

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