共用方式為


MFC ActiveX 控制件:將庫存事件新增至 ActiveX 控制件

庫存事件與自定義事件不同,因為 類別 COleControl 會自動引發事件。 COleControl 包含預先定義的成員函式,這些函式會引發常見動作所產生的事件。 執行的 COleControl 一些常見動作包括單擊和雙擊控件、鍵盤事件,以及滑鼠按鈕狀態的變更。 股票事件的事件映射項目始終以EVENT_STOCK作為前綴。

新增事件精靈支持的庫存事件

類別 COleControl 提供下表所列的十個庫存事件。 您可以使用 [ 新增事件精靈] 在控件中指定您想要的事件。

股票事件

事件 觸發函式 評論
點擊 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_SYSKEYDOWNWM_KEYDOWN 訊息時引發。

事件映射條目: EVENT_STOCK_KEYDOWN( )
KeyPress void FireKeyPress( short*pnChar 收到訊息時,WM_CHAR 會被觸發。

事件映射條目:EVENT_STOCK_KEYPRESS()
KeyUp void FireKeyUp(shortnCharnShiftState 接收到 WM_SYSKEYUPWM_KEYUP 訊息時引發。

事件映射項目:EVENT_STOCK_KEYUP( )
MouseDown void FireMouseDown( shortnButtonnShiftState, floatx, floaty 收到任何 BUTTONDOWN (左鍵、中鍵或右鍵)時會執行。 在此事件引發之前,滑鼠會立即被擷取。

事件項目: EVENT_STOCK_MOUSEDOWN( )
滑鼠移動 void FireMouseMove(shortnButtonnShiftState, floatx, floaty 收到WM_MOUSEMOVE訊息時引發。

事件對應專案: EVENT_STOCK_MOUSEMOVE( )
MouseUp void FireMouseUp(nButtonnShiftState, floatx, floaty 如果接收到任何 BUTTONUP (左、中或右),就會被觸發。 在引發此事件之前,會釋放滑鼠擷取。

事件地圖項目: EVENT_STOCK_MOUSEUP()
就緒狀態改變 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 事件。 從控件程式代碼中呼叫其引發函式,例如, FireKeyPress可以在其他時間引發KeyPress事件。

[新增事件精靈] 會將下列程式代碼行新增至 控件的 。IDL 檔案:

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

這一行會將 KeyPress 事件與其標準分派標識碼產生關聯,並允許容器預期 KeyPress 事件。

另請參閱

MFC ActiveX 控制件
MFC ActiveX 控制件:方法
COleControl 類別