MFC ActiveX 控件:添加常用事件到 ActiveX 控件
常用事件与自定义操作的不同之处在于由类 COleControl自动触发。 COleControl 包含激发事件由常见操作的预定义的成员函数。 COleControl 实现的一些常见操作包括在控件、键盘事件和更改的单并双击在鼠标按钮的状态发生。 事件常用事件的映射项始终在 EVENT_STOCK 前缀开头。
添加事件向导支持的常用事件
COleControl 类提供了十个常用事件,下表中列出。 可以指定使用 添加事件向导,您的控件所需的事件。
常用事件
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 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 |
无效 FireReadyStateChange () |
激发,在使用下就绪状态的控件转换由于数据量接收。 事件映射项: EVENT_STOCK_READYSTATECHANGE( ) |
添加使用添加事件向导的一个常用事件
添加常用操作添加自定义操作,因为实际事件的激发由基类自动处理, COleControl需少量工作。 下面的过程添加一个常用事件为使用 MFC Activex 控件向导,所开发的控件。 事件,调用 KeyPress,个; 当按下了键时和控件处于活动状态。 此过程还可以使用添加其他常用事件。 使用按键替换选定的常用事件名称。
使用添加事件向导,若要添加 KeyPress 请常用事件
加载您的控件的项目中。
在 " 类视图 " 中,右击您的 Activex 控件类打开快捷菜单。
从快捷菜单上,单击 添加 然后单击 添加事件。
这将打开事件添加向导。
在的 事件名 下拉列表中,选择 KeyPress。
单击**“完成”**。
添加事件常用事件的向导更改
由于常用事件由控件的基类处理,添加事件向导 " 在不更改您的类声明。 它将该事件添加到控件的事件映射并在其 .IDL 文件中的项。 以下行添加到控件的事件映射,位于控件类实现 (.CPP) 文件:
EVENT_STOCK_KEYPRESS()
添加此代码激发 KeyPress 事件,当 WM_CHAR 接收消息时,控件处于活动状态。 KeyPress 事件可通过调用其激发功能在其他时间时 (例如, FireKeyPress) 从控件代码内。
添加事件向导将以下代码行添加到控件的 .IDL 文件:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
此关联连线 KeyPress 事件与其标准调度 ID 并允许容器预期 KeyPress 事件。