Add support for callbacks

This commit is contained in:
2025-08-14 12:47:10 -04:00
parent 5756642ddb
commit 8b4769bf7e
10 changed files with 431 additions and 130 deletions

41
common/callback.hpp Executable file
View File

@@ -0,0 +1,41 @@
#ifndef _COMMON_CALLBACK_HPP_
#define _COMMON_CALLBACK_HPP_
#ifndef _COMMON_CALLBACKDATA_HPP_
#include <common/cbdata.hpp>
#endif
#ifndef _COMMON_PURECALLBACK_HPP_
#include <common/pcallbck.hpp>
#endif
#ifndef _COMMON_CALLBACKPOINTER_HPP_
#include <common/cbptr.hpp>
#endif
template <class T,class D>
class Callback : public PureCallback<D>
{
public:
typedef LONG (T::*PFNMETHOD)(CallbackData<D> &callbackData);
Callback(void);
Callback(const Callback<T,D> &someCallback);
Callback(T *lpObject,PFNMETHOD lpMethod);
virtual ~Callback();
void setObject(T *lpObject);
void setMethod(PFNMETHOD lpMethod);
void setCallback(T *lpObject,PFNMETHOD lpMethod);
WORD operator==(const Callback<T,D> &someCallback)const;
void operator=(const Callback<T,D> &someCallback);
LONG operator*(CallbackData<D> &someCallbackData);
private:
T *mlpObject;
LONG (T::*mlpMethod)(CallbackData<D> &someCallbackData);
};
template <class T,class D>
inline
LONG Callback<T,D>::operator*(CallbackData<D> &someCallbackData)
{
if((!mlpObject)||(!mlpMethod))return (LONG)0;
return (mlpObject->*mlpMethod)(someCallbackData);
}
#include <common/callback.tpp>
#endif