複合コントロールへの機能の追加

複合コントロールに必要なコントロールを挿入すると、新しい機能を追加、次の手順が含まれます。この新しい機能は、通常 2 つのカテゴリに分類されます。:

目的とこの記事の範囲については、このセクションの残りの部分は、イベント処理にのみ焦点を当ててください。

IDispEventImpl インターフェイスの宣言に含まれているコントロール

含まれているコントロールからのイベントを処理するごと、イベント ディスパッチ インターフェイスから派生することによって実装する必要があります、 IDispEventImplテンプレート クラス。この派生での複合コントロールの宣言が行われ、の 2 つのパラメーターで構成されています

基本クラス宣言では、次の例コード ライン、 IDispEventImplインターフェイスのコントロールを宣言 ( IDC_CIRCCTRL1 )、複合コントロール クラス ( CMyCompositeCtrl )。

公共の IDispEventImpllt、IDC_CIRCCTL1、CMyCompositeCtrl & gt(&L);

イベント シンク マップの宣言

イベント クラスごとに含まれるコントロールのディスパッチを宣言した後、イベント シンク マップを複合コントロール オブジェクトに追加する必要があります。このマップの 2 つを達成します。:

いくつかの定義済みマクロを使用して、イベント シンク マップを実装します。:

BEGIN_SINK_MAP(CtrlName

CtrlName複合コントロールのイベント シンク マップの開始位置を宣言します。

SINK_ENTRY(CtrlID, DispIID, dispID, EventHandler

指定されたイベント (dispID) のハンドラー関数 (イベント ハンドラー) のディスパッチ インターフェイスDispIIDCtrlIDによって識別されるコントロールの宣言します。

END_SINK_MAP()

CtrlName複合コントロールのイベント シンク マップの終了を宣言します。

コード例を次に示します (には。複合コントロールの CPP ファイル) はイベント シンク マップの宣言、 CMyCompositeCtrl オブジェクト。2 つのイベント ハンドラーを 2 つ含まれているコントロールを宣言 ( IDC_CIRCCTL1 および IDC_CIRCCTL2 )。両方のコントロールのクリック イベントを処理、 OnClick_CircCtrl1OnClick_CircCtrl2 関数。

BEGIN_SINK_MAP(CMyCompositeCtrl)特価;SINK_ENTRY (IDC_CIRCCTL1、DISPID_CLICK、OnClick_CircCtrl1)SINK_ENTRY (IDC_CIRCCTL2、DISPID_CLICK、OnClick_CircCtrl2)END_SINK_MAP()(&N)

イベント シンク マップを宣言した後は、複合コントロールのイベント ハンドラーを実装する手順を実行します。

宣言、イベント ハンドラーの実装

イベント シンク マップ ステップの宣言では、2 つ含まれている Circ コントロールの 2 つのイベント ハンドラーを宣言、新しいマップを追加します。これらのハンドラーを実装する時間になりました。形式は次のとおりです。:

retVal _ _stdcall EventHandler (args){特価;//handle イベントの適切な起動}(&N)

どこ retVal イベント ハンドラーの戻り値 EventHandler 関数ハンドラーの名前を指定し、 args 、イベントの引数のオプションの一覧です。この名前が、イベント ハンドラー、複合コントロールのイベント シンク マップの宣言の 1 つと一致する必要があります。

コード例を次に示しますでは、イベント ハンドラー (Click イベント) によって識別されるに含まれるコントロールを定義しますIDC_CIRCCTRL1:

void _ _stdcall (OnClick_CircCtrl1){特価;メッセージ ボックス (「発射される Click イベント !」、「CircCtl1」、MB_OK);}(&N)

マップ、複合コントロールのイベント ハンドラーの残りのエントリをイベント シンクを追加します。

開始して、含まれているコントロールとの接触を終了

複合コントロールが完全にアクティブになる前に、各含まれているコントロールは、そのイベントを処理しているイベントのディスパッチ インターフェイスなどのアウトゴーイング インターフェイスを照会します。すべてのインターフェイスが見つかった場合は、接続が確立されているし、するアウトゴーイング インターフェイスへの参照、コントロールからのイベントを処理するために使用されます。このプロシージャを"コントロールのアドバイスとして「と、複合コントロールの初期化時に、イベント シンク マップを使用して、複合コントロール オブジェクトによって自動的に行われます。

ユーザー ダイアログ ボックスを閉じると、アウトゴーイング インターフェイスに含まれているコントロールからすべてのストアド参照はクリーンアップされます。これを「コントロール アドバイズ中止」とも複合コントロールによって自動的に行われます。

Index