zoukankan      html  css  js  c++  java
  • 使用回调函数发送自定义“消息”

    使用回调函数发送自定义“消息”之how to do

     

    1、  定义回调函数原型和回调消息

    在这里我们定义回调函数的参数为3个,类型均为unsigned int第一个为主ID,第二个为子ID,第三个为发送的数据。(可以根据自己的需要任意设置回调函数的参数个数及类型。)

    typedef void (*CallbackMessageFunc) (  unsigned int iMainID, 

                                                                     unsigned int iChildID,

                                                                     unsigned int iData = 0);

     

           定义主消息

           //main msg

           enum MAIN_MSG

    {

           OUTPUT_INFO,

           EXIT_PROGRAM,

           // other msg

           MAIN_MSG_COUNT

    };

     

    定义子消息

    //child msg of OUTPUT_INFO

    enum CHILD_OUTPUT_INFO

    {

           HELLO_WORLD,

           SHOW_ME_THE_MONEY,

           //….

    };

     

    2、  定义消息接收函数

    此函数为全局函数或为类的静态成员函数,并且声明形式与回调函数原型相同。在此用类的静态成员函数作为消息接收函数。

    class CMsgReceiver

    {

    public:

            static void OnProcessMsg(    unsigned int iMainID,    

                                                                   unsigned int iChildID,

                                                                   unsigned int iData = 0);

    }

    3、  定义回调函数的使用者

    class CMsgSender

    {

    public:

            void RegisterMsgReceiver(CallbackMessageFunc fpMsgReceiver);

            void SendMessage(unsigned int iMainID,    

                                              unsigned int iChildID,

                                              unsigned int iData = 0);

    private:
            CallbackMessageFunc m_fpMsgSender;

    }

     

    4、  使用示例:

    CMsgSender msgSender;

    msgSender.RegisterMsgReceiver(CMsgReceiver::OnProcessMsg);

    msgSender.SendMessage(OUTPUT_INFO, HELLO_WORLD);

     

    5、代码下载

       code

  • 相关阅读:
    全局函数和静态函数
    C语言变量总结
    #ifdef、#ifndef 与 #endif
    #include与#define的意义
    exit
    字符常量
    void *:万能指针
    算法(Algorithms)第4版 练习 链表类 1.3.19~1.3.29
    算法(Algorithms)第4版 练习 1.3.219
    算法(Algorithms)第4版 练习 1.3.20
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333281.html
Copyright © 2011-2022 走看看