Initial
This commit is contained in:
80
thtest/FOO.CPP
Normal file
80
thtest/FOO.CPP
Normal file
@@ -0,0 +1,80 @@
|
||||
#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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user