共用方式為


MFC ActiveX 控制項:將內建事件加入至 ActiveX 控制項

內建事件與自訂事件不同在於它們是由類別 COleControl 自動引發。 COleControl 包含預先定義的成員函式,其會因為一般動作而引發事件。 COleControl 實作的一些常見的動作包括單一和按兩下控制項、鍵盤事件和滑鼠狀態變更。 內建事件的事件對應項目永遠會在 EVENT_STOCK 前置詞之後。

加入事件精靈支援的內建事件

COleControl 類別提供十個內建事件,列在下表中。 您可以使用 加入事件精靈在控制項中指定您想要的事件。

內建事件

事件

引發函式

註解

按一下

void FireClick( )

當控制項捕捉到滑鼠、收到任何 BUTTONUP (中間,左邊或右邊) 訊息,或是按鈕被釋放在控制項上時引發。 內建 MouseUp 和 MouseDown 事件會在這個事件之前發生。

事件對應輸入:EVENT_STOCK_CLICK( )

DblClick

void FireDblClick( )

類似於 Click,但當接收到 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_SYSKEYDOWNWM_KEYDOWN 訊息時引發。

事件對應輸入:EVENT_STOCK_KEYDOWN( )

KeyPress

void FireKeyPress( short* pnChar )

當接收到 WM_CHAR 訊息時引發。

事件對應輸入:EVENT_STOCK_KEYPRESS( )

KeyUp

void FireKeyUp( short nChar, short nShiftState )

當接收到 WM_SYSKEYUPWM_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( )

使用加入事件精靈加入內建事件

加入內建事件會比加入自訂事件輕鬆,因為實際事件的引發是由基底類別 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 事件。

請參閱

參考

COleControl 類別

概念

MFC ActiveX 控制項

MFC ActiveX 控制項:方法