procedure rShowCursor(bShow: BOOL);
var
  r: trect;
begin
  if not bShow then begin // Hide
    r.Top := 0;
    r.Left := GetSystemMetrics(SM_CXSCREEN)
            + GetSystemMetrics(SM_CXCURSOR);
    r.Right := r.Left;
    r.Bottom := 0;
    ClipCursor(@r);
    SetCursorPos(0,0);
  end else begin // Restore
    ClipCursor(nil);
    SetCursorPos(GetSystemMetrics(SM_CXSCREEN) div 2,
                 GetSystemMetrics(SM_CYSCREEN) div 2);
  end;
end;