当前位置: 代码迷 >> C语言 >> 自定义dos消息响应 2
  详细解决方案

自定义dos消息响应 2

热度:161   发布时间:2008-04-21 22:55:13.0
自定义dos消息响应 2
#include "dispatch.hpp"

//    消息事件表搜索函数. 由于TEventHandler没有任何消息响应表,
//本函数不做任何动作,仅返回FALSE.
//    所有与消息事件表处理有关的对象类必须是TEventHandler的子类,
//且必须重载该函数.
BOOL TEventHandler::Find(TEventInfo & /*info*/)
{
     return FALSE;
}

//    从TEventInfo类型的消息事件数据中取出消息数据,并把它派遣
//给相应的响应函数.
//    Return True when SUCCESS, Else False.
int  TEventHandler::Dispatch(TEventInfo& info)
{
  if (Find(info)) //搜索消息的响应函数
     {
        //调用响应函数
        int r=(info.Entry->Dispatcher(*(info.Object),info.Entry->pmf,info.bSyntax,info.iPara));
        if(r) //响应函数有返回值,返回之
          return r;
        return TRUE; //响应函数返回值为零
     }
  return FALSE; //没有搜索到响应函数
}

//搜索消息事件表entries, 看其中是否含有有关info消息事件的项:
BOOL  TEventHandler::SearchEntries(TGenericTableEntry  *entries,
                                 TEventInfo &info)
{
     while ((entries)&&(entries->Dispatcher)&&(entries->pmf))
        {
          if ( (entries->NotifyCode==info.NotifyCode)
                    &&(entries->bSyntax==info.bSyntax) )
            {
                info.Entry = entries;
                return TRUE;
            }
          ++entries;
        }
     return FALSE;
}

//菜单消息派遣器
int DispatchMenuMessage(GENERIC &Object,int (GENERIC::*pmf)(int), BOOL,int para)
{
     return (Object.*pmf)(para);
}
搜索更多相关的解决方案: dos  定义  TEventInfo  info  函数  

----------------解决方案--------------------------------------------------------
  相关解决方案