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

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

Ну из простых яичек я замечаю что-то очень бьет меня, и это размер развертывания браузеров ЛИЭС / рамки. Он большой: 8 МБ и выше.

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

Ответы [ 5 ]

3 голосов
/ 09 августа 2009

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

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

3 голосов
/ 09 августа 2009

Я не знаю о других платформах, но наименьший способ сделать это в Windows - использовать встроенный в систему Web Browser Control. Он основан на 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).

1 голос
/ 09 августа 2009

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

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

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

0 голосов
/ 10 августа 2009

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

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

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

0 голосов
/ 09 августа 2009

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

...