哦原来如此,很久来这里了,已经有很多事情不知道了。
请注意在第23页中的msg_loop有小小问题,如果能改成这个样子可能更好:
void Msg_Loop(void)
{
//消息发放
if( sInMsg.pMsgIn != sInMsg.pMsgOut )
{
//拷贝到消息缓存
InMsg_CopyToBuffer();
//检查是否需要消息预处理(菜单调用)
if( sInMsg.aMessage_Function[ eMsg_PreProcess ] )
{
( *sInMsg.aMessage_Function[ eMsg_PreProcess ] )();
}
//调用消息处理对象函数
if( (sInMsg.aReadMsgBuffer[0]) && ( sInMsg.aMessage_Function[ sInMsg.aReadMsgBuffer[0] ] ) )
{
( *sInMsg.aMessage_Function[ sInMsg.aReadMsgBuffer[0] ] )();
}
if( sInMsg.aReadMsgBuffer[0] )
{
//消息没有被任何一个程序接受,取消
if( sInMsg.aMessage_Function[ eMsg_LagProcess ] )
{
//存在外部消息滞后处理函数
( *sInMsg.aMessage_Function[ eMsg_LagProcess ] )();
}
else
{
//取消,无效消息
sInMsg.aReadMsgBuffer[0] = 0;
}
}
}
}
若有人悟出其中缘由,才可算是吃透了所长心思。 |