HTML/CSS/JavaScript を使用してアプリケーション GUI を作成し、C++ バックエンドをすべてクロス プラットフォームにする必要があります。QtWebKit、XULRunner、および Mozillaで簡単なテストを行いました。
簡単な睾丸から、私は非常に打ちのめされていることに気づきました。それは、ブラウザーのライブラリ/フレームワークの展開サイズです。大きい: 8 MB 以上。
私が見逃しているある種の小さな埋め込みブラウザはありますか?
他のプラットフォームについては知りませんが、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 ではありません) に依存します。
dilloには c 呼び出し規則が必要だと思いますが、必要に応じて行うことができます。JavaScript や Flash はありませんが、CSS はサポートしています。
質問をもう一度読むと、dillo が現在サポートしていない JavaScript が必要であることがわかります。ごめん。
問題を解決するかもしれない提案があります:
Windows では IE コントロールを使用し、Linux では Mozilla を使用します (おそらく、ロード可能な動的ライブラリとして利用できるでしょう)。
これによりアプリは最小になりますが、コードから簡単に処理できるように IE/Mozilla のラッパーを作成する必要があり、HTML/CSS/JS はクロスブラウザーである必要があります。
8 MB: ファイル (またはフラッシュ ストレージ) のサイズについて話しているのですか? ブラウザの操作メモリ要件はコードベースよりも重要であると予想しています....しかし、あなたの質問にはこれがありません。Qtwebkit について言及しているため、製品で他の Qt ライブラリがアクティブになっていますか?
あなたのニーズに大きく依存します。互換性、CSS、画面サイズ、パフォーマンスはどうですか?フリーソフトウェアですか、それともライセンス供与されていますか? どのライセンス条件 (つまり、GPL であるかどうか)。もっと具体的に言えますか?
パフォーマンスが高く、標準に準拠しているブラウザは、簡単に 16 MB 以上の費用がかかります。Opera、特に Operaデバイスは非常に興味深いものでした。これは非常に標準に準拠し、カスタマイズ可能で高性能ですが、メモリ使用量も 16 ~ 32 MB の領域にあります。
完全にテストされていない別のアプローチ: 単純な Web サーバー (たとえば、Boost::Asio にはこの問題に関するチュートリアル/例があります) をプログラムに、おそらく別のスレッドに含めます。次に、ユーザーが選択した Web ブラウザーが、プログラムによって開始されたばかりの Web サーバーにサーフィンできるようにします。