| 哦原来如此,很久来这里了,已经有很多事情不知道了。 
 请注意在第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;
 }
 }
 
 }
 }
 
 
 若有人悟出其中缘由,才可算是吃透了所长心思。
 |