次の方法で共有


ATL DHTML コントロールの変更

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 という別のメソッドを追加し、今回に限り、"UI" で終わるインターフェイスに追加します。.cpp ファイル内でスタブとして作成された HelloHTML メソッドを見つけ、メッセージ ボックスを表示するコードを追加します。次に例を示します。

    ::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);
    

    IWebBrowser2 メソッドを使用できます。.h ファイル内のそのインターフェイスへのポインターが ATL によって提供されるためです。

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

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

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

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

  2. もう 1 つ 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 メッセージ ボックスを表示できます。

これで、変更した DHTML コントロールをビルドしてテストすることができます。

関連項目

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