MFC ActiveX コントロール : カスタム メソッドの追加
カスタム メソッドは、ストック メソッドと COleControlで既に実装されていないとは異なります。を使用して、コントロールに追加する各カスタム メソッドの実装を提供します。
ActiveX コントロールのユーザーはコントロール仕様の操作を実行するカスタム メソッドをいつでもダイヤルできます。カスタム メソッドのディスパッチ マップ エントリは、フォーム DISP_FUNCTIONです。
メソッド追加ウィザードでのカスタム メソッドの追加
次の手順では、 ActiveX コントロールのスケルトン コードへのカスタム メソッド PtInCircle を追加することを示します。PtInCircle は、コントロールに渡す座標が範囲外にあるかどうかの中によって決まります。この同じプロシージャが他のカスタム メソッドを追加することもできます。PtInCircle メソッド名とパラメーターのカスタム メソッドの名前とパラメーターに置き換えてください。
[!メモ]
この例では、技術情報のイベントから InCircle 関数を使用します。この関数の詳細については、技術情報 MFC ActiveX コントロール: ActiveX コントロールへのカスタム イベントを追加できます。を参照してください。
PtInCircle のカスタム メソッドをメソッド追加ウィザードを追加するには
コントロール プロジェクトを読み込んでください。
クラス ビューで、コントロールのライブラリ ノードを展開します。
ショートカット メニューを開くには、コントロール (ライブラリ ノードの 2 番目のノード)のインターフェイス ノードを右クリックします。
ショートカット メニューの [ 追加 をクリックし、 メソッドの追加をクリックします。
これは、メソッド追加ウィザードを開きます。
メソッド名 ボックスで、型 PtInCircle。
Internal Name ボックスで、メソッドの内部関数名を入力するか、既定値 (この場合、 PtInCircle)を使用します。
戻り値の型(E),戻り値の型,戻り値の型(Y) ボックスで、メソッドの戻り値の型のをクリック VARIANT_BOOL 。
パラメーターの型 と パラメーター名,パラメーター名(N) のコントロールを使用して、 xCoord (型 OLE_XPOS_PIXELS)というパラメーターを追加します。
パラメーターの型 と パラメーター名,パラメーター名(N) のコントロールを使用して、 yCoord(型 OLE_YPOS_PIXELS)というパラメーターを追加します。
[完了] をクリックします。
カスタム メソッドのメソッド追加ウィザードの変更を追加します。
カスタム メソッドを追加すると、メソッド追加ウィザードでは、ヘッダー コントロール クラスに対する変更を加えます。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_PIXELS と VTS_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);
}
参照
関連項目
[クラス ビュー] ウィンドウとオブジェクト ブラウザーのアイコン