00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifdef WIN32_SKINS
00026
00027 #include "win32_timer.hpp"
00028 #include "../commands/cmd_generic.hpp"
00029
00030
00031 void CALLBACK CallbackTimer( HWND hwnd, UINT uMsg,
00032 UINT_PTR idEvent, DWORD dwTime )
00033 {
00034 Win32Timer *pTimer = (Win32Timer*)idEvent;
00035 if( pTimer != NULL )
00036 {
00037 pTimer->execute();
00038 }
00039 }
00040
00041
00042 Win32Timer::Win32Timer( intf_thread_t *pIntf, CmdGeneric &rCmd, HWND hWnd ):
00043 OSTimer( pIntf ), m_rCommand( rCmd ), m_hWnd( hWnd )
00044 {
00045 }
00046
00047
00048 Win32Timer::~Win32Timer()
00049 {
00050 stop();
00051 }
00052
00053
00054 void Win32Timer::start( int delay, bool oneShot )
00055 {
00056 m_interval = delay;
00057 m_oneShot = oneShot;
00058 SetTimer( m_hWnd, (UINT_PTR)this, m_interval, (TIMERPROC)CallbackTimer );
00059 }
00060
00061
00062 void Win32Timer::stop()
00063 {
00064 KillTimer( m_hWnd, (UINT_PTR)this );
00065 }
00066
00067
00068 void Win32Timer::execute()
00069 {
00070
00071 m_rCommand.execute();
00072
00073
00074 if( ! m_oneShot )
00075 {
00076 start( m_interval, m_oneShot );
00077 }
00078 }
00079
00080 #endif