Какой самый маленький встроенный браузер я могу использовать на C++?

Мне нужно создать графический интерфейс моего приложения с использованием HTML/CSS/JavaScript с бэкэндом C++ для всех кросс-платформ. Я провел простые тесты с помощью QtWebKit, XULRunner и Mozilla.

Что ж, из простых яиц я замечаю кое-что, что меня очень бьет, и это размер развертывания браузерных библиотек / фреймворка. Он большой: 8 МБ и выше.

Есть ли какой-то меньший встроенный браузер, который мне не хватает?


person user63898    schedule 09.08.2009    source источник
comment
Обычно я очень люблю Qt, но поскольку вам нужен небольшой размер, попробуйте использовать обычный Webkit (не QtWebkit), потому что привязки Qt (вместе с библиотекой Qt) могут излишне увеличивать размер.   -  person Evan Teran    schedule 09.08.2009


Ответы (5)


Я думаю, что для dillo требуются соглашения о вызовах c, но это может подойти для ваших нужд. Нет javascript или flash, или или или, но он поддерживает CSS.

Прочитав вопрос еще раз, я вижу, что вам нужен javascript, который dillo в настоящее время не поддерживает. Извиняюсь.

person dmckee --- ex-moderator kitten    schedule 09.08.2009

Я не знаю о других платформах, но самый простой способ сделать это в Windows — использовать встроенный в систему элемент управления веб-браузером. Он основан на COM, который может быть довольно сложным для программирования. Следующий код дает вам такого зверя:

HWND htmlWindow = ::CreateWindowExA(
  dwExStyle,
  ATLAXWIN_CLASS,
  "about:blank",
  dwStyle,
  x, y, w, h,
  hwndParent,
  NULL,
  hInstance,
  NULL
);

CAxWindow2 helperWindow;
helperWindow.Attach(htmlWindow);
CComPtr<IWebBrowser2> theWebBrowserControl;
HRESULT hr = helperWindow.QueryControl(&theWebBrowserControl);

Приведенный выше пример кода является плодом нескольких недель мучительных попыток понять эту штуку COM. Что ж, надеюсь, вам это как-то пригодится...

Примечание: пример выше зависит от ATL (не MFC).

person StackedCrooked    schedule 09.08.2009

У меня есть предложение, которое может решить проблему:

В Windows используйте управление IE, а в Linux используйте Mozilla (которая, вероятно, будет доступна в виде динамической библиотеки, которую вы можете загрузить).

Это сделает ваше приложение наименьшим из возможных, но вам придется создать оболочку вокруг IE/Mozilla, чтобы легко справляться с ними из кода, а ваш HTML/CSS/JS должен быть кросс-браузерным.

person Diaa Sami    schedule 09.08.2009

Другой подход, полностью непроверенный: включите простой веб-сервер (например, в Boost::Asio есть учебник/пример по этому вопросу) в вашу программу, возможно, в отдельном потоке. Затем позвольте пользователю выбрать веб-браузер для перехода на веб-сервер, только что запущенный вашей программой.

person Community    schedule 09.08.2009

8 МБ: вы говорите о размере файла (или флэш-памяти)? Я ожидаю, что требования к оперативной памяти браузеров будут более значительными, чем база кода... но я не вижу этого в вашем вопросе. Поскольку вы имеете в виду Qtwebkit, активны ли в вашем продукте другие библиотеки Qt?

Во многом зависит от ваших потребностей; как насчет совместимости, CSS, размера экрана, производительности? Бесплатное программное обеспечение или лицензионное? Какие условия лицензии (то есть GPL или определенно нет). Можете быть более конкретными?

Браузер, который хорошо работает и соответствует стандартам, легко будет стоить 16+ МБ. Я нашел Opera, особенно операторские устройства, очень интересными; он очень совместим со стандартами, настраиваемый и производительный, однако его использование памяти также находится в районе 16-32 МБ.

person Adriaan    schedule 10.08.2009