9

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

好吧,从简单的测试中,我注意到一些非常打击我的东西,它是浏览器库/框架的部署大小。它很大:8 MB 及以上。

我是否缺少某种较小的嵌入式浏览器?

4

5 回答 5

5

我不知道其他平台,但在 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)。

于 2009-08-09T18:47:42.900 回答
4

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

再次阅读问题时,我发现您需要 javascript,dillo 目前不支持。对不起。

于 2009-08-09T14:37:11.593 回答
1

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

在 Windows 上使用 IE 控件,在 Linux 上使用 Mozilla(它可能会以动态库的形式提供,您可以加载)。

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

于 2009-08-09T14:36:07.087 回答
0

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

于 2009-08-09T19:16:18.927 回答
0

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

很大程度上取决于您的需求;兼容性,CSS,屏幕尺寸,性能怎么样?免费软件或许可?哪些许可条件(即 GPL 或绝对不是)。你可以说得更详细点吗?

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

于 2009-08-10T09:32:24.333 回答