次の方法で共有


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

カスタム メソッドは、ストック メソッドと COleControlで既に実装されていないとは異なります。を使用して、コントロールに追加する各カスタム メソッドの実装を提供します。

ActiveX コントロールのユーザーはコントロール仕様の操作を実行するカスタム メソッドをいつでもダイヤルできます。カスタム メソッドのディスパッチ マップ エントリは、フォーム DISP_FUNCTIONです。

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

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

[!メモ]

この例では、技術情報のイベントから InCircle 関数を使用します。この関数の詳細については、技術情報 MFC ActiveX コントロール: ActiveX コントロールへのカスタム イベントを追加できます。を参照してください。

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

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

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

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

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

    これは、メソッド追加ウィザードを開きます。

  5. メソッド名 ボックスで、型 PtInCircle。

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

  7. 戻り値の型(E),戻り値の型,戻り値の型(Y) ボックスで、メソッドの戻り値の型のをクリック VARIANT_BOOL

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

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

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

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

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

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

このコードはディスパッチのメソッド ハンドラーによって呼び出されます 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に渡す 2 パラメーター型 VTS_XPOS_PIXELSVTS_YPOSPIXELS を宣言します。

最後に、メソッド追加ウィザードは、コントロールの実装 (.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 コントロール