MFC ActiveX コントロール : ActiveX コントロールへのストック イベントの追加
ストック イベントはカスタム イベントと COleControlクラスによって自動的に起動されることです。 COleControl は イベントを発生させる定義済みのなメンバー関数が含まれている一般的な操作になります。 COleControl によって実装される一般的なアクションはマウス ボタンの状態のコントロール、キーボード イベントおよび変更の一つとダブルクリックが含まれます。 ストック イベントのイベント マップ エントリは EVENT_STOCK の前に常に挿入されます。
イベント追加ウィザードでサポートされるストック イベント
COleControl クラスは、次の表に示す 10 のストック イベントを提供します。 ユーザーが イベント追加ウィザードを使用してコントロールに作成するイベントを指定できます。
ストック イベント
イベント |
発生関数 |
コメント |
---|---|---|
クリックする場所 |
void な FireClick () |
コントロールがマウスをキャプチャする際に発生する、BUTTONUP どの (中間、または右揃え) メッセージが検出され、ボタンはコントロールに解放されます。 MouseDown および MouseUp イベントのストック イベントは、このイベントの前に発生します。 イベント マップ エントリ: EVENT_STOCK_CLICK( ) |
DblClick |
void な FireDblClick () |
BUTTONDBLCLK メッセージがいつ受信またはクリックに似ていますが、発生させる。 イベント マップ エントリ: EVENT_STOCK_DBLCLICK( ) |
エラー |
void FireError( SCODE のscode, LPCSTR lpszDescription, UINT nHelpID = 0 ) |
エラーがメソッドの呼び出しまたはプロパティ アクセスのスコープ外の ActiveX コントロール内で発生するときに発生します。 イベント マップ エントリ: EVENT_STOCK_ERROREVENT( ) |
KeyDown |
void FireKeyDown( short nChar, short nShiftState ) |
WM_SYSKEYDOWN または WM_KEYDOWN メッセージを受信したときに発生します。 イベント マップ エントリ: EVENT_STOCK_KEYDOWN( ) |
KeyPress |
void FireKeyPress( short* pnChar ) |
WM_CHAR メッセージを受信したときに発生します。 イベント マップ エントリ: EVENT_STOCK_KEYPRESS( ) |
KeyUp |
void FireKeyUp( short nChar, short nShiftState ) |
WM_SYSKEYUP または WM_KEYUP メッセージを受信したときに発生します。 イベント マップ エントリ: EVENT_STOCK_KEYUP( ) |
MouseDown |
void FireMouseDown( short nButton, short nShiftState, float X, float y ) |
どの BUTTONDOWN、中央、右側に残っています) を受け取ると発生します。 マウスがこのイベントが発生する直前にキャプチャされます。 イベント マップ エントリ: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove |
void FireMouseMove( short nButton, short nShiftState, float X, float y ) |
WM_MOUSEMOVE メッセージを受信したときに発生します。 イベント マップ エントリ: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp イベント |
void FireMouseUp( short nButton, short nShiftState, float X, float y ) |
どの BUTTONUP、中央、右側に残っています) を受け取ると発生します。 マウス キャプチャは、このイベントが発生する前に解放されます。 イベント マップ エントリ: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange |
void な FireReadyStateChange () |
データ量によって次の準備状態にコントロールを遷移させる場合は、受け取ったときに発生します。 イベント マップ エントリ: EVENT_STOCK_READYSTATECHANGE( ) |
イベント追加ウィザードを使用して ActiveX コントロールの追加
ストック イベントを追加しても、実際のイベントの発生が基本クラスによって自動的に処理されるためです。COleControl、カスタム イベントを追加するよりも処理を。 次の手順では MFC ActiveX コントロール ウィザードを使用して開発したコントロールに ActiveX コントロールを追加します。 キーを押すとコントロールがアクティブになり、KeyPress というイベント。 この手順を他のストック イベントを追加することもできます。 KeyPress 指定のストック イベントの名前に置き換えてください。
KeyPress のストック イベントをイベント追加ウィザードを追加するには
コントロールのプロジェクトを読み込んでください。
クラス ビューで、ショートカット メニューを開き、ActiveX コントロール クラスを右クリックします。
ショートカット メニューで、クリック 追加 は、[イベントの追加] をクリックします。
これは、イベント追加ウィザードを開きます。
イベント名 のドロップダウン リストで、KeyPressを選択します。
[完了] をクリックします。
ストック イベントのイベント ウィザードの変更を追加します。
ストック イベントをコントロールの基本クラスで処理されるため、イベント追加ウィザードでは、クラス宣言を変更しません。 これは、コントロールのイベント マップにイベントを追加し、.IDL ファイルにエントリを作成します。 次の行は、コントロール クラス実装 (.cpp) ファイルにあるコントロールのイベント マップに追加します:
EVENT_STOCK_KEYPRESS()
WM_CHAR メッセージが検出され、コントロールがアクティブである場合、次のコードを追加して KeyPress イベントを発生させます。 KeyPress イベントは制御コードからイベント起動関数 (FireKeyPress) を呼び出すことによって、ある場合に発生することがあります。
イベント追加ウィザードはコントロールの .IDL ファイルに次のコード行を追加する:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
この行は、標準のディスパッチ ID と KeyPress イベントを関連付け、コンテナーが KeyPress イベントを予測できるようにします。