[原创]通过函数指针实现事件消息处理
经过下面几个步骤可以实现通过函数指针实现事件消息处理:
步骤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位
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理