使用回调函数发送自定义“消息”

时间:2021-06-20 05:35:05

使用回调函数发送自定义“消息”之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