自定义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);
}
----------------解决方案--------------------------------------------------------