MFC ActiveX コントロール : イベント
更新 : 2007 年 11 月
ActiveX コントロールは、コントロールに起こった動作をイベントを使ってコンテナに通知します。一般的なイベントの例としては、コントロールのクリック、キーボードを使ったデータ入力、コントロールの状態の変化などがあります。これらの動作が起こると、コントロールは、イベントを発生させてコンテナに通知します。
イベントは、メッセージとも呼ばれます。
MFC は、ストック イベントとカスタム イベントの 2 種類のイベントをサポートしています。ストック イベントとは、COleControl クラスによって自動的に処理されるイベントです。ストック イベントの一覧については、「MFC ActiveX コントロール : ActiveX コントロールへのストック イベントの追加」を参照してください。カスタム イベントを使うと、コントロールに固有の動作が起こったときにそれをコンテナに通知できます。たとえば、コントロールの内部状態の変化や特定のウィンドウ メッセージの受信などを通知できます。
コントロールでイベントを正しく発生させるには、コントロール クラスで、コントロールの各イベントをそのイベントが発生したときに呼び出すメンバ関数に割り当てる必要があります。この割り当てはイベント マップと言い、この機構によってイベントに関する情報を 1 か所に集めることができるため、Visual Studio ではコントロールのイベントに簡単にアクセスして、操作できます。イベント マップを宣言するには、コントロール クラス宣言のヘッダー (.H) ファイルにある次のマクロを使います。
DECLARE_EVENT_MAP()
イベント マップを宣言したら、それをコントロールの実装 (.CPP) ファイルで定義する必要があります。イベント マップを定義して、コントロールで特定のイベントを発生させるコード行を次に示します。
BEGIN_EVENT_MAP(CMyAxUICtrl, COleControl)
...
END_EVENT_MAP()
MFC ActiveX コントロール ウィザードを使ってプロジェクトを作成すると、これらのコードが自動的に追加されます。MFC ActiveX コントロール ウィザードを使わなかった場合は、このコードを直接追加する必要があります。
クラス ビューでは、COleControl クラスでサポートされているストック イベントや自分で定義したカスタム イベントを追加できます。新しいイベントを追加するたびに、クラス ビューによって、対応するエントリがコントロールのイベント マップと .IDL ファイルに自動的に追加されます。
イベントの詳細については、次の 2 つのトピックを参照してください。