共用方式為


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 事件

  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 類別