added some wxMSW stuff

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Karsten Ballüder
1998-05-20 14:12:05 +00:00
parent c801d85f15
commit 2bda0e1738
196 changed files with 57505 additions and 0 deletions

115
src/msw/timer.cpp Normal file
View File

@@ -0,0 +1,115 @@
/////////////////////////////////////////////////////////////////////////////
// Name: timer.cpp
// Purpose: wxTimer implementation
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "timer.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/setup.h"
#include "wx/list.h"
#include "wx/app.h"
#endif
#include "wx/timer.h"
#include "wx/msw/private.h"
#include <time.h>
#include <sys/types.h>
#if !defined(__SC__) && !defined(__GNUWIN32__)
#include <sys/timeb.h>
#endif
#ifdef __WIN32__
#define _EXPORT /**/
#else
#define _EXPORT _export
#endif
#include <windows.h>
wxList wxTimerList(wxKEY_INTEGER);
UINT WINAPI _EXPORT wxTimerProc(HWND hwnd, WORD, int idTimer, DWORD);
#if !USE_SHARED_LIBRARY
IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject)
#endif
wxTimer::wxTimer(void)
{
milli = 0 ;
lastMilli = -1 ;
id = 0;
}
wxTimer::~wxTimer(void)
{
Stop();
wxTimerList.DeleteObject(this);
}
bool wxTimer::Start(int milliseconds,bool mode)
{
oneShot = mode ;
if (milliseconds < 0)
milliseconds = lastMilli;
if (milliseconds <= 0)
return FALSE;
lastMilli = milli = milliseconds;
wxTimerList.DeleteObject(this);
TIMERPROC wxTimerProcInst = (TIMERPROC) MakeProcInstance((FARPROC)wxTimerProc,
wxGetInstance());
id = SetTimer(NULL, (UINT)(id ? id : 1), (UINT)milliseconds, wxTimerProcInst);
if (id > 0)
{
wxTimerList.Append(id, this);
return TRUE;
}
else return FALSE;
}
void wxTimer::Stop(void)
{
if (id) {
KillTimer(NULL, (UINT)id);
wxTimerList.DeleteObject(this); /* @@@@ */
}
id = 0 ;
milli = 0 ;
}
UINT WINAPI _EXPORT wxTimerProc(HWND WXUNUSED(hwnd), WORD, int idTimer, DWORD)
{
wxNode *node = wxTimerList.Find((long)idTimer);
if (node)
{
wxTimer *timer = (wxTimer *)node->Data();
if (timer->id==0)
return(0) ; // Avoid to process spurious timer events
if (timer->oneShot)
timer->Stop() ;
timer->Notify();
}
return 0;
}