81 lines
1.9 KiB
C++
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;
|
|
}
|
|
|
|
|
|
|
|
|