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

Шаблон "мост" является приложением старого совета, "предпочтите состав по наследованию". Становится удобно, когда необходимо разделить различные времена на подклассы способами, которые являются ортогональными друг с другом. Скажите, что необходимо реализовать иерархию цветных фигур. Вы не разделили бы Форму на подклассы с Прямоугольником и Кругом и затем разделили бы Прямоугольник на подклассы с RedRectangle, BlueRectangle и GreenRectangle и тем же для Круга, не так ли? Вы предпочли бы говорить, что каждая Форма имеет Цвет и реализовать иерархию цветов, и это - Шаблон "мост". Ну, я не реализовал бы "иерархию цветов", но Вы получаете идею...

7
задан alain.janinm 1 May 2012 в 17:27
поделиться

5 ответов

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

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

4
ответ дан 7 December 2019 в 03:18
поделиться

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

4
ответ дан 7 December 2019 в 03:18
поделиться

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

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

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

1
ответ дан 7 December 2019 в 03:18
поделиться

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

0
ответ дан 7 December 2019 в 03:18
поделиться

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

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

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

0
ответ дан 7 December 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: