次の方法で共有


DHTML コントロール プロジェクトの要素の特定

ほとんどの DHTML コントロール コードは、ATL コントロール用に作成されたものとまったく同じです。 汎用コードの基本的な理解については、ATL チュートリアルに関するページを参照し、「ATL プロジェクトの作成」および「ATL COM オブジェクトの基礎」を参照してください。

DHTML コントロールは、ATL コントロールに似ていますが、次の点を除きます。

  • コントロールが実装する通常のインターフェイスに加えて、C++ コードと HTML ユーザー インターフェイス (UI) の間の通信に使用される追加のインターフェイスが実装されます。 HTML UI は、このインターフェイスを使用して C++ コードを呼び出します。

  • これにより、コントロール UI の HTML リソースが作成されます。

  • これにより、型 IWebBrowser2 のスマート ポインターであるメンバー変数 m_spBrowser を使用して、DHTML オブジェクト モデルにアクセスできます。 DHTML オブジェクト モデルの任意の部分にアクセスするには、このポインターを使用します。

次の図は、DLL、DHTML コントロール、Web ブラウザー、HTML リソースの関係を示しています。

DHTML コントロール プロジェクトの要素の図。

Note

この図にある名前はプレースホルダーです。 HTML リソースの名前とコントロールで公開されるインターフェイスは、ATL コントロール ウィザードで割り当てる名前に基づいて行います。

この図では、要素は次のとおりです。

  • My DLL ATL プロジェクト ウィザードを使用して作成される DLL。

  • DHTML コントロール (m_spBrowser) ATL オブジェクト ウィザードを使用して作成される DHTML コントロール。 このコントロールは、Web ブラウザー オブジェクトのインターフェイス、IWebBrowser2 を介して Web ブラウザー オブジェクトとそのメソッドにアクセスします。 コントロール自体により、コントロールに必要な他の標準インターフェイスに加えて、次の 2 つのインターフェイスが公開されます。

    • IDHCTL1 コンテナーでのみ使用するために、コントロールによって公開されるインターフェイス。

    • IDHCTLUI1 C++ コードと HTML ユーザー インターフェイスの間で通信するためのディスパッチ インターフェイス。 Web ブラウザーは、コントロールのディスパッチ インターフェイスを使用してコントロールを表示します。 window.external を呼び出し、その後にこのディスパッチ インターフェイスで呼び出したいメソッド名を指定して、コントロールのユーザー インターフェイスからこのディスパッチ インターフェイスのさまざまなメソッドを呼び出すことができます。 このコントロールの UI を作成する HTML 内の SCRIPT タグから window.external にアクセスします。 リソース ファイルで外部メソッドを呼び出す方法の詳細については、「DHTML からの C++ コードの呼び出し」を参照してください。

  • IDR_CTL1 HTML リソースのリソース ID。 そのファイル名。この場合は DHCTL1UI.htm。 DHTML コントロールは、テキスト エディターを使用して編集できる標準の HTML タグと外部ウィンドウ ディスパッチ コマンドを含む HTML リソースを使用します。

  • Web ブラウザー Web ブラウザーには、HTML リソース内の HTML に基づいて、コントロールの UI が表示されます。 DHTML オブジェクト モデルへのアクセスを許可するために、Web ブラウザーの IWebBrowser2 インターフェイスへのポインターを DHTML コントロールで使用できます。

ATL コントロール ウィザードにより、HTML リソースと .cpp ファイルの両方に既定のコードを含むコントロールが生成されます。 ウィザードによって生成されたコントロールをコンパイルして実行し、コントロールを Web ブラウザーまたは ActiveX コントロール Test Container で表示できます。 次の図は、Test Container に 3 つのボタンが表示された既定の ATL DHTML コントロールを示しています。

ATL DHTML コントロール。

DHTML コントロールの構築を開始するには、「ATL DHTML コントロールの作成」を参照してください。 Test Container にアクセスする方法について詳しくは、「Test Container でのプロパティとイベントのテスト」をご覧ください。

関連項目

DHTML コントロールのサポート