股票事件不同于自定义事件,因为它们由 类 COleControl 自动触发。
COleControl
包含触发常见作生成的事件的预定义成员函数。 一些常见作通过 COleControl
包括对控件、键盘事件和鼠标按钮状态的更改进行单键和双击来实现。 库存事件的事件映射条目始终前面有EVENT_STOCK前缀。
添加事件向导支持的股票事件
该 COleControl
类提供下表中列出的十个股票事件。 可以使用 “添加事件向导”在控件中指定所需的事件。
股票事件
事件 / 活动 | 激发函数 | 注释 |
---|---|---|
点击 | void FireClick() | 当控件捕获鼠标时触发,收到任何 BUTTONUP (左、中间或右)消息,并且该按钮在控件上释放。 股票 MouseDown 和 MouseUp 事件在此事件之前发生。 事件映射条目: EVENT_STOCK_CLICK() |
DblClick | void FireDblClick() | 类似于单击,但在收到 BUTTONDBLCLK 消息时触发。 事件映射条目: EVENT_STOCK_DBLCLICK() |
错误 |
void FireError(SCODEscode, LPCSTRlpszDescription , UINTnHelpID = 0) |
在方法调用或属性访问范围之外的 ActiveX 控件中发生错误时触发。 事件映射条目: EVENT_STOCK_ERROREVENT() |
KeyDown |
void FireKeyDown(short、shortnShiftState nChar ) |
收到消息WM_SYSKEYDOWN WM_KEYDOWN 时触发。事件映射条目: EVENT_STOCK_KEYDOWN() |
KeyPress |
void FireKeyPress(short*pnChar )) |
收到消息时 WM_CHAR 触发。事件映射条目: EVENT_STOCK_KEYPRESS() |
KeyUp |
void FireKeyUp(short,shortnChar nShiftState ) |
收到消息WM_SYSKEYUP WM_KEYUP 时触发。事件映射条目: EVENT_STOCK_KEYUP() |
MouseDown |
void FireMouseDown(short、shortnShiftState nButton 、floatx、floaty) |
如果收到任何 BUTTONDOWN (左、中间或右),则触发。 在触发此事件之前立即捕获鼠标。 事件映射条目: EVENT_STOCK_MOUSEDOWN() |
MouseMove |
void FireMouseMove(short, shortnShiftState nButton , floatx, floaty) |
收到WM_MOUSEMOVE消息时触发。 事件映射条目: EVENT_STOCK_MOUSEMOVE() |
MouseUp |
void FireMouseUp(short、shortnShiftState nButton 、floatx、floaty) |
如果收到任何 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 事件与其标准调度 ID 相关联,并允许容器预测 KeyPress 事件。