#include #include template ThreadLaunch::ThreadLaunch(void) : mThreadHandler(this,&ThreadLaunch::threadHandler), mhDisplay(0) { insertHandler(&mThreadHandler); } template ThreadLaunch::~ThreadLaunch() { stop(); destroyWindow(); removeHandler(&mThreadHandler); } template DWORD ThreadLaunch::threadHandler(ThreadMessage &someThreadMessage) { switch(someThreadMessage.message()) { case ThreadMessage::TM_CREATE : break; case ThreadMessage::TM_DESTROY : break; case ThreadMessage::TM_USER : if(someThreadMessage.userDataOne()==ThreadStart)cycle(); break; } return FALSE; } template void ThreadLaunch::cycle(void) { ThreadMessage threadMessage(ThreadMessage::TM_USER,ThreadStart,0L); if(!mhDisplay)return; postMessage(threadMessage); } template void ThreadLaunch::createWindow(HINSTANCE hInstance,const Point &windowPoint) { if(mhDisplay)return; mhDisplay=::CreateWindow("BUTTON","",WS_POPUP|WS_CAPTION,windowPoint.x(),windowPoint.y(),50,50,0,(HMENU)0,hInstance,0); ::ShowWindow(mhDisplay,SW_SHOW); ::UpdateWindow(mhDisplay); } template void ThreadLaunch::destroyWindow(void) { if(mhDisplay){::DestroyWindow(mhDisplay);mhDisplay=0;} }