首先看下CPP 文件中的实现,谁能结合后面的定义给我讲讲啊BEGIN_AWMSG_MAP(CTCSCallU626GA,CTCSCallCommon)
ON_AWMSG(enCSCall_Call,(LPF_AWPROC)&CTCSCallU626GA::OnCSCallCall)
END_AWMSG_MAP()
还有另外一个工程中也CPP
BEGIN_AWMSG_MAP( CTPSIxChariot, CTTaskPS )
// Chariot Test
ON_AWMSG( enCHR_CreateChariotTest, (LPF_AWPROC)(&(CTPSIxChariot::OnCHR_CreateChariotTest)) )
ON_AWMSG( enCHR_DeleteChariotTest, (LPF_AWPROC)&CTPSIxChariot::OnCHR_DeleteChariotTest )
ON_AWMSG( enCHR_StartChariotTest, (LPF_AWPROC)&CTPSIxChariot::OnCHR_StartChariotTest )
ON_AWMSG( enCHR_StopChariotTest, (LPF_AWPROC)&CTPSIxChariot::OnCHR_StopChariotTest )
ON_AWMSG( enCHR_WaitForChariotTestFinished, (LPF_AWPROC)&CTPSIxChariot::OnCHR_WaitForChariotTestFinished )
// VOIP Part
ON_AWMSG( enCHR_CreateVoipPair, (LPF_AWPROC)&CTPSIxChariot::OnCHR_CreateVoipPair )
ON_AWMSG( enCHR_DeleteVoipPair, (LPF_AWPROC)&CTPSIxChariot::OnCHR_DeleteVoipPair )
ON_AWMSG( enCHR_SetConsoleE1Addr, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetConsoleE1Addr )
ON_AWMSG( enCHR_SetConsoleE2Addr, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetConsoleE2Addr )
ON_AWMSG( enCHR_SetSilenceSupParam, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetSilenceSupParam )
// Report
ON_AWMSG( enCHR_GenerateTxtReport, (LPF_AWPROC)&CTPSIxChariot::OnCHR_GenerateTxtReport )
ON_AWMSG( enCHR_GenerateCsvReport, (LPF_AWPROC)&CTPSIxChariot::OnCHR_GenerateCsvReport )
// VOD Part
ON_AWMSG( enCHR_CreatePair, (LPF_AWPROC)&CTPSIxChariot::OnCHR_CreatePair )
ON_AWMSG( enCHR_DeletePair, (LPF_AWPROC)&CTPSIxChariot::OnCHR_DeletePair )
ON_AWMSG( enCHR_SetE1Addr, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetE1Addr )
ON_AWMSG( enCHR_SetE2Addr, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetE2Addr )
ON_AWMSG( enCHR_PairUseScriptFileName, (LPF_AWPROC)&CTPSIxChariot::OnCHR_PairUseScriptFileName )
ON_AWMSG( enCHR_LoadChariotModel, (LPF_AWPROC)&CTPSIxChariot::OnCHR_LoadChariotModel )
ON_AWMSG( enCHR_SetSaveFileName, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetSaveFileName )
END_AWMSG_MAP()
下面是定义 什么的!
#define BEGIN_AWMSG_MAP(theClass,baseClass) \
AW_MSGMAP* theClass::GetAWMsgMap() const \
{ return &theClass::AWMsgMap;} \
AW_MSGMAP theClass::AWMsgMap = \
{&(baseClass::AWMsgMap), \
(AW_MSGMAP_ENTRY*) (theClass::_AWMsgEntries) }; \
AW_MSGMAP_ENTRY theClass::_AWMsgEntries[] = \
{#define DECLARE_AWMSG_MAP() \
static AW_MSGMAP_ENTRY _AWMsgEntries[]; \
static AW_MSGMAP AWMsgMap; \
virtual AW_MSGMAP* GetAWMsgMap() const;
struct AW_MSGMAP_ENTRY
{
LOW_AW_TYPE enLAW;/*底层的AW*/
LPF_AWPROC pfn;/*处理函数*/
};struct AW_MSGMAP
{
AW_MSGMAP* pBaseMessageMap;/*指向基类的消息映射结构*/
AW_MSGMAP_ENTRY* lpEntries;/*指向映身列表*/
};
ON_AWMSG(enCSCall_Call,(LPF_AWPROC)&CTCSCallU626GA::OnCSCallCall)
END_AWMSG_MAP()
还有另外一个工程中也CPP
BEGIN_AWMSG_MAP( CTPSIxChariot, CTTaskPS )
// Chariot Test
ON_AWMSG( enCHR_CreateChariotTest, (LPF_AWPROC)(&(CTPSIxChariot::OnCHR_CreateChariotTest)) )
ON_AWMSG( enCHR_DeleteChariotTest, (LPF_AWPROC)&CTPSIxChariot::OnCHR_DeleteChariotTest )
ON_AWMSG( enCHR_StartChariotTest, (LPF_AWPROC)&CTPSIxChariot::OnCHR_StartChariotTest )
ON_AWMSG( enCHR_StopChariotTest, (LPF_AWPROC)&CTPSIxChariot::OnCHR_StopChariotTest )
ON_AWMSG( enCHR_WaitForChariotTestFinished, (LPF_AWPROC)&CTPSIxChariot::OnCHR_WaitForChariotTestFinished )
// VOIP Part
ON_AWMSG( enCHR_CreateVoipPair, (LPF_AWPROC)&CTPSIxChariot::OnCHR_CreateVoipPair )
ON_AWMSG( enCHR_DeleteVoipPair, (LPF_AWPROC)&CTPSIxChariot::OnCHR_DeleteVoipPair )
ON_AWMSG( enCHR_SetConsoleE1Addr, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetConsoleE1Addr )
ON_AWMSG( enCHR_SetConsoleE2Addr, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetConsoleE2Addr )
ON_AWMSG( enCHR_SetSilenceSupParam, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetSilenceSupParam )
// Report
ON_AWMSG( enCHR_GenerateTxtReport, (LPF_AWPROC)&CTPSIxChariot::OnCHR_GenerateTxtReport )
ON_AWMSG( enCHR_GenerateCsvReport, (LPF_AWPROC)&CTPSIxChariot::OnCHR_GenerateCsvReport )
// VOD Part
ON_AWMSG( enCHR_CreatePair, (LPF_AWPROC)&CTPSIxChariot::OnCHR_CreatePair )
ON_AWMSG( enCHR_DeletePair, (LPF_AWPROC)&CTPSIxChariot::OnCHR_DeletePair )
ON_AWMSG( enCHR_SetE1Addr, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetE1Addr )
ON_AWMSG( enCHR_SetE2Addr, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetE2Addr )
ON_AWMSG( enCHR_PairUseScriptFileName, (LPF_AWPROC)&CTPSIxChariot::OnCHR_PairUseScriptFileName )
ON_AWMSG( enCHR_LoadChariotModel, (LPF_AWPROC)&CTPSIxChariot::OnCHR_LoadChariotModel )
ON_AWMSG( enCHR_SetSaveFileName, (LPF_AWPROC)&CTPSIxChariot::OnCHR_SetSaveFileName )
END_AWMSG_MAP()
下面是定义 什么的!
#define BEGIN_AWMSG_MAP(theClass,baseClass) \
AW_MSGMAP* theClass::GetAWMsgMap() const \
{ return &theClass::AWMsgMap;} \
AW_MSGMAP theClass::AWMsgMap = \
{&(baseClass::AWMsgMap), \
(AW_MSGMAP_ENTRY*) (theClass::_AWMsgEntries) }; \
AW_MSGMAP_ENTRY theClass::_AWMsgEntries[] = \
{#define DECLARE_AWMSG_MAP() \
static AW_MSGMAP_ENTRY _AWMsgEntries[]; \
static AW_MSGMAP AWMsgMap; \
virtual AW_MSGMAP* GetAWMsgMap() const;
struct AW_MSGMAP_ENTRY
{
LOW_AW_TYPE enLAW;/*底层的AW*/
LPF_AWPROC pfn;/*处理函数*/
};struct AW_MSGMAP
{
AW_MSGMAP* pBaseMessageMap;/*指向基类的消息映射结构*/
AW_MSGMAP_ENTRY* lpEntries;/*指向映身列表*/
};
AWMSG 既是 MESSAGEBEGIN_AWMSG_MAP 就是 BEGIN_MESSAGE_MAP看看这个:或者自己再查查
http://blog.csdn.net/zhoujiamurong/archive/2004/07/11/39238.aspx