zoukankan      html  css  js  c++  java
  • [原创]通过函数指针实现事件消息处理

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

    步骤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
    ",result);
    //输出方式2:
    char output[128];
    sprintf_s(output, "结果是:%d
    ", result); OutputDebugStringA(output);
    结果是:7

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

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

  • 相关阅读:
    hdoj 6023 Automatic Judge
    hdoj 1170 Balloon Comes!
    初识vim操作和配置
    POJ 1611 The Suspects (并查集)
    HDU 1232 畅通工程 (并查集)
    计蒜客--两数之和
    计蒜客--爬楼梯 (动态规划)
    计蒜客--单独的数字 (位运算)
    计蒜客--最后一个单词的长度
    计蒜客-- 奇怪的国家 (位运算)
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/8883654.html
Copyright © 2011-2022 走看看