0

MSHTML.DLL/Tridentを直接 ( SHDOCVW.DLL/WebBrowserではなく)ホスティングするための優れた読み物を提案できる人はいますか? C++ の GUI 要素、場合によっては主要な要素に使用したいと考えています。HTML レンダリング、追加のホスト提供の DOM メソッドとプロパティ、イベントを備えた JavaScript が必要です。

私の印象では、WebBrowser は余分なレイヤーを追加するだけで、必要なものは何も提供しません。それ以上に、クロスページ ナビゲーション、履歴、UI、コンテキスト メニュー、レジストリの依存関係、一般的な Active Document ホスティングなどを無効にする必要があります。ダウンロードなど

多くの場合、MSHTML と呼んでいるにもかかわらず、私が見つけたすべての記事は WebBrowser コントロールについて語っています。Microsoft のドキュメントでは、何が MSHTML で、何が WebBrowser であるかを理解するのが難しくなっています。たとえば、「その他の MSHTML インターフェイス」には、MSHTML.DLL の一部ではない IWebBrowser2 などがリストされています。

4

1 に答える 1

2

MSHTML はアクティブ ドキュメント サーバーです。WebBrowser と Internet Explorer は Active Document ホストです。MSHTML を直接ホストしたい場合は、独自のアクティブ ドキュメント ホスティング インターフェイスをすべて実装する必要がIOleDocumentSiteありIOleInPlaceFrameます。

さらに、MSHTML では、そのホストに と を実装する必要がITargetContainerありITargetFrameます。これらは十分に文書化されていません。

さらに、おそらく既にご存じのとおり、MSHTML はナビゲーションをサポートしていません。HTML コンテンツをダウンロード (または別の方法で取得) し、それをオブジェクトにフィードする必要があります。

これらの理由から、特定の限られたシナリオ (UI のない HTML パーサーなど、 WalkAllサンプルを参照) を除いて、MSHTML を直接ホストすることは困難です。これが、このトピックに関する情報とサンプルが非常に少ない理由です。ほとんどの場合、手間をかける価値はありません。WebBrowser コントロールをホストし、 に移動し、about:blankホストする MSHTML インスタンスを取得してIWebBrowser2::get_Document、必要なことを行うだけです。

于 2013-10-30T16:23:00.380 に答える