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