次の方法で共有


MFC ActiveX コントロール : カスタム メソッドの追加

カスタム メソッドはストック メソッドと COleControlで既に実装されないことです。 データをコントロールに追加した各カスタム メソッドの実装を提供する必要があります。

ActiveX コントロールのユーザーは、コントロール固有のアクションを実行するカスタム メソッドをいつでも呼び出すことができます。 カスタム メソッドのディスパッチ マップ エントリがフォーム DISP_FUNCTIONです。

追加のメソッドと、ウィザードでカスタム メソッドの追加

次の手順では、ActiveX コントロールのスケルトン コードへのカスタム PtInCircle メソッドを追加することです。 PtInCircle はコントロールに渡す座標が範囲外にあるかどうかの中によって決まります。 これと同じプロシージャが他のカスタム メソッドを追加することもできます。 PtInCircle メソッド名、およびパラメーターをカスタム メソッドの名前とパラメーターに置き換えてください。

注意

この例では、"イベントの InCircle 関数を使用します。この関数の詳細については、記事 MFC ActiveX コントロール: ActiveX コントロールにカスタム イベントを追加できます。を参照します。

PtInCircle カスタム メソッドを追加ウィザードのメソッドを追加するには

  1. コントロールのプロジェクトを読み込んでください。

  2. クラス ビューで、コントロール ライブラリ ノードを展開します。

  3. ショートカット メニューを表示するコントロール (ライブラリ ノードの 2 番目のノード) のインターフェイス ノードを右クリックします。

  4. ショートカット メニューの 追加 をクリックし、メソッドの追加をクリックします。

    これは、メソッドの追加ウィザードが表示されます。

  5. メソッド名 ボックスで、PtInCircleを入力します。

  6. 内部名 ボックスで、メソッドの内部関数の名前を入力するか、既定値 (この場合は PtInCircle) を使用します。

  7. 戻り値の型 ボックスで、メソッドの戻り値の型の VARIANT_BOOL をクリックします。

  8. パラメータの種類パラメータ名 のコントロールを使用して、xCoord (型 OLE_XPOS_PIXELS) というパラメーターを追加します。

  9. パラメータの種類パラメータ名 のコントロールを使用して、yCoord (型 OLE_YPOS_PIXELS) というパラメーターを追加します。

  10. [完了] をクリックします。

カスタム メソッドのメソッド ウィザードの変更を追加します。

カスタム メソッドを追加すると、追加のメソッド ウィザードはコントロール クラスのヘッダーを変更します。H) と実装 (.cpp) ファイル。 次の行では、コントロール クラスのヘッダーのディスパッチ マップの宣言に追加されます。H) ファイル:

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

このコードは、Dispatch メソッド ハンドラーによって呼び出されます PtInCircleを宣言します。 この関数は、外部名 PtInCircle を使用するコントロールのユーザーから呼び出すことができます。

以下は、コントロールの .IDL ファイルに追加します:

[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

この行は特定の ID 番号、メソッドの追加ウィザードのメソッドのメソッドの位置 PtInCircle のメソッドに割り当て、プロパティを選択します。 カスタム メソッドを追加するには、追加のメソッド ウィザードが使用されているため、のエントリがプロジェクトの .IDL ファイルに自動的に追加されます。

また、コントロール クラスの実装 (.cpp) ファイル内の次の行はコントロールのディスパッチ マップに追加します:

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

DISP_FUNCTION マクロはコントロールのハンドラー関数に PtInCircle メソッド、PtInCircleをマップし、VARIANT_BOOLであると戻り値の型を宣言し PtInCircleに渡される型 VTS_XPOS_PIXELSVTS_YPOSPIXELS の 2 個のパラメーターを宣言します。

最後に、追加のメソッドはウィザード コントロールの実装 (.cpp) ファイルの下にスタブ関数 CSampleCtrl::PtInCircle を追加します。 既に説明したように機能する PtInCircle に次のように変更する必要があります:

VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   CPoint point(xCoord, yCoord);
   return InCircle(point);
}

参照

関連項目

[クラス ビュー] ウィンドウとオブジェクト ブラウザーのアイコン

概念

MFC ActiveX コントロール