+#include "wx/os2/private.h"
+
+#include <time.h>
+#include <sys/types.h>
+
+#include <sys/timeb.h>
+
+// ----------------------------------------------------------------------------
+// private globals
+// ----------------------------------------------------------------------------
+
+// define a hash containing all the timers: it is indexed by timer id and
+// contains the corresponding timer
+WX_DECLARE_HASH_MAP(unsigned long, wxTimer *, wxIntegerHash, wxIntegerEqual,
+ wxTimerMap);
+
+// instead of using a global here, wrap it in a static function as otherwise it
+// could have been used before being initialized if a timer object were created
+// globally
+static wxTimerMap& TimerMap()
+{
+ static wxTimerMap s_timerMap;
+
+ return s_timerMap;
+}
+
+// ----------------------------------------------------------------------------
+// private functions
+// ----------------------------------------------------------------------------
+
+// timer callback used for all timers
+ULONG wxTimerProc(HWND hwnd, ULONG, int nIdTimer, ULONG);
+
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
+IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxEvtHandler)
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxTimer class
+// ----------------------------------------------------------------------------
+
+void wxTimer::Init()