58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
#include <stdio.h>
|
|
#include <thtest/thlnch.hpp>
|
|
|
|
template <class T>
|
|
ThreadLaunch<T>::ThreadLaunch(void)
|
|
: mThreadHandler(this,&ThreadLaunch::threadHandler), mhDisplay(0)
|
|
{
|
|
insertHandler(&mThreadHandler);
|
|
}
|
|
|
|
template <class T>
|
|
ThreadLaunch<T>::~ThreadLaunch()
|
|
{
|
|
stop();
|
|
destroyWindow();
|
|
removeHandler(&mThreadHandler);
|
|
}
|
|
|
|
template <class T>
|
|
DWORD ThreadLaunch<T>::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 <class T>
|
|
void ThreadLaunch<T>::cycle(void)
|
|
{
|
|
ThreadMessage threadMessage(ThreadMessage::TM_USER,ThreadStart,0L);
|
|
if(!mhDisplay)return;
|
|
postMessage(threadMessage);
|
|
}
|
|
|
|
template <class T>
|
|
void ThreadLaunch<T>::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 <class T>
|
|
void ThreadLaunch<T>::destroyWindow(void)
|
|
{
|
|
if(mhDisplay){::DestroyWindow(mhDisplay);mhDisplay=0;}
|
|
}
|
|
|