anchor.diff:    { TfpgGDITimer }
   
     TfpgGDITimer = class(TfpgBaseTimer)
  +  private
  +    FHandle: THandle;
  +  protected
  +    procedure   SetEnabled(const AValue: boolean); override;
  +  public
  +    constructor Create(AInterval: integer); override;
     end;
   
   
  
positive.code: procedure TfpgGDIApplication.DoWaitWindowMessage(atimeoutms: integer);
  var
    Msg: TMsg;
    timerid: longword;
    ltimerWnd: HWND;
    mp: boolean;
  begin
    timerid  := 0;
    if Assigned(wapplication.MainForm) then
      ltimerWnd := TfpgGDIWindow(wapplication.MainForm).WinHandle
    else
      ltimerWnd := 0;
  
    if (atimeoutms >= 0) and (not MessagesPending) then
    begin
      if Assigned(FOnIdle) then
        OnIdle(self);
      if atimeoutms > 0 then
        timerid := Windows.SetTimer(ltimerWnd, 1, atimeoutms, nil)
      else
        Exit;  // handling waiting timeout
    end;
  
    {$IFDEF WinCE}
  
negative.code:   {$ENDIF}
  
    Windows.DispatchMessage(@msg);
  end;
  
  procedure TfpgGDIApplication.DoFlush;
  