#include ProcessThread::ProcessThread(void) : mIsProcessing(false) { mThreadHandler.setCallback(this,&ProcessThread::threadHandler); MessageThread::insertHandler(&mThreadHandler); } ProcessThread::ProcessThread(const ProcessThread &/*someProcessThread*/) { // private implementation } ProcessThread::~ProcessThread() { stop(); MessageThread::removeHandler(&mThreadHandler); } ProcessThread &ProcessThread::operator=(const ProcessThread &/*someProcessThread*/) { // private implementation return *this; } void ProcessThread::startProcess(void) { if(isProcessing())return; ThreadMessage message(ThreadMessage::TM_USER,StartProcess); sendMessage(message); } DWORD ProcessThread::threadHandler(ThreadMessage &someThreadMessage) { switch(someThreadMessage.message()) { case ThreadMessage::TM_CREATE : break; case ThreadMessage::TM_DESTROY : ::OutputDebugString("Thread is processing TM_DESTROY\n"); break; case ThreadMessage::TM_USER : if(StartProcess==someThreadMessage.userDataOne()) { mIsProcessing=true; ::OutputDebugString("Thread is in TM_USER\n"); processHandler(); mIsProcessing=false; ::OutputDebugString("Thread is leaving TM_USER\n"); mDestructEvent.setEvent(); } break; } return FALSE; } void ProcessThread::processHandler(void) { }