16,473
社区成员
发帖
与我相关
我的任务
分享
class __declspec(novtable) CIOMessageMap
{
public:
virtual bool ProcessIOMessage(IOType clientIO, ClientContext* pContext, DWORD dwSize) = 0;
};
#define BEGIN_IO_MSG_MAP() \
public: \
bool ProcessIOMessage(IOType clientIO, ClientContext* pContext, DWORD dwSize = 0) \
{ \
bool bRet = false;
#define IO_MESSAGE_HANDLER(msg, func) \
if (msg == clientIO) \
bRet = func(pContext, dwSize);
#define END_IO_MSG_MAP() \
return bRet; \
}
#define BEGIN_IO_MSG_MAP() \
public: \
inline bool ProcessIOMessage(IOType clientIO, ClientContext* pContext, DWORD dwSize = 0) \
{ \
bool bRet = false;
BEGIN_IO_MSG_MAP()
IO_MESSAGE_HANDLER(ID_MY_MSG, OnMyMsg)
END_IO_MSG_MAP()
public:
bool ProcessIOMessage(IOType clientIO, ClientContext* pContext, DWORD dwSize = 0) \
{
bool bRet = false;
if (ID_MY_MSG == clientIO)
bRet = OnMyMsg(pContext, dwSize);
return bRet;
}
调用的时候这样:
public:
bool ProcessIOMessage(IOType clientIO, ClientContext* pContext, DWORD dwSize = 0) \
{
bool bRet = false;
if (msg == clientIO) \
bRet = func(pContext, dwSize);
return bRet;
}