#ifndef _CASHFLOW_CALCTHREAD_HPP_ #define _CASHFLOW_CALCTHREAD_HPP_ #ifndef _THREAD_MESSAGETHREAD_HPP_ #include #endif class CalcDlg; class GraphWindow; class CalcThread : public MessageThread { public: enum{CalcStart}; CalcThread(void); virtual ~CalcThread(); void startCalc(CalcDlg &calcDlg); private: CalcThread(const CalcThread &someCalcThread); CalcThread &operator=(const CalcThread &someCalcThread); DWORD threadHandler(ThreadMessage &someThreadMessage); void performCalc(CalcDlg &calcDlg); ThreadCallback mThreadHandler; WORD mIsInReset; Mutex mCalcMutex; }; #pragma warning(disable:4355) inline CalcThread::CalcThread(void) : mCalcMutex("CalcMutex"), mIsInReset(FALSE) { mThreadHandler.setCallback(this,&CalcThread::threadHandler); insertHandler(&mThreadHandler); } #pragma warning(default:4355) inline CalcThread::CalcThread(const CalcThread &someCalcThread) : mCalcMutex("CalcMutex"), mIsInReset(FALSE) { // no implementation *this=someCalcThread; } inline CalcThread::~CalcThread() { mIsInReset=TRUE; mCalcMutex.requestMutex(); mCalcMutex.releaseMutex(); stop(); removeHandler(&mThreadHandler); } inline CalcThread &CalcThread::operator=(const CalcThread &/*someCalcThread*/) { // no implementation return *this; } #endif