📄 cpp_aggregate_de.h
字号:
// This header file defines the base aggregate structure. Every
// aggregate must have a link to its next one and a pointer
// to certain functions that an aggregate must supply.
// When implementing an aggregate, you MUST derive from this!
// (In C, just put it as the first member in your structure..)
#ifndef __CPPAGGREGATE_DE__
#define __CPPAGGREGATE_DE__
#include "serverobj_de.h"
class Aggregate
{
public :
// Very important that these data members are EXACTLY the same as
// the C version of this class (Aggregate_t)...
Aggregate *m_pNextAggregate;
// Hook functions for the aggregate..
AggregateEngineMessageFn m_EngineMessageFn;
AggregateObjectMessageFn m_ObjectMessageFn;
Aggregate()
{
m_EngineMessageFn = _EngineMessageFn;
m_ObjectMessageFn = _ObjectMessageFn;
}
virtual ~Aggregate() {}
protected :
virtual DDWORD EngineMessageFn(LPBASECLASS pObject, DDWORD messageID, void *pData, DFLOAT lData) { return 1; }
virtual DDWORD ObjectMessageFn(LPBASECLASS pObject, HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead) { return 1; }
private :
static DDWORD _EngineMessageFn(LPBASECLASS pObject, LPAGGREGATE pAggregate, DDWORD messageID, void *pData, DFLOAT lData);
static DDWORD _ObjectMessageFn(LPBASECLASS pObject, LPAGGREGATE pAggregate, HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead);
};
// Inlines...
inline DDWORD Aggregate::_EngineMessageFn(LPBASECLASS pObject, LPAGGREGATE pAggregate, DDWORD messageID, void *pData, DFLOAT lData)
{
if (pAggregate)
{
return pAggregate->EngineMessageFn(pObject, messageID, pData, lData);
}
return 0;
}
inline DDWORD Aggregate::_ObjectMessageFn(LPBASECLASS pObject, LPAGGREGATE pAggregate, HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead)
{
if (pAggregate)
{
return pAggregate->ObjectMessageFn(pObject, hSender, messageID, hRead);
}
return 0;
}
#endif // __CPP_AGGREGATE_DE__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -