#ifndef _THREAD_THREADCALLBACK_HPP_ #error TCALLBCK.HPP MUST PRECEDE TCALLBCK.TPP #endif template ThreadCallback::ThreadCallback(void) : mlpObject(0), mlpMethod(0) { } template ThreadCallback::ThreadCallback(const ThreadCallback &someThreadCallback) : mlpObject(someThreadCallback.mlpObject), mlpMethod(someThreadCallback.mlpMethod) { } template ThreadCallback::ThreadCallback(T *lpObject,LPFNMETHOD lpMethod) : mlpObject(lpObject), mlpMethod(lpMethod) { } template ThreadCallback::~ThreadCallback() { } template WORD ThreadCallback::operator==(const ThreadCallback &someThreadCallback)const { return (mlpObject==someThreadCallback.mlpObject && mlpMethod==someThreadCallback.mlpMethod); } template void ThreadCallback::operator=(const ThreadCallback &someThreadCallback) { mlpObject=someThreadCallback.mlpObject; mlpMethod=someThreadCallback.mlpMethod; } template void ThreadCallback::setObject(T *lpObject) { mlpObject=lpObject; } template void ThreadCallback::setMethod(LPFNMETHOD lpMethod) { mlpMethod=lpMethod; } template void ThreadCallback::setCallback(T *lpObject,LPFNMETHOD lpMethod) { mlpObject=lpObject; mlpMethod=lpMethod; } #if defined(_MSC_VER) template DWORD ThreadCallback::operator*(ThreadMessage &someThreadMessage) { DWORD (T::*lpMethod)(ThreadMessage &someThreadMessage)=0; if((lpMethod==mlpMethod)||!mlpObject)return 0L; return (mlpObject->*mlpMethod)(someThreadMessage); } #else template DWORD ThreadCallback::operator*(ThreadMessage &someThreadMessage) { if(!mlpObject||!mlpMethod)return 0L; return (mlpObject->*mlpMethod)(someThreadMessage); } #endif