自设计消息处理回调函数

 下面这个消息处理回调函数由我自己设计
UINT __stdcall CQQSDlg::WorkThreadProc(LPVOID lpParameter)
{
TYPE_PACKET imsg;
int i;
// 设置消息队列是否为空的判断标志
    imsg.cmd_type = -1;
    while ( 0 != GetMessageQueue(imsg) )
{
        for ( i = 0; imsg.cmd_type != -1 && i < DIM(message_entries); ++i )
{
if ( imsg.cmd_type == message_entries[i].nmessage )
{
                CQQSDlg::message_entries[i].pfn(NULL,imsg,NULL,NULL);
   // 等待消息处理完后立刻跳出
break;
}
}
// 若消息队列为空,则休眠1秒钟,把更多的时间片让给接收虚拟通道数据包线程
if ( -1 == imsg.cmd_type )
{
Sleep(1000);
}
// very important ,否则会一直发送前一次的信息
imsg.cmd_type = -1;
}
return 0;
}


imsg.cmd_type = -1;  标志当前消息队列为空,假如在循环中没有设置这个参数那么回调函数将一直处理前一个消息包。如果这个消息包是通知打印一行字符,此时回调函数一直循环的处理这个消息包,则会出现循环的打印同一行字符。

Sleep(1000); 使得这个线程休眠 ,让出CPU.这样当没有消息要处理的时候,CPU不至于要百分之百的占用.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值