MFC ActiveX コントロール : ActiveX コントロールへのストック イベントの追加
ストック イベントはカスタム イベントとクラス COleControlによって自動的に実行されるとは異なります。COleControl は、イベントを発生させる定義済みのメンバー関数が含まれている一般的な操作になります。COleControl によって実装される一般的な操作は、マウス ボタンの状態のコントロール、キーボード イベントおよび変更の一つとダブルクリックが含まれます。ストック イベントのイベント マップ エントリは EVENT_STOCK のプレフィックスに常に表示されます。
追加のイベント ウィザードでサポートされるストック イベント
COleControl のクラスを次の表に示す 10 のストック イベントを提供します。、 イベント ウィザードを追加します。を使用してコントロールの任意のイベントを指定できます。
ストック イベント
Event |
起動関数 |
コメント |
---|---|---|
クリックする場所 |
無効の FireClick () |
コントロールがマウスをキャプチャする際に発生する、 BUTTONUP の種類 (、中央、または、左)メッセージは受け取られ、ボタン コントロールに解放されます。MouseDown と MouseUp のストック イベントは、このイベントの前に発生します。 イベント マップ エントリ: EVENT_STOCK_CLICK( ) |
DblClick |
無効の 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 xy ), float |
どの BUTTONDOWN (、中央、または承認なっている)受け取ると発生します。マウスがこのイベントが発生する直前にキャプチャされます。 イベント マップ エントリ: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove |
void FireMouseMove( short nButton, short nShiftState, float xy ), float |
WM_MOUSEMOVE のメッセージを受信したときに発生します。 イベント マップ エントリ: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp |
void FireMouseUp( short nButton, short nShiftState, float xy ), float |
どの BUTTONUP (、中央、または承認なっている)受け取ると発生します。マウスのキャプチャはこのイベントが発生する前に解放されます。 イベント マップ エントリ: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange |
無効の FireReadyStateChange () |
データの量によって次の準備状態にコントロールを遷移が受け取ったときに発生します。 イベント マップ エントリ: EVENT_STOCK_READYSTATECHANGE( ) |
イベントの追加ウィザードを使用して、ストック イベントの追加
ストック イベントを追加すると、実際のイベントの発生が基本クラスによって自動的に処理されるためです。カスタム イベント、 COleControlを追加するよりも処理が。次の手順では、 MFC ActiveX コントロール ウィザードを使用して開発したコントロールにストック イベントを追加します。キーを押すとコントロールはアクティブになっているという KeyPress イベント起動します。この手順を他のストック イベントを追加することもできます。KeyPress の選択したストック イベントの名前で置き換えます。
KeyPress のストック イベントをイベントの追加ウィザードを追加するには
コントロール プロジェクトを読み込んでください。
クラス ビューで、ショートカット メニューを開くには、 ActiveX コントロール クラスを右クリックします。
ショートカット メニューの [ 追加 をクリックし、 イベントの追加をクリックします。
これは、イベントの追加ウィザードを開きます。
Event Name のドロップダウン リストで、を選択 KeyPress。
[完了] をクリックします。
ストック イベントのイベント ウィザードの変更を追加します。
ストック イベントがコントロールの基本クラスで処理されるため、追加のイベント ウィザードは何かのクラス宣言を変更しません。これは、コントロールのイベント マップにイベントを追加し、 .IDL のエントリを加える。次の行はコントロール クラスの実装 (.cpp)ファイルにあるコントロールのイベント マップに追加されます:
EVENT_STOCK_KEYPRESS()
WM_CHAR のメッセージが受け取られ、コントロールがアクティブになるときにこのコードを追加して KeyPress イベントを発生させます。KeyPress イベントは、コントロール コード内から発生関数 (たとえば、) FireKeyPress呼び出すことによって、ある場合は、起動できます。
追加のイベント ウィザードは、コントロールの .IDL ファイルに次のコード行を追加します:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
この行は標準のディスパッチ ID と KeyPress イベントを関連付け、コンテナーが KeyPress イベントを予測できるようにします。