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