ATL DHTML コントロールの変更
ATL コントロール ウィザードには、コントロールをビルドして実行できるように、スタート コードが用意されています。これにより、メソッドがどのようにプロジェクト ファイルに記述されているか、および DHTML がディスパッチ メソッドを使用してコントロールの C++ コードを呼び出す方法を確認できます。 任意のディスパッチ メソッドをインターフェイスに追加できます。 次に、HTML リソース内のメソッドを呼び出すことができます。
ATL DHTML コントロールを変更するには
[クラス ビュー] で、コントロール プロジェクトを展開します。
"UI" で終わるインターフェイスには、
OnClick
という 1 つのメソッドがあることに注意してください。 "UI" で終了しないインターフェイスには、メソッドがありません。"UI" で終了しないインターフェイスに
MethodInvoked
というメソッドを追加します。このメソッドは、コントロールと対話するために DHTML で使用されるインターフェイスではなく、コンテナーとの対話のためにコントロール コンテナーで使用されるインターフェイスに追加されます。 このメソッドを呼び出すことができるのは、コンテナーだけです。
.cpp ファイル内でスタブとして作成されたメソッドを見つけ、メッセージ ボックスを表示するコードを追加します。次に例を示します。
::MessageBox(NULL, _T("I'm invoked"), _T("Your Container Message"), MB_OK);
HelloHTML
という別のメソッドを追加し、今回に限り、"UI" で終わるインターフェイスに追加します。.cpp ファイル内でスタブとして作成されたHelloHTML
メソッドを見つけ、メッセージ ボックスを表示するコードを追加します。次に例を示します。::MessageBox(NULL, _T("Here's your message"), _T("HelloHTML"), MB_OK);
"UI" で終了しないインターフェイスに 3 番目のメソッド
GoToURL
を追加します。次のように IWebBrowser2::Navigate を呼び出して、このメソッドを実装します。m_spBrowser->Navigate(CComBSTR(L"www.microsoft.com"), NULL, NULL, NULL, NULL);
IWebBrowser2
メソッドを使用できます。.h ファイル内のそのインターフェイスへのポインターが ATL によって提供されるためです。
次に、作成したメソッドを呼び出すように HTML リソースを変更します。 これらのメソッドを呼び出すために 3 つのボタンを追加します。
HTML リソースを変更するには
[ソリューション エクスプローラー] で、.htm ファイルをダブルクリックして HTML リソースを表示します。
HTML、特に外部 Windows ディスパッチ メソッドの呼び出しを調べます。 HTML はプロジェクトの
OnClick
メソッドを呼び出し、パラメーターはコントロールの本体 (theBody
) と割り当てる色 ("red
") を示します。 メソッド呼び出しの後に続くテキストは、ボタンに表示されるラベルです。もう 1 つ
OnClick
メソッドを追加し、色だけを変更します。 次に例を示します。<br> <br> <BUTTON onclick='window.external.OnClick(theBody, "white");'>Refresh</BUTTON>
このメソッドで Refresh というラベルのボタンを作成します。ユーザーはこのボタンをクリックして、コントロールを元の白の背景に戻すことができます。
作成した
HelloHTML
メソッドの呼び出しを追加します。 次に例を示します。<br> <br> <BUTTON onclick='window.external.HelloHTML();'>HelloHTML</BUTTON>
このメソッドで HelloHTML というラベルのボタンを作成します。ユーザーはそれをクリックして
HelloHTML
メッセージ ボックスを表示できます。
これで、変更した DHTML コントロールをビルドしてテストすることができます。