MFC ActiveX 控制項:將內建事件加入至 ActiveX 控制項
庫存事件與自訂事件不同,因為類別 COleControl 會自動引發 事件。 COleControl
包含預先定義的成員函式,這些函式會引發常見動作所產生的事件。 實作的 COleControl
一些常見動作包括單鍵和按兩下控制項、鍵盤事件,以及滑鼠按鍵狀態的變更。 庫存事件的事件對應專案前面一律會加上EVENT_STOCK前置詞。
新增事件精靈支援的庫存事件
類別 COleControl
提供下表所列的十個庫存事件。 您可以使用 [新增事件精靈 ] 在控制項 中指定您想要的事件。
庫存事件
Event | 引發函式 | 註解 |
---|---|---|
按一下 | void FireClick( ) | 當控制項擷取滑鼠時引發,任何 BUTTONUP (左、中間或右)訊息都已收到,且按鈕會在控制項上放開。 此事件之前會發生 Stock MouseDown 和 MouseUp 事件。 事件對應專案: 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, short nShiftState nChar ) |
收到 或 WM_KEYDOWN 訊息時 WM_SYSKEYDOWN 引發。事件對應專案: EVENT_STOCK_KEYDOWN( ) |
KeyPress | void FireKeyPress(short * pnChar ) |
收到訊息時 WM_CHAR 引發。事件對應專案: EVENT_STOCK_KEYPRESS( ) |
KeyUp | void FireKeyUp(short, short nShiftState nChar ) |
收到 或 WM_KEYUP 訊息時 WM_SYSKEYUP 引發。事件對應專案: EVENT_STOCK_KEYUP( ) |
MouseDown | void FireMouseDown( short, short nShiftState nButton , float x , float y) |
如果收到任何 BUTTONDOWN (左、中間或右)就會引發。 在引發此事件之前,會立即擷取滑鼠。 事件對應專案: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove | void FireMouseMove(short, short nShiftState nButton , float x , float y) |
收到WM_MOUSEMOVE訊息時引發。 事件對應專案: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp | void FireMouseUp(short, short nShiftState nButton , float x , float y) |
如果收到任何 BUTTONUP (左、中間或右),就會引發。 在引發此事件之前,會釋放滑鼠擷取。 事件對應專案: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange | void FireReadyStateChange( ) | 當控制項轉換至下一個就緒狀態時引發,因為收到的資料量。 事件對應專案: EVENT_STOCK_READYSTATECHANGE( ) |
使用新增事件精靈新增股票事件
新增庫存事件比新增自訂事件還少,因為基類 COleControl
會自動處理實際事件的引發。 下列程式會將股票事件新增至使用 MFC ActiveX 控制項精靈 開發的控制項。 按下按鍵且控制項為作用中時,會引發名為 KeyPress 的事件。 此程式也可以用來新增其他庫存事件。 將選取的股票事件名稱取代為 KeyPress。
使用新增事件精靈新增 KeyPress stock 事件
載入控制項專案。
在 [類別檢視] 中,以滑鼠右鍵按一下您的 ActiveX 控制項類別,以開啟快捷方式功能表。
從快捷方式功能表中,按一下 [新增 ],然後按一下 [ 新增事件 ]。
這會開啟 [新增事件精靈]。
在 [ 事件名稱] 下拉式清單中,選取
KeyPress
。按一下完成。
新增庫存事件的事件精靈變更
由於庫存事件是由控制項的基類處理,因此[新增事件精靈] 不會以任何方式變更您的類別宣告。 它會將 事件新增至控制項的事件對應,並在其 中建立專案。IDL 檔案。 下列這一行會新增至控制項的事件對應,其位於控制項類別實作中 。。CPP) 檔案:
EVENT_STOCK_KEYPRESS()
當收到WM_CHAR訊息且控制項為使用中時,新增此程式碼會引發 KeyPress 事件。 從控制項程式碼中呼叫其引發函式,例如, FireKeyPress
可以在其他時間引發 KeyPress 事件。
[新增事件精靈] 會將下列程式程式碼新增至 控制項的 。IDL 檔案:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
這一行會將 KeyPress 事件與其標準分派識別碼產生關聯,並允許容器預期 KeyPress 事件。