次の方法で共有


Web ページへのコントロールの配置 (ATL チュートリアル、パート 7)

これで、コントロールが完成しました。 コントロールの動作を実際の環境で確認するには、Web ページに配置します。 コントロールを含む HTML ファイルは、コントロールを定義したときに作成されています。 ソリューション エクスプローラーから PolyCtl.htm ファイルを開くと、Web ページでコントロールを確認できます。

この手順では、コントロールに機能を追加し、Web ページをスクリプト化してイベントに応答します。 また、コントロールのスクリプトが安全であることを Internet Explorer に通知できるように、コントロールを変更します。

新しい機能の追加

コントロール機能を追加する手順

PolyCtl.cpp を開き、次のコードを置き換えます。

if (PtInRegion(hRgn, xPos, yPos))
  Fire_ClickIn(xPos, yPos);
else
  Fire_ClickOut(xPos, yPos);

with

short temp = m_nSides;
if (PtInRegion(hRgn, xPos, yPos))
{
  Fire_ClickIn(xPos, yPos);
  put_Sides(++temp);
}
else
{
  Fire_ClickOut(xPos, yPos);
  put_Sides(--temp);
}

以上で、図形では、クリックした場所に応じて辺が追加または削除されます。

Web ページのスクリプティング

コントロールではまだ何も実行されないので、送信したイベントに応答できるように Web ページを変更します。

Web ページをスクリプティングするには

  1. PolyCtl.htm を開き、HTML ビューを選択します。 次のコードを HTML コードに追加します。 追加する場所は </OBJECT> の後、</BODY> の前です。

    <SCRIPT LANGUAGE="VBScript">
    <!--
        Sub PolyCtl_ClickIn(x, y)
            MsgBox("Clicked (" & x & ", " & y & ") - adding side")
        End Sub
        Sub PolyCtl_ClickOut(x, y)
            MsgBox("Clicked (" & x & ", " & y & ") - removing side")
        End Sub
    -->
    </SCRIPT>
    
  2. HTM ファイルを保存します。

コントロールから Sides プロパティを取得する VB スクリプト コードを追加しました。 コントロールの内側をクリックすると、辺の数を 1 ずつ増やします。 コントロールの外側がクリックされた場合は、辺の数を 1 ずつ減らします。

コントロールのスクリプトが安全であることを示す

コントロールを含む Web ページは Internet Explorer でのみ表示できます。 他のブラウザーでは、セキュリティ上の弱点のため、ActiveX コントロールがサポートされなくなりました。

Note

コントロールが表示されない場合は、一部のブラウザーでは、ActiveX コントロールを実行するために設定の調整が必要であることにご注意ください。 ActiveX コントロールを有効にする方法については、ブラウザーのドキュメントを参照してください。

Internet Explorer の現在のセキュリティ設定によっては、[セキュリティの警告] ダイアログ ボックスが表示される場合があります。 これは、コントロールはスクリプト化するのに安全ではなく、損傷を与える可能性があることを示します。 たとえば、ファイルを表示するコントロールに、ファイルを削除する Delete メソッドも含まれている場合、このコントロールは、ページを表示するだけの場合は安全です。 ただし、Delete メソッドが呼び出される可能性もあるため、このコントロールのスクリプトは安全ではありません。

重要

このチュートリアルでは、安全としてマークされていない ActiveX コントロールを実行できるように、Internet Explorer のセキュリティ設定を変更できます。 コントロール パネルで [インターネットのプロパティ][セキュリティ] の順にクリックし、適切な設定を変更します。 チュートリアルを完了したら、セキュリティ設定を元の状態に戻してください。

このコントロールに関しては [セキュリティの警告] ダイアログ ボックスを表示する必要がないことを、Internet Explorer にプログラムで通知することもできます。 これを行うには、IObjectSafety インターフェイスを使用します。 ATL では、このインターフェイスの実装をクラス IObjectSafetyImpl で提供します。 このインターフェイスをコントロールに追加するには、IObjectSafetyImpl を継承クラスの一覧に追加し、そのエントリを COM マップに追加します。

コントロールに IObjectSafetyImpl を追加するには

  1. PolyCtl.h で、継承するクラスのリストの末尾に次の行を追加し、直前の行にコンマを追加します。

    public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
    
  2. PolyCtl.h の COM マップに次の行を追加します。

    COM_INTERFACE_ENTRY(IObjectSafety)
    

コントロールのビルドとテスト

コントロールをビルドします。 ビルドが完了したら、PolyCtl.htm をブラウザー ビューで再度開きます。 今度は、[セキュリティの警告] ダイアログ ボックスは表示されず、Web ページが直接表示されます。 多角形の内側をクリックすると、辺の数が 1 ずつ増えます。 多角形の外側をクリックすると、辺の数が減ります。

手順 6 に戻る

次のステップ

この手順で、ATL チュートリアルは終わりです。 ATL に関する詳細情報のリンクについては、ATL のスタート ページを参照してください。

関連項目

チュートリアル