次の方法で共有


MFC ActiveX コントロール: ActiveX コントロールへのストック イベントの追加

ストック イベントは、 クラス COleControl によって自動的に発生するという点で、カスタム イベントとは異なります。 COleControl には、一般的なアクションに起因するイベントを発生する定義済みのメンバー関数が含まれています。 COleControlによって実装される一般的なアクションには、コントロールのシングル クリックとダブルクリック、キーボード イベント、マウス ボタンの状態の変化などがあります。 ストック イベントのイベント マップ エントリの前には、常に EVENT_STOCK プレフィックスが付きます。

イベントの追加ウィザードでサポートされるストック イベント

COleControl クラスは、次の表に示す 10 個のストック イベントを提供します。 イベントの 追加ウィザードを使用して、コントロールに必要なイベントを指定できます。

ストック イベント

出来事 関数の起動 コメント
クリック void FireClick( ) コントロールがマウスをキャプチャすると、 BUTTONUP (左、中央、または右) のメッセージが受信され、ボタンがコントロール上で離されると発生します。 株価 MouseDown イベントと MouseUp イベントは、このイベントの前に発生します。

イベント マップ エントリ: EVENT_STOCK_CLICK( )
DblClick void FireDblClick( ) Click に似ていますが、 BUTTONDBLCLK メッセージを受信したときに発生します。

イベント マップ エントリ: EVENT_STOCK_DBLCLICK( )
エラー void FireError( SCODEscode, LPCSTRlpszDescription, UINTnHelpID= 0 ) メソッド呼び出しまたはプロパティ アクセスのスコープ外で ActiveX コントロール内でエラーが発生したときに発生します。

イベント マップ エントリ: EVENT_STOCK_ERROREVENT( )
KeyDown void FireKeyDown( shortnChar, shortnShiftState) WM_SYSKEYDOWNまたはWM_KEYDOWNメッセージを受信したときに発生します。

イベント マップ エントリ: EVENT_STOCK_KEYDOWN( )
KeyPress void FireKeyPress( short*pnChar) WM_CHAR メッセージを受信したときに発生します。

イベント マップ エントリ: EVENT_STOCK_KEYPRESS( )
KeyUp void FireKeyUp( shortnChar, shortnShiftState) WM_SYSKEYUPまたはWM_KEYUPメッセージを受信したときに発生します。

イベント マップ エントリ: EVENT_STOCK_KEYUP( )
MouseDown void FireMouseDown( shortnButton, shortnShiftState, floatx, floaty) BUTTONDOWN (左、中央、または右) が受信された場合に発生します。 このイベントが発生する直前にマウスがキャプチャされます。

イベント マップ エントリ: EVENT_STOCK_MOUSEDOWN( )
MouseMove void FireMouseMove( shortnButton, shortnShiftState, floatx, floaty) WM_MOUSEMOVE メッセージを受信したときに発生します。

イベント マップ エントリ: EVENT_STOCK_MOUSEMOVE( )
MouseUp void FireMouseUp( shortnButton, shortnShiftState, floatx, floaty) BUTTONUP (左、中央、または右) が受信された場合に発生します。 このイベントが発生する前に、マウス キャプチャが解放されます。

イベント マップ エントリ: EVENT_STOCK_MOUSEUP( )
ReadyStateChange void FireReadyStateChange( ) 受信したデータの量が原因で、コントロールが次の準備完了状態に遷移したときに発生します。

イベント マップ エントリ: EVENT_STOCK_READYSTATECHANGE( )

イベントの追加ウィザードを使用したストック イベントの追加

ストック イベントを追加する場合、実際のイベントの発生は基底クラスの COleControlによって自動的に処理されるため、カスタム イベントを追加するよりも作業が少なくて済みます。 次の手順では、 MFC ActiveX コントロール ウィザードを使用して開発されたコントロールにストック イベントを追加します。 KeyPress と呼ばれるイベントは、キーが押され、コントロールがアクティブになると発生します。 この手順を使用して、他のストック イベントを追加することもできます。 選択したストック イベント名を KeyPress に置き換える。

イベントの追加ウィザードを使用して KeyPress ストック イベントを追加するには

  1. コントロールのプロジェクトを読み込みます。

  2. クラス ビューで、ActiveX コントロール クラスを右クリックしてショートカット メニューを開きます。

  3. ショートカット メニューの [ 追加 ] をクリックし、[ イベントの追加] をクリックします。

    イベントの追加ウィザードが開きます。

  4. [ イベント名 ] ドロップダウン リストで、[ KeyPress] を選択します。

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

ストック イベントのイベント の追加ウィザードの変更

ストック イベントはコントロールの基底クラスによって処理されるため、イベントの追加ウィザードではクラス宣言は変更されません。 コントロールのイベント マップにイベントを追加し、その中にエントリを作成します。IDL ファイル。 次の行は、コントロール クラスの実装 (.CPP) ファイル:

EVENT_STOCK_KEYPRESS()

このコードを追加すると、WM_CHAR メッセージが受信され、コントロールがアクティブになると、KeyPress イベントが発生します。 KeyPress イベントは、コントロール コード内から起動関数 ( FireKeyPress など) を呼び出すことによって、他の時点で発生させることができます。

イベントの追加ウィザードは、コントロールの次のコード行を追加します。IDL ファイル:

[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);

この行は、KeyPress イベントを標準ディスパッチ ID に関連付け、コンテナーが KeyPress イベントを予測できるようにします。

こちらも参照ください

MFC ActiveX コントロール
MFC ActiveX コントロール: メソッド
COleControl クラス