Files
Work/thtest/THLNCH.CPP
2024-08-07 09:16:27 -04:00

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;}
}