+    if ( m_ulId )
+    {
+        if (m_owner)
+        {
+            wxWindow*                   pWin = (wxWindow*)m_owner;
+
+            ::WinStopTimer(m_Hab, pWin->GetHWND(), m_ulId);
+        }
+        else
+            ::WinStopTimer(m_Hab, NULLHANDLE, m_ulId);
+        wxTimerList.DeleteObject(this);
+    }
+    m_ulId = 0L;
+}
+
+// ----------------------------------------------------------------------------
+// private functions
+// ----------------------------------------------------------------------------
+
+void wxProcessTimer(
+  wxTimer&                          rTimer
+)
+{
+    //
+    // Avoid to process spurious timer events
+    //
+    if (rTimer.m_ulId == 0L)
+        return;
+
+    if (rTimer.IsOneShot())
+        rTimer.Stop();
+
+    rTimer.Notify();