[原创]通过函数指针实现事件消息处理

本文介绍了一种利用函数指针实现事件消息处理的方法。通过定义特定类型的函数指针,可以在类中绑定事件处理函数,从而实现灵活的消息响应机制。

经过下面几个步骤可以实现通过函数指针实现事件消息处理:

步骤1:在某一个.h文件中定义以下函数指针类型MouseCLick,比如在CallbackEventModel.h文件中添加如下代码:

typedef int (*MouseCLick)( int a, int b);

步骤2:在需要使用事件的类中定义一个MouseCLick类型的函数指针:

下面的类CallbackUser是需要实现事件的的类:

===========================================================头文件===================================================================
#pragma once
#include "CallbackEventModel.h"//包含函数指针类型定义所在的头文件
class CallbackUser
{
public:
    int _a;
    int _b;
    MouseCLick  _InvokerFun;//在需要使用事件的类中定义一个MouseCLick类型的函数指针
public:
    CallbackUser(    int a,    int b);
    CallbackUser(void);
    ~CallbackUser(void);
};

===========================================================实现文件===================================================================
#include "StdAfx.h"
#include "CallbackUser.h"
CallbackUser::CallbackUser(void)
{
    _a=0;
    _b=0;
}

CallbackUser::CallbackUser(    int a,    int b)
{
    _a=a;
    _b=b;
}

CallbackUser::~CallbackUser(void)
{
}

步骤3:定义函数指针所绑定的事件处理函数CallbackFunction:

int CallbackFunction(int a, int b)
{
    return a+b;
}

步骤4:在需要调用的地方和时候实例化类对象,并将类中的函数指针具体绑定到待调用的事件处理函数上:

CallbackUser * caller=new CallbackUser(1,2);//类的实例化
caller->_InvokerFun=CallbackFunction;//将类中的函数指针具体绑定到待调用的事件处理函数

步骤5:在需要调用的地方和时候发起事件处理函数的调用:

int result=caller->_InvokerFun(3,4);//具体事件处理函数的调用
//输出方式1:
printf("结果是:%d\n",result);
//输出方式2:
char output[128];
sprintf_s(output, "结果是:%d\n", result); OutputDebugStringA(output);
结果是:7

 源码下载:https://pan.baidu.com/s/1RXJkGmdaeufMDUO8FvC8_g

编译环境:VS2008 IDE,VC++,Win7 32位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值