次の方法で共有


ActiveX コントロール コンテナー : ActiveX コントロールで発生したイベントの処理

この技術情報では、 ActiveX コントロール コンテナーに ActiveX コントロールのイベント ハンドラーをインストールするには、プロパティ] ウィンドウを使用する方法について説明します。イベント ハンドラーが特定のイベント通知 (コントロール)から受信し、応答で操作を実行するために使用されます。この通知は 「一致」をイベントと呼ばれます。

[!メモ]

この技術情報は、プロシージャ、およびコードでダイアログ ベースの ActiveX コントロール コンテナー プロジェクトには、という名前の Container と例として Circ という名前の埋め込みコントロールを使用します。

[プロパティ] ウィンドウの [イベント] ボタンを使用して、 ActiveX コントロール コンテナー アプリケーションで発生するイベント マップを作成できます。「イベント シンク マップと呼ばれるこのマッピングに追加すると」コントロール コンテナー クラスにイベント ハンドラーを Visual C++ によって作成および保持されます。イベント マップ エントリと実装される各イベント ハンドラーはコンテナーのイベント ハンドラー メンバー関数に特定のイベントをマップします。このイベント ハンドラー関数は、指定されたイベントが ActiveX コントロールのオブジェクトで発生したときに呼び出されます。

イベント シンク マップの詳細については、 クラス ライブラリ リファレンスイベント シンク マップ を参照してください。

プロジェクトへのイベント ハンドラーの変更

イベント ハンドラーを追加するには、プロパティ] ウィンドウを使用すると、イベント シンク マップは、プロジェクトで宣言および定義されます。次のステートメントは、コントロールの .cpp ファイルにイベント ハンドラーが追加されたときに追加されます。このコードは、ダイアログ ボックス クラス (この場合は CContainerDlg)のイベント シンク マップを宣言します:

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)


...


END_EVENTSINK_MAP()

イベントを追加するには、プロパティ] ウィンドウを使用するので、イベント マップ エントリ (ON_EVENT)は、コンテナーの実装 (.cpp)ファイルにイベント シンク マップとイベント ハンドラー関数に追加されます追加されます。

次の例では、 Circ のコントロールの ClickIn のイベントの OnClickInCircCtrlと、呼び出されるイベント ハンドラーを宣言します:

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
   ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1, 
      VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

また、次のテンプレートは、イベント ハンドラー メンバー関数の CContainerDlg のクラス実装 (.cpp)ファイルに追加されます:

BOOL CContainerDlg::OnClickInCircctrl1(OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY)
{
   // use nX and nY here
   TRACE(_T("nX = %d, nY = %d\n"), nX, nY);
   return TRUE;
}

イベント シンクのマクロの詳細については、 クラス ライブラリ リファレンスイベント シンク マップ を参照してください。

イベント ハンドラー関数を作成するには

  1. クラス ビューから、 ActiveX コントロールをダイアログ クラスを選択します。この例では、 CContainerDlgを使用します。

  2. [プロパティ] ウィンドウの [イベント] をクリックします。

  3. [プロパティ] ウィンドウで、埋め込み ActiveX コントロールの ID を選択します。この例では、 IDC_CIRCCTRL1を使用します。

    [プロパティ] ウィンドウでは、 ActiveX コントロールによって発生する可能性のあるイベントの一覧が表示されます。太字で示されているメンバー関数は既にハンドラー関数に割り当てますがあります。

  4. ダイアログ クラスが処理するイベントを選択します。この例で、を選択します クリック

  5. 下のボックスの一覧で、を選択します 追加 ClickCircctrl1

  6. CContainerDlgの実装 (.cpp)ファイルのイベント ハンドラー コードにジャンプするにクラス ビューから新しいハンドラー関数をダブルクリック。

参照

概念

ActiveX コントロール コンテナー