MFC ActiveX 控件:将库存事件添加到 ActiveX 控件

股票事件不同于自定义事件,因为它们由 类 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、shortnShiftStatenChar 收到消息WM_SYSKEYDOWNWM_KEYDOWN时触发。

事件映射条目: EVENT_STOCK_KEYDOWN()
KeyPress void FireKeyPress(short*pnChar 收到消息时 WM_CHAR 触发。

事件映射条目: EVENT_STOCK_KEYPRESS()
KeyUp void FireKeyUp(short,shortnCharnShiftState 收到消息WM_SYSKEYUPWM_KEYUP时触发。

事件映射条目: EVENT_STOCK_KEYUP()
MouseDown void FireMouseDown(short、shortnShiftStatenButton、floatx、floaty 如果收到任何 BUTTONDOWN (左、中间或右),则触发。 在触发此事件之前立即捕获鼠标。

事件映射条目: EVENT_STOCK_MOUSEDOWN()
MouseMove void FireMouseMove(short, shortnShiftStatenButton, floatx, floaty 收到WM_MOUSEMOVE消息时触发。

事件映射条目: EVENT_STOCK_MOUSEMOVE()
MouseUp void FireMouseUp(short、shortnShiftStatenButton、floatx、floaty 如果收到任何 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 事件与其标准调度 ID 相关联,并允许容器预测 KeyPress 事件。

另请参阅

MFC ActiveX 控件
MFC ActiveX 控件:方法
COleControl 类