我可以在C ++中使用的最小的嵌入式浏览器是什么?

时间:2009-08-09 13:33:41

标签: c++ embedded-browser

我需要使用HTML / CSS / JavaScript构建我的应用程序GUI 所有跨平台的C ++后端。我做了简单的测试 使用QtWebKitXULRunner和Mozilla。

从简单的睾丸中我发现了一些非常好的东西 击败我,这是浏览器的部署规模 库/框架。它很大:8 MB及以上。

我错过了某种较小的嵌入式浏览器吗?

5 个答案:

答案 0 :(得分:3)

我认为dillo需要c调用约定,但它可能会满足您的需求。没有javascript或flash,或者或者,它确实支持CSS。

再次阅读问题时,我发现你需要javascript,dillo目前不支持。遗憾。

答案 1 :(得分:3)

我不了解其他平台,但在Windows上执行此操作的最小方法是使用系统内置的Web浏览器控件。它基于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)。

答案 2 :(得分:1)

我有一个可能解决问题的建议:

在Windows上使用IE控件,在Linux上使用Mozilla(可能会将其作为可加载的动态库提供)。

这将使您的应用程序尽可能小,但您必须围绕IE / Mozilla创建一个包装器,以便从代码中轻松处理它们,并且您的HTML / CSS / JS必须是跨浏览器的。

答案 3 :(得分:0)

另一种方法,完全未经测试:在您的程序中包含一个简单的Web服务器(例如Boost :: Asio有关于此事的教程/示例),可能在一个单独的线程中。然后让用户选择的Web浏览器浏览到您的程序刚启动的Web服务器。

答案 4 :(得分:0)

8 MB:你在谈论文件(或闪存)的大小?我希望浏览器的操作内存要求比代码库更重要......但我不会在你的问题中看到这一点。既然您指的是Qtwebkit,您的产品中是否还有其他Qt库?

很大程度上取决于您的需求;兼容性,CSS,屏幕尺寸,性能如何?免费软件或许可?哪种许可条件(即GPL或绝对不是)。你能更具体一点吗?

性能良好且符合标准的浏览器很容易花费16+ MByte。我发现Opera,特别是opera devices非常有趣;它非常标准,可定制和高性能,但它的内存使用也在16-32 MByte区域。