ON_EVENT

ON_EVENT

Visual Studio 2005

Use the ON_EVENT macro to define an event handler function for an event fired by an OLE control.

ON_EVENT(theClass, id, dispid, pfnHandler, vtsParams )

Parameters
theClass

The class to which this event sink map belongs.

id

The control ID of the OLE control.

dispid

The dispatch ID of the event fired by the control.

pfnHandler

Pointer to a member function that handles the event. This function should have a BOOL return type, and parameter types that match the event's parameters (see vtsParams). The function should return TRUE to indicate the event was handled; otherwise FALSE.

vtsParams

A sequence of VTS_ constants that specifies the types of the parameters for the event. These are the same constants that are used in dispatch map entries such as DISP_FUNCTION.

The vtsParams argument is a space-separated list of values from the VTS_ constants. One or more of these values separated by spaces (not commas) specifies the function's parameter list. For example:

VTS_I2 VTS_BOOL

specifies a list containing a short integer followed by a BOOL.

For a list of the VTS_ constants, see EVENT_CUSTOM.

### Boost库中的`on_event`函数 在Boost C++库中,`on_event`通常作为回调机制的一部分被实现。具体到某些模块(如Boost.Asio或Boost.Beast),该函数可能用于处理事件触发后的逻辑[^3]。 #### 返回值的意义 对于`on_event`这类函数,在不同的上下文中其返回值可能会有所不同。然而,常见的设计模式表明,此类函数的返回值往往具有以下含义之一: 1. **状态指示**:返回值可以表示操作的结果状态,例如成功与否或者特定错误码。 2. **控制流标志**:返回值可用于决定后续的操作流程,比如是否继续执行其他回调或终止当前过程。 3. **数据传递**:有时返回值也可能携带额外的数据信息给调用者。 需要注意的是,具体的返回类型和语义取决于实际使用的Boost子项目以及开发者定义的具体行为。如果是在Boost.Asio环境中讨论,则更倾向于采用标准C++未来风格(`std::future`)或者其他异步编程模型来替代传统的简单返回值方式[^4]。 以下是基于假设场景的一个简化版伪代码展示如何自定义一个简单的`on_event`方法并说明其潜在用途: ```cpp #include <iostream> #include <functional> // 假设我们有一个类A, 它内部维护了一个事件处理器. class A { public: using EventCallback = std::function<void(int)>; void set_on_event(const EventCallback& cb){ on_event_ = cb; } int triggerEvent(){ if(on_event_){ try{ on_event_(42); // 调用绑定好的事件处理程序,并传入参数42 return 0; // 成功完成则返回零 }catch(...){ return -1; // 发生异常时返回负数以示失败 } } return -2; // 如果未设置任何回调也视为一种特殊错误情况 } private: EventCallback on_event_; }; int main() { A a; auto handler = [](int val){ std::cout << "Received event with value: " << val << '\n'; }; a.set_on_event(handler); int result = a.triggerEvent(); switch(result){ case 0 : std::cout<<"Operation succeeded.\n"; break; case -1: std::cerr<<"An exception occurred during operation.\n";break; default: std::cerr<<"No callback was registered or unknown error.\n"; } return 0; } ``` 上述例子展示了通过lambda表达式设定一个接收整型数值的匿名函数作为对象a上的事件响应器;当此事件被激发时它会打印接收到的消息同时根据实际情况反馈不同类型的运行成果编码[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值