次の方法で共有


ATL DHTML コントロールの変更

更新 : 2007 年 11 月

ATL コントロール ウィザードには、コントロールをビルドおよび実行できるように、初期コードが用意されています。それによって、プロジェクト ファイルの中でメソッドがどのように記述されているか、および DHTML がディスパッチ メソッドを使用してコントロールの C++ コードをどのように呼び出すかを確認できます。ディスパッチ メソッドをインターフェイスに追加し、HTML リソースでそのメソッドを呼び出すことができます。

ATL DHTML コントロールを変更するには

  1. クラス ビューでコントロール プロジェクトを展開します。

    末尾が "UI" のインターフェイスには、OnClick というメソッドが 1 つあります。末尾が "UI" でないインターフェイスには、メソッドがありません。

  2. 末尾が "UI" でないインターフェイスに MethodInvoked というメソッドを追加します。

    このメソッドは、コンテナの対話のためにコントロール コンテナ内で使用されるインターフェイスに追加されます。コントロールとの対話のために DHTML によって使用されるインターフェイスには追加されません。コンテナだけがこのメソッドを呼び出すことができます。

  3. スタブとして作成されたメソッドを .cpp ファイルで検索し、メッセージ ボックスを表示する次のようなコードを追加します。

    ::MessageBox(NULL, _T("I'm invoked"), _T("Your Container Message"), MB_OK);
    
  4. HelloHTML という 2 番目のメソッドを、今回だけ末尾が "UI" のインターフェイスに追加します。スタブとして作成された HelloHTML メソッドを .cpp ファイルで検索し、メッセージ ボックスを表示する次のようなコードを追加します。

    ::MessageBox(NULL, _T("Here's your message"), _T("HelloHTML"), MB_OK);
    
  5. 末尾が "UI" でないインターフェイスに、3 番目のメソッド GoToURL を追加します。このメソッドは、次のように IWebBrowser2::Navigate を呼び出して実装します。

    m_spBrowser->Navigate(CComBSTR(L"www.microsoft.com"), NULL, NULL, NULL, NULL);
    

    .h ファイルには、ATL によって自動的に IWebBrowser2 インターフェイスへのポインタが追加されるため、このインターフェイスのメソッドを使うことができます。

次に、HTML リソースを変更して、作成したメソッドを呼び出します。これらのメソッドを呼び出すために 3 つのボタンを追加します。

HTML リソースを変更するには

  1. ソリューション エクスプローラで .htm ファイルをダブルクリックして HTML リソースを表示します。

    HTML (特に外部ウィンドウ ディスパッチ メソッドの呼び出し) について調べます。HTML はプロジェクトの OnClick メソッドを呼び出します。パラメータは、コントロール本体 (theBody) と割り当てられる色 ("red") を示します。メソッド呼び出しの後ろのテキストは、ボタンに表示されるラベルです。

  2. 色だけを変える OnClick メソッドを追加します。次に例を示します。

    <br>
    <br>
    <BUTTON onclick='window.external.OnClick(theBody, "white");'>Refresh</BUTTON>
    

    このメソッドは、Refresh というラベルのボタンを作成します。ユーザーがこのボタンをクリックすると、コントロールが元の白い背景に戻ります。

  3. 作成した HelloHTML メソッドへの呼び出しを追加します。次に例を示します。

    <br>
    <br>
    <BUTTON onclick='window.external.HelloHTML();'>HelloHTML</BUTTON>
    

    このメソッドは、HelloHTML というラベルのボタンを作成します。ユーザーがこのボタンをクリックすると、HelloHTML というメッセージ ボックスが表示されます。

これで、ビルドを行い、変更した ATL DHTML コントロールのテストを行うことができます。

参照

その他の技術情報

DHTML コントロールに対する ATL のサポート