#ifndef _COMMON_CALLBACK_TPP_
#define _COMMON_CALLBACK_TPP_

template <class T>
Callback<T>::Callback(void)
: mlpObject(0), mlpMethod(0)
{
}

template <class T>
Callback<T>::Callback(const Callback<T> &someCallback)
: mlpObject(someCallback.mlpObject), mlpMethod(someCallback.mlpMethod)
{
}


template <class T>
Callback<T>::Callback(T *lpObject,PFNMETHOD lpMethod)
: mlpObject(lpObject), mlpMethod(lpMethod)
{
}

template <class T>
Callback<T>::~Callback()
{
}

template <class T>
WORD Callback<T>::operator==(const Callback<T> &someCallback)const
{
	return (mlpObject==someCallback.mlpObject && mlpMethod==someCallback.mlpMethod);
}

template <class T>
void Callback<T>::operator=(const Callback<T> &someCallback)
{
	mlpObject=someCallback.mlpObject;
	mlpMethod=someCallback.mlpMethod;
}

template <class T>
void Callback<T>::setObject(T *lpObject)
{
	mlpObject=lpObject;
}

template <class T>
void Callback<T>::setMethod(PFNMETHOD lpMethod)
{
	mlpMethod=lpMethod;
}


//template <class T>
//void Callback<T>::setMethod(CallbackData::ReturnType (T::*lpMethod)(CallbackData &someCallbackData))
//{
//	mlpMethod=lpMethod;
//}

template <class T>
void Callback<T>::setCallback(T *lpObject,PFNMETHOD lpMethod)
{
  mlpObject=lpObject;
	mlpMethod=lpMethod;
}

//template <class T>
//void Callback<T>::setCallback(T *lpObject,LONG (T::*lpMethod)(CallbackData &someCallbackData))
//{
//  mlpObject=lpObject;
//	mlpMethod=lpMethod;
//}



#endif
