ストック イベントは、 クラス 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 ストック イベントを追加するには
コントロールのプロジェクトを読み込みます。
クラス ビューで、ActiveX コントロール クラスを右クリックしてショートカット メニューを開きます。
ショートカット メニューの [ 追加 ] をクリックし、[ イベントの追加] をクリックします。
イベントの追加ウィザードが開きます。
[ イベント名 ] ドロップダウン リストで、[
KeyPress
] を選択します。[完了] をクリックします。
ストック イベントのイベント の追加ウィザードの変更
ストック イベントはコントロールの基底クラスによって処理されるため、イベントの追加ウィザードではクラス宣言は変更されません。 コントロールのイベント マップにイベントを追加し、その中にエントリを作成します。IDL ファイル。 次の行は、コントロール クラスの実装 (.CPP) ファイル:
EVENT_STOCK_KEYPRESS()
このコードを追加すると、WM_CHAR メッセージが受信され、コントロールがアクティブになると、KeyPress イベントが発生します。 KeyPress イベントは、コントロール コード内から起動関数 ( FireKeyPress
など) を呼び出すことによって、他の時点で発生させることができます。
イベントの追加ウィザードは、コントロールの次のコード行を追加します。IDL ファイル:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
この行は、KeyPress イベントを標準ディスパッチ ID に関連付け、コンテナーが KeyPress イベントを予測できるようにします。