Как получить размеры монитора, рабочего стола, окна...

Ниже приведены тексты нескольких функций, использующих Windows API для получения разных полезных размеров.

Прототипы Windows API в глобальной MAP-структуре:

module('win32.lib')
  GetClientRect(Ulong, *RECT),PASCAL,RAW
  GetWindowRect(Ulong, *RECT),PASCAL,RAW
  GetDesktopWindow(),ULONG,PASCAL
  GetShellWindow(),Ulong,Pascal
  SetWindowPos(Ulong, Ulong, SIGNED, SIGNED, SIGNED, SIGNED, ulong),BOOL,PASCAL,Proc
end
-------------------------

GetMonitorSize PROCEDURE (*Long w,*Long h) ! Получить размеры монитора
DS Group(Rect)
   End

 CODE
 GetWindowRect(GetDesktopWindow(),DS)
 W = DS.Right
 H = DS.Bottom
 RETURN
----------------------

GetDesktopSize PROCEDURE (*Long w,*Long h) ! Получить размеры рабочего стола
DS Group(Rect)
  End

 CODE
 GetWindowRect(GetShellWindow(),DS)
 w = DS.Right
 h = DS.Bottom
 RETURN
----------------------

GetDesktopHeight FUNCTION ! Высота рабочего стола
DS Group(Rect)
  End

 CODE
 GetWindowRect(GetShellWindow(),DS)
 Return Ds:Bottom
----------------------

GetDesktopWidth FUNCTION ! Ширина рабочего стола
DS Group(Rect)
   End

 CODE
 GetWindowRect(GetShellWindow(),DS)
 Return Ds:Right
----------------------

GetWindowSize PROCEDURE (Ulong hwnd,*Long X,*long y,*long w,*long h) ! Координаты и размеры заданого окна
DS Group(RECT)
  End

 CODE
 GetWindowRect(hwnd,DS)
 X = DS.Left
 Y = DS.Top
 W=DS.Right-Ds.Left
 H=DS.Bottom-Ds.Top
 RETURN
----------------------

SetWindowSize PROCEDURE (Ulong hwnd,Long X,Long Y,Long W,Long H) ! Установить координаты и размеры окна

 CODE
 r# = SetWindowPos(hwnd,0,X,Y,W,H,4+16)
 RETURN
----------------------

GetClientSize PROCEDURE (Ulong hwnd,*Long X,*long y,*long w,*long h) ! Координаты и размеры клиентской части окна
DS Group(RECT)
  End

 CODE
 GetClientRect(hwnd,DS)
 X = DS.Left
 Y = DS.Top
 W=DS.Right-Ds.Left
 H=DS.Bottom-Ds.Top
 RETURN