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

81 lines
1.9 KiB
C++

#include <stdio.h>
#include <thtest/foo.hpp>
Foo::Foo(void)
: mhDisplay(0), mCounter(0), mlpLedDisplay(0)
{
mThreadHandler.setCallback(this,&Foo::threadHandler);
mTimerHandler.setCallback(this,&Foo::timerHandler);
MessageThread::insertHandler(&mThreadHandler);
Window::insertHandler(VectorHandler::TimerHandler,&mTimerHandler);
}
Foo::~Foo()
{
stop();
destroyWindow();
MessageThread::removeHandler(&mThreadHandler);
}
DWORD Foo::threadHandler(ThreadMessage &someThreadMessage)
{
switch(someThreadMessage.message())
{
case ThreadMessage::TM_CREATE :
createWindow(GetModuleHandle(0),mWindowPoint);
break;
case ThreadMessage::TM_DESTROY :
destroyWindow();
break;
case ThreadMessage::TM_USER :
if(someThreadMessage.userDataOne()==FooStart)cycle();
break;
}
return FALSE;
}
void Foo::cycle(void)
{
ThreadMessage threadMessage(ThreadMessage::TM_USER,FooStart,0L);
if(!Window::isValid()||!mlpLedDisplay)return;
if(mCounter>999)mCounter=0;
mlpLedDisplay->setNumber(mCounter++);
mlpLedDisplay->paint();
update();
MessageThread::postMessage(threadMessage);
::Sleep(50);
}
void Foo::createWindow(HINSTANCE hInstance,const Point &windowPoint)
{
if(mhDisplay)return;
Window::createWindow("BUTTON","",WS_POPUP|WS_CAPTION,Rect(windowPoint.x(),windowPoint.y(),50,50),0,0,0);
show(SW_SHOW);
update();
mlpLedDisplay=new LedDisplay((HWND)(Window&)*this,Point(0,0));
// setTimer(0,25);
}
void Foo::destroyWindow(void)
{
if(mlpLedDisplay){delete mlpLedDisplay;mlpLedDisplay=0;}
// killTimer(1);
Window::destroy();
}
CallbackData::ReturnType Foo::timerHandler(CallbackData &someCallbackData)
{
// ThreadMessage threadMessage(ThreadMessage::TM_USER,FooStart,0L);
if(!Window::isValid()||!mlpLedDisplay)return 0;
if(mCounter>999)mCounter=0;
mlpLedDisplay->setNumber(mCounter++);
mlpLedDisplay->paint();
update();
// MessageThread::postMessage(threadMessage);
return 0;
}