home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Graphics / Graphics.zip / os2apipm.zip / OS2API / OS2-PMWB.ADS < prev    next >
Text File  |  1996-08-12  |  46KB  |  1,047 lines

  1.  
  2. -- ╔═══════════════════════════════════════════════════════════════════╗
  3. -- ║       D E S I G N   E N G I N E R I N G              ║D║S║        ║
  4. -- ║            S O F T W A R E                           ╚═╩═╝        ║
  5. -- ║                                                                   ║
  6. -- ║        Package     Os2.Pmwb                                       ║
  7. -- ║                                                                   ║
  8. -- ║        Author :  Leonid Dulman     1995 , 1996                    ║
  9. -- ║                                                                   ║
  10. -- ║             GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS            ║
  11. -- ║                                                                   ║
  12. -- ║             Base PM window function                               ║
  13. -- ║                                                                   ║
  14. -- ╚═══════════════════════════════════════════════════════════════════╝
  15.  
  16. with Os2.pmsc ;            use Os2.pmsc  ;
  17. with Interfaces.C;         use Interfaces.C;
  18. with Interfaces.C.Strings; use Interfaces.C.Strings;
  19.  
  20. package Os2.PMwb is
  21. pragma Preelaborate (PMwb);
  22.  
  23. --+ INCL_WINWINDOWMGR       General window management
  24. --+ INCL_WINMESSAGEMGR      Message management
  25. --+ INCL_WININPUT           Mouse and keyboard input
  26. --+ INCL_WINDIALOGS         Dialog boxes
  27. --+ INCL_WINSTATICS         Static controls
  28. --+ INCL_WINBUTTONS         Button controls
  29. --+ INCL_WINENTRYFIELDS     Entry Fields
  30. --  INCL_WINMLE             Multiple Line Entry Fields
  31. --+ INCL_WINLISTBOXES       List box controls
  32. --+ INCL_WINMENUS           Menu controls
  33. --+ INCL_WINSCROLLBARS      Scroll bar controls
  34. --+ INCL_WINFRAMEMGR        Frame manager
  35. --  INCL_WINFRAMECTLS       Frame controls (title bars & size border)
  36. --  INCL_WINRECTANGLES      Rectangle routines
  37. --  INCL_WINSYS             System values (and colors)
  38. --  INCL_WINTIMER           Timer routines
  39. --+ INCL_WINACCELERATORS    Keyboard accelerators
  40. --  INCL_WINTRACKRECT       WinTrackRect() function
  41. --  INCL_WINCLIPBOARD       Clipboard manager
  42. --+ INCL_WINCURSORS         Text cursors
  43. --+ INCL_WINPOINTERS        Mouse pointers
  44. --  INCL_WINHOOKS           Hook manager
  45. --+ INCL_WINSWITCHLIST      Shell Switch List API
  46. --  INCL_WINPROGRAMLIST     Shell Program List API
  47. --  INCL_WINSHELLDATA       Shell Data (?)
  48. --  INCL_WINCOUNTRY         Country support
  49. --  INCL_WINHEAP            Heap Manager
  50. --  INCL_WINATOM            Atom Manager
  51. --  INCL_WINERRORS          Error code definitions
  52. --  INCL_NLS                DBCS window manager definition
  53. --+ INCL_WINHELP            Help Manager definitions
  54. --  INCL_WINSEI             Set Error Info API
  55. --  INCL_WINLOAD            Load/Delete Library/Procedure
  56. --  INCL_WINTYPES           Definitions for Datatypes
  57. --  INCL_WINTHUNKAPI        Thunk Procedure API
  58. --  INCL_WINDESKTOP         Desktop API
  59. --
  60.  
  61. -- typedef VOID *MPARAM;    -- mp
  62. -- typedef MPARAM *PMPARAM;   -- pmp
  63. -- typedef VOID *MRESULT;   -- mres
  64. -- typedef MRESULT *PMRESULT;  -- pmres
  65.  
  66. --   Macros to make an MPARAM from standard types.
  67.  
  68. -- #define MPVOID                     ((MPARAM)0L)
  69. -- #define MPFROMP(p)                 ((MPARAM)((ULONG)(p)))
  70. -- #define MPFROMHWND(hwnd)           ((MPARAM)(HWND)(hwnd))
  71. -- #define MPFROMCHAR(ch)             ((MPARAM)(USHORT)(ch))
  72. -- #define MPFROMSHORT(s)             ((MPARAM)(USHORT)(s))
  73. -- #define MPFROM2SHORT(s1, s2)       ((MPARAM)MAKELONG(s1, s2))
  74. -- #define MPFROMSH2CH(s, uch1, uch2) ((MPARAM)MAKELONG(s, MAKESHORT(uch1, uch2)))
  75. -- #define MPFROMLONG(l)              ((MPARAM)(ULONG)(l))
  76.  
  77. --       Macros to extract standard types from an MPARAM
  78. --
  79. --  #define PVOIDFROMMP(mp)            ((VOID *)(mp))
  80. --  #define HWNDFROMMP(mp)             ((HWND)(mp))
  81. --  #define CHAR1FROMMP(mp)            ((UCHAR)(mp))
  82. --  #define CHAR2FROMMP(mp)            ((UCHAR)((ULONG)mp >> 8))
  83. --  #define CHAR3FROMMP(mp)            ((UCHAR)((ULONG)mp >> 16))
  84. --  #define CHAR4FROMMP(mp)            ((UCHAR)((ULONG)mp >> 24))
  85. --  #define SHORT1FROMMP(mp)           ((USHORT)(ULONG)(mp))
  86. --  #define SHORT2FROMMP(mp)           ((USHORT)((ULONG)mp >> 16))
  87. --  #define LONGFROMMP(mp)             ((ULONG)(mp))
  88. --
  89. --       Macros to make an MRESULT from standard types.
  90. --
  91. --  #define MRFROMP(p)                 ((MRESULT)(VOID *)(p))
  92. --  #define MRFROMSHORT(s)             ((MRESULT)(USHORT)(s))
  93. --  #define MRFROM2SHORT(s1, s2)       ((MRESULT)MAKELONG(s1, s2))
  94. --  #define MRFROMLONG(l)              ((MRESULT)(ULONG)(l))
  95. --
  96. --       Macros to extract standard types from an MRESULT
  97. --
  98. --  #define PVOIDFROMMR( mr)            ( ( VOID *)( mr))
  99. --  #define SHORT1FROMMR( mr)           ( ( USHORT)( (ULONG)mr))
  100. --  #define SHORT2FROMMR( mr)           ( ( USHORT)( (ULONG)mr >> 16))
  101. --  #define LONGFROMMR( mr)             ( ( ULONG)( mr))
  102. --
  103. --
  104. --  This is the standard function definition for window procedures.
  105. --  Typically they are names like "XxxxxxxxWndProc", where the prefix
  106. --  "Xxxxxxxxx" is replaced by some name descriptive of the window procedure
  107. --  being declared.  Window procedures must be EXPORTED in the definitions
  108. --  file used by the linker.
  109.  
  110.  HWND_DESKTOP       :constant HWND:=1;
  111.  HWND_OBJECT        :constant HWND:=2;
  112.  HWND_TOP           :constant HWND:=3;
  113.  HWND_BOTTOM        :constant HWND:=4;
  114.  HWND_THREADCAPTURE :constant HWND:=5;
  115.  
  116. function  MyclassWndProc(hwn:HWND   ;   --window handle        --
  117.                          msg:ULONG  ;   --message number       --
  118.                          mp1:MPARAM ;  --1st ( packed) parms   --
  119.                          mp2:MPARAM ) return Mresult;
  120. pragma Import(c,MyclassWndProc, Link_name=>"MyclassWndProc");
  121.  
  122. --       Pointer to a window procedure function
  123. --  typedef MRESULT ( Efunction FNWP)(:HWND;:ULONG;:MPARAM;:MPARAM)return
  124.  
  125. --       Standard Window Classes
  126.  
  127. --  #define WC_FRAME             ( ( PSZ)0xffff0001L)
  128. --  #define WC_COMBOBOX          ( ( PSZ)0xffff0002L)
  129. --  #define WC_BUTTON            ( ( PSZ)0xffff0003L)
  130. --  #define WC_MENU              ( ( PSZ)0xffff0004L)
  131. --  #define WC_STATIC            ( ( PSZ)0xffff0005L)
  132. --  #define WC_ENTRYFIELD        ( ( PSZ)0xffff0006L)
  133. --  #define WC_LISTBOX           ( ( PSZ)0xffff0007L)
  134. --  #define WC_SCROLLBAR         ( ( PSZ)0xffff0008L)
  135. --  #define WC_TITLEBAR          ( ( PSZ)0xffff0009L)
  136. --  #define WC_MLE               ( ( PSZ)0xffff000AL)
  137. --  -- 000B to 000F reserved
  138. --  #define WC_APPSTAT           ( ( PSZ)0xffff0010L)
  139. --  #define WC_KBDSTAT           ( ( PSZ)0xffff0011L)
  140. --  #define WC_PECIC             ( ( PSZ)0xffff0012L)
  141. --  #define WC_DBE_KKPOPUP       ( ( PSZ)0xffff0013L)
  142. --  -- 0014 to 001F reserved
  143. --  #define WC_SPINBUTTON        ( ( PSZ)0xffff0020L)
  144. --  -- 0021 to 0024 reserved
  145. --  #define WC_CONTAINER         ( ( PSZ)0xffff0025L)
  146. --  #define WC_SLIDER            ( ( PSZ)0xffff0026L)
  147. --  #define WC_VALUESET          ( ( PSZ)0xffff0027L)
  148. --  #define WC_NOTEBOOK          ( ( PSZ)0xffff0028L)
  149. --  -- 0029 to 002C used by PEN
  150. --  #define WC_PENFIRST          ( ( PSZ)0xffff0029L)
  151. --  #define WC_PENLAST           ( ( PSZ)0xffff002CL)
  152. --  -- 002D to 0030 reserved
  153. --  -- 0030 to 003F reserved
  154. --  #define WC_MMPMFIRST         ( ( PSZ)0xffff0040L)
  155. --  #define WC_MMPMLAST          ( ( PSZ):constant Ulong:=16#ffff004fL)
  156.  
  157. --       Standard Window Styles
  158.  
  159.  WS_VISIBLE                 :constant Ulong:=16#80000000#;
  160.  WS_DISABLED                :constant Ulong:=16#40000000#;
  161.  WS_CLIPCHILDREN            :constant Ulong:=16#20000000#;
  162.  WS_CLIPSIBLINGS            :constant Ulong:=16#10000000#;
  163.  WS_PARENTCLIP              :constant Ulong:=16#08000000#;
  164.  WS_SAVEBITS                :constant Ulong:=16#04000000#;
  165.  WS_SYNCPAINT               :constant Ulong:=16#02000000#;
  166.  WS_MINIMIZED               :constant Ulong:=16#01000000#;
  167.  WS_MAXIMIZED               :constant Ulong:=16#00800000#;
  168.  WS_ANIMATE                 :constant Ulong:=16#00400000#;
  169.  
  170. --       Dialog manager styles
  171.  
  172.  WS_GROUP                   :constant Ulong:=16#00010000#;
  173.  WS_TABSTOP                 :constant Ulong:=16#00020000#;
  174.  WS_MULTISELECT             :constant Ulong:=16#00040000#;
  175.  
  176. --       Class styles
  177.  
  178.  CS_MOVENOTIFY              :constant Ulong:=16#00000001#;
  179.  CS_SIZEREDRAW              :constant Ulong:=16#00000004#;
  180.  CS_HITTEST                 :constant Ulong:=16#00000008#;
  181.  CS_PUBLIC                  :constant Ulong:=16#00000010#;
  182.  CS_FRAME                   :constant Ulong:=16#00000020#;
  183.  CS_CLIPCHILDREN            :constant Ulong:=16#20000000#;
  184.  CS_CLIPSIBLINGS            :constant Ulong:=16#10000000#;
  185.  CS_PARENTCLIP              :constant Ulong:=16#08000000#;
  186.  CS_SAVEBITS                :constant Ulong:=16#04000000#;
  187.  CS_SYNCPAINT               :constant Ulong:=16#02000000#;
  188.  
  189. --       Window Manager Subsection part 1
  190.  
  191. function WinRegisterClass(ha          :HAB   ;
  192.                           pszClassName:PSZ   ;
  193.                           pfnWndProc  :PFNWP ;
  194.                           flStyle     :ULONG ;
  195.                           cbWindowData:ULONG )return  BOOL32;
  196. pragma Import(c,WinRegisterClass, Link_name=>"_WinRegisterClass");
  197.  
  198. function WinDefWindowProc(hwn :HWND   ;
  199.                           msg :ULONG  ;
  200.                           mp1 :Mparam ;
  201.                           mp2 :Mparam ) return Ulong;
  202. pragma Import(c,WinDefWindowProc, Link_name=>"_WinDefWindowProc");
  203.  
  204. function WinDestroyWindow(hwn:HWND )return BOOL32 ;
  205. pragma Import(c,WinDestroyWindow, Link_name=>"_WinDestroyWindow");
  206.  
  207. function WinShowWindow(hwn:HWND ; fShow:BOOL32 )return BOOL32;
  208. pragma Import(c,WinShowWindow, Link_name=>"_WinShowWindow");
  209.  
  210. function WinQueryWindowRect(hwn     :HWND   ;
  211.                             prclDest:PRECTL )return BOOL32;
  212. pragma Import(c,WinQueryWindowRect, Link_name=>"_WinQueryWindowRect");
  213.  
  214. function WinGetPS(hwn:HWND )return HPS;
  215. pragma Import(c,WinGetPS, Link_name=>"_WinGetPS");
  216.  
  217. function WinReleasePS(hp :HPS)return BOOL32 ;
  218. pragma Import(c,WinReleasePS, Link_name=>"_WinReleasePS");
  219.  
  220. function WinEndPaint( hp :HPS)return BOOL32;
  221. pragma Import(c,WinEndPaint, Link_name=>"_WinEndPaint");
  222.  
  223. function WinGetClipPS(hwn     :HWND  ;
  224.                       hwndClip:HWND  ;
  225.                       fl      :ULONG )return HPS ;
  226. pragma Import(c,WinGetClipPS, Link_name=>"_WinGetClipPS");
  227.  
  228. function WinIsWindowShowing(hwn :HWND )return BOOL32;
  229. pragma Import(c,WinIsWindowShowing, Link_name=>"_WinIsWindowShowing");
  230.  
  231. function WinBeginPaint(hwn      :HWND   ;
  232.                        hp       :HPS    ;
  233.                        prclPaint:PRECTL )return HPS;
  234. pragma Import(c,WinBeginPaint, Link_name=>"_WinBeginPaint");
  235.  
  236. function WinOpenWindowDC(hwn :HWND )return HDC;
  237. pragma Import(c,WinOpenWindowDC, Link_name=>"_WinOpenWindowDC");
  238.  
  239. function WinScrollWindow(hwn       :HWND   ;
  240.                          dx        :LONG   ;
  241.                          dy        :LONG   ;
  242.                          prclScroll:PRECTL ;
  243.                          prclClip  :PRECTL ;
  244.                          hrgnUpdate:HRGN   ;
  245.                          prclUpdate:PRECTL ;
  246.                          rgfsw     :ULONG  )return LONG ;
  247. pragma Import(c,WinScrollWindow, Link_name=>"_WinScrollWindow");
  248.  
  249. --          WinGetClipPS( ) flags
  250. --
  251.  PSF_LOCKWINDOWUPDATE       :constant Ulong:=16#0001#;
  252.  PSF_CLIPUPWARDS            :constant Ulong:=16#0002#;
  253.  PSF_CLIPDOWNWARDS          :constant Ulong:=16#0004#;
  254.  PSF_CLIPSIBLINGS           :constant Ulong:=16#0008#;
  255.  PSF_CLIPCHILDREN           :constant Ulong:=16#0010#;
  256.  PSF_PARENTCLIP             :constant Ulong:=16#0020#;
  257. --
  258. --          WinScrollWindow( ) flags
  259.  
  260.  SW_SCROLLCHILDREN          :constant Ulong:=16#0001#;
  261.  SW_INVALIDATERGN           :constant Ulong:=16#0002#;
  262.  
  263. function WinFillRect(hp    :HPS    ;
  264.                      prcl  :PRECTL ;
  265.                      lColor:LONG   )return BOOL32 ;
  266. pragma Import(c,WinFillRect, Link_name=>"_WinFillRect");
  267.  
  268. --          WinInitialize/WinTerminate Interface declarations
  269.  
  270. type QVERSDATA  is record    -- qver
  271.   environment    :USHORT   ;
  272.   version        :USHORT   ;
  273. end record; -- QVERSDATA;
  274. type PQVERSDATA  is access all QVERSDATA;
  275.  
  276.  QV_OS2                     :constant Ulong:=16#0000#;
  277.  QV_CMS                     :constant Ulong:=16#0001#;
  278.  QV_TSO                     :constant Ulong:=16#0002#;
  279.  QV_TSOBATCH                :constant Ulong:=16#0003#;
  280.  QV_OS400                   :constant Ulong:=16#0004#;
  281.  
  282. function WinQueryVersion(ha:HAB )return ULONG;
  283. pragma Import(c,WinQueryVersion, Link_name=>"_WinQueryVersion");
  284.  
  285. function WinInitialize( flOptions:ULONG)return HAB;
  286. pragma Import(c,WinInitialize, Link_name=>"_WinInitialize");
  287.  
  288. function WinTerminate(ha :HAB )return BOOL32;
  289. pragma Import(c,WinTerminate, Link_name=>"_WinTerminate");
  290.  
  291. function WinQueryAnchorBlock(hwn :HWND )return HAB;
  292. pragma Import(c,WinQueryAnchorBlock, Link_name=>"_WinQueryAnchorBlock");
  293.  
  294. --        End of Window Manager COMMON section
  295.  
  296. function WinCreateWindow(hwndParent      :HWND  ;
  297.                          pszClass        :PSZ   ;
  298.                          pszName         :PSZ   ;
  299.                          flStyle         :ULONG ;
  300.                          x               :LONG  ;
  301.                          y               :LONG  ;
  302.                          cx              :LONG  ;
  303.                          cy              :LONG  ;
  304.                          hwndOwner       :HWND  ;
  305.                          hwndInsertBehind:HWND  ;
  306.                          id              :ULONG ;
  307.                          pCtlData        :PVOID ;
  308.                          pPresParams     :PVOID )return HWND;
  309. pragma Import(c,WinCreateWindow, Link_name=>"_WinCreateWindow");
  310.  
  311. function WinEnableWindow(hwn    :HWND   ;
  312.                          fEnable:BOOL32 )return BOOL;
  313. pragma Import(c,WinEnableWindow, Link_name=>"_WinEnableWindow");
  314.  
  315. function WinIsWindowEnabled(hwn :HWND )return BOOL ;
  316. pragma Import(c,WinIsWindowEnabled, Link_name=>"_WinIsWindowEnabled");
  317.  
  318. function WinEnableWindowUpdate(hwn    :HWND   ;
  319.                                fEnable:BOOL32 )return BOOL ;
  320. pragma Import(c,WinEnableWindowUpdate, Link_name=>"_WinEnableWindowUpdate");
  321.  
  322. function WinIsWindowVisible(hwn :HWND )return BOOL ;
  323. pragma Import(c,WinIsWindowVisible, Link_name=>"_WinIsWindowVisible");
  324.  
  325. function WinQueryWindowText(hwn         :HWND ;
  326.                             cchBufferMax:LONG ;
  327.                             pchBuffer   :PCH  )return LONG;
  328. pragma Import(c,WinQueryWindowText, Link_name=>"_WinQueryWindowText");
  329.  
  330. function WinSetWindowText(hwn    :HWND ;
  331.                           pszText:PSZ  )return BOOL;
  332. pragma Import(c,WinSetWindowText, Link_name=>"_WinSetWindowText");
  333.  
  334. function WinQueryWindowTextLength(hwn :HWND )return LONG ;
  335. pragma Import(c,WinQueryWindowTextLength, Link_name=>"_WinQueryWindowTextLength");
  336.  
  337. function WinWindowFromID(hwndParent:HWND  ;
  338.                          id        :ULONG )return HWND;
  339. pragma Import(c,WinWindowFromID, Link_name=>"_WinWindowFromID");
  340.  
  341. function WinIsWindow(ha :HAB  ;
  342.                      hwn:HWND  )return BOOL;
  343. pragma Import(c,WinIsWindow, Link_name=>"_WinIsWindow");
  344.  
  345. function WinQueryWindow(hwn:HWND ;
  346.                         cmd:LONG )return HWND;
  347. pragma Import(c,WinQueryWindow, Link_name=>"_WinQueryWindow");
  348.  
  349. function WinMultWindowFromIDs(hwndParent:HWND  ;
  350.                               prghwnd   :PHWND ;
  351.                               idFirst   :ULONG ;
  352.                               idLast    :ULONG )return LONG;
  353. pragma Import(c,WinMultWindowFromIDs, Link_name=>"_WinMultWindowFromIDs");
  354.  
  355. --       WinQueryWindow( ) codes
  356.  
  357.  QW_NEXT        :constant ushort:= 0 ;
  358.  QW_PREV        :constant ushort:= 1 ;
  359.  QW_TOP         :constant ushort:= 2 ;
  360.  QW_BOTTOM      :constant ushort:= 3 ;
  361.  QW_OWNER       :constant ushort:= 4 ;
  362.  QW_PARENT      :constant ushort:= 5 ;
  363.  QW_NEXTTOP     :constant ushort:= 6 ;
  364.  QW_PREVTOP     :constant ushort:= 7 ;
  365.  QW_FRAMEOWNER  :constant ushort:= 8 ;
  366.  
  367. function WinSetParent(hwn          :HWND   ;
  368.                       hwndNewParent:HWND   ;
  369.                       fRedraw      :BOOL32 )return BOOL;
  370. pragma Import(c,WinSetParent, Link_name=>"_WinSetParent");
  371.  
  372. function WinIsChild(hwn       :HWND ;
  373.                     hwndParent:HWND )return BOOL;
  374. pragma Import(c,WinIsChild, Link_name=>"_WinIsChild");
  375.  
  376. function WinSetOwner(hwn         :HWND ;
  377.                      hwndNewOwner:HWND )return BOOL;
  378. pragma Import(c,WinSetOwner, Link_name=>"_WinSetOwner");
  379.  
  380. function WinQueryWindowProcess(hwn :HWND ;
  381.                                ppi :PPID ;
  382.                                pti :PTID )return BOOL32 ;
  383. pragma Import(c,WinQueryWindowProcess, Link_name=>"_WinQueryWindowProcess");
  384.  
  385. function WinQueryObjectWindow(hwndDesktop:HWND )return HWND ;
  386. pragma Import(c,WinQueryObjectWindow, Link_name=>"_WinQueryObjectWindow");
  387.  
  388. function WinQueryDesktopWindow(ha:HAB  ;
  389.                                hd:HDC  )return HWND;
  390. pragma Import(c,WinQueryDesktopWindow, Link_name=>"_WinQueryDesktopWindow");
  391.  
  392. --    Window positioning functions
  393.  
  394. function WinSetWindowPos(hwn             :HWND ;
  395.                          hwndInsertBehind:HWND ;
  396.                          x               :LONG ;
  397.                          y               :LONG ;
  398.                          cx              :LONG ;
  399.                          cy              :LONG ;
  400.                           fl             :ULONG)return BOOL;
  401. pragma Import(c,WinSetWindowPos, Link_name=>"_WinSetWindowPos");
  402.  
  403. function WinSetMultWindowPos(ha  :HAB   ;
  404.                              psw :PSWP  ;
  405.                              cswp:ULONG )return BOOL;
  406. pragma Import(c,WinSetMultWindowPos, Link_name=>"_WinSetMultWindowPos");
  407.  
  408. function WinQueryWindowPos(hwn:HWND  ;
  409.                            psw:PSWP  )return BOOL ;
  410. pragma Import(c,WinQueryWindowPos, Link_name=>"_WinQueryWindowPos");
  411.  
  412. --   Values returned from WM_ADJUSTWINDOWPOS and passed to WM_WINDOWPOSCHANGED
  413. --
  414.  AWP_MINIMIZED              :constant Ulong:=16#00010000#;
  415.  AWP_MAXIMIZED              :constant Ulong:=16#00020000#;
  416.  AWP_RESTORED               :constant Ulong:=16#00040000#;
  417.  AWP_ACTIVATE               :constant Ulong:=16#00080000#;
  418.  AWP_DEACTIVATE             :constant Ulong:=16#00100000#;
  419. --
  420. --     WinSetWindowPos( ) flags
  421. --
  422.  SWP_SIZE                   :constant Ulong:=16#0001#;
  423.  SWP_MOVE                   :constant Ulong:=16#0002#;
  424.  SWP_ZORDER                 :constant Ulong:=16#0004#;
  425.  SWP_SHOW                   :constant Ulong:=16#0008#;
  426.  SWP_HIDE                   :constant Ulong:=16#0010#;
  427.  SWP_NOREDRAW               :constant Ulong:=16#0020#;
  428.  SWP_NOADJUST               :constant Ulong:=16#0040#;
  429.  SWP_ACTIVATE               :constant Ulong:=16#0080#;
  430.  SWP_DEACTIVATE             :constant Ulong:=16#0100#;
  431.  SWP_EXTSTATECHANGE         :constant Ulong:=16#0200#;
  432.  SWP_MINIMIZE               :constant Ulong:=16#0400#;
  433.  SWP_MAXIMIZE               :constant Ulong:=16#0800#;
  434.  SWP_RESTORE                :constant Ulong:=16#1000#;
  435.  SWP_FOCUSACTIVATE          :constant Ulong:=16#2000#;
  436.  SWP_FOCUSDEACTIVATE        :constant Ulong:=16#4000#;
  437.  SWP_NOAUTOCLOSE            :constant Ulong:=16#8000#;  -- Valid in PROGDETAILS struct only
  438. --
  439. --     Window painting
  440. --
  441. function WinUpdateWindow(hwn :HWND )return BOOL;
  442. pragma Import(c,WinUpdateWindow, Link_name=>"_WinUpdateWindow");
  443.  
  444. function WinInvalidateRect(hwn             :HWND   ;
  445.                            pwrc            :PRECTL ;
  446.                            fIncludeChildren:BOOL32 )return BOOL;
  447. pragma Import(c,WinInvalidateRect, Link_name=>"_WinInvalidateRect");
  448.  
  449. function WinInvalidateRegion(hwn             :HWND   ;
  450.                              hrg             :HRGN   ;
  451.                              fIncludeChildren:BOOL32 )return BOOL;
  452. pragma Import(c,WinInvalidateRegion, Link_name=>"_WinInvalidateRegion");
  453.  
  454. --  -- Drawing helpers
  455.  
  456. function WinInvertRect(hp  :HPS    ;
  457.                        prcl:PRECTL )return BOOL;
  458. pragma Import(c,WinInvertRect, Link_name=>"_WinInvertRect");
  459.  
  460. function WinDrawBitmap(hpsDst :HPS     ;
  461.                        hbm    :HBITMAP ;
  462.                        pwrcSrc:PRECTL  ;
  463.                        pptlDst:PPOINTL ;
  464.                        clrFore:LONG    ;
  465.                        clrBack:LONG    ;
  466.                        fl     :ULONG   )return BOOL;
  467. pragma Import(c,WinDrawBitmap, Link_name=>"_WinDrawBitmap");
  468.  
  469. --  -- WinDrawBitmap( ) flags
  470.  
  471.  DBM_NORMAL                 :constant Ulong:=16#0000#;
  472.  DBM_INVERT                 :constant Ulong:=16#0001#;
  473.  DBM_HALFTONE               :constant Ulong:=16#0002#;
  474.  DBM_STRETCH                :constant Ulong:=16#0004#;
  475.  DBM_IMAGEATTRS             :constant Ulong:=16#0008#;
  476.  
  477. function WinDrawText(hp      :HPS    ;
  478.                      cchText :LONG   ;
  479.                      lpchText:PCH    ;
  480.                      prcl    :PRECTL ;
  481.                      clrFore :LONG   ;
  482.                      clrBack :LONG   ;
  483.                      flCmd   :ULONG  )return LONG;
  484. pragma Import(c,WinDrawText, Link_name=>"_WinDrawText");
  485.  
  486. --  WinDrawText( ) codes:
  487. --  From DT_LEFT to DT_EXTERNALLEADING; the codes are designed to be OR'ed with
  488. --  SS_TEXT to create variations of the basic text static item.
  489. --
  490.  DT_LEFT                    :constant Ulong:=16#0000#;
  491.  DT_QUERYEXTENT             :constant Ulong:=16#0002#;
  492.  DT_UNDERSCORE              :constant Ulong:=16#0010#;
  493.  DT_STRIKEOUT               :constant Ulong:=16#0020#;
  494.  DT_TEXTATTRS               :constant Ulong:=16#0040#;
  495.  DT_EXTERNALLEADING         :constant Ulong:=16#0080#;
  496.  DT_CENTER                  :constant Ulong:=16#0100#;
  497.  DT_RIGHT                   :constant Ulong:=16#0200#;
  498.  DT_TOP                     :constant Ulong:=16#0000#;
  499.  DT_VCENTER                 :constant Ulong:=16#0400#;
  500.  DT_BOTTOM                  :constant Ulong:=16#0800#;
  501.  DT_HALFTONE                :constant Ulong:=16#1000#;
  502.  DT_MNEMONIC                :constant Ulong:=16#2000#;
  503.  DT_WORDBREAK               :constant Ulong:=16#4000#;
  504.  DT_ERASERECT               :constant Ulong:=16#8000#;
  505.  
  506. function WinDrawBorder(hp     :HPS    ;
  507.                        prcl   :PRECTL ;
  508.                        cx     :LONG   ;
  509.                        cy     :LONG   ;
  510.                        clrFore:LONG   ;
  511.                        clrBack:LONG   ;
  512.                        flCmd  :ULONG  )return BOOL;
  513. pragma Import(c,WinDrawBorder, Link_name=>"_WinDrawBorder");
  514.  
  515. --     WinDrawBorder( ) flags
  516. --
  517.  DB_PATCOPY                 :constant Ulong:=16#0000#;
  518.  DB_PATINVERT               :constant Ulong:=16#0001#;
  519.  DB_DESTINVERT              :constant Ulong:=16#0002#;
  520.  DB_AREAMIXMODE             :constant Ulong:=16#0003#;
  521.  DB_ROP                     :constant Ulong:=16#0007#;
  522.  DB_INTERIOR                :constant Ulong:=16#0008#;
  523.  DB_AREAATTRS               :constant Ulong:=16#0010#;
  524.  DB_STANDARD                :constant Ulong:=16#0100#;
  525.  DB_DLGBORDER               :constant Ulong:=16#0200#;
  526.  
  527. --         Resource loading functions
  528.  
  529. function WinLoadString(ha       :HAB     ;
  530.                        hmod     :HMODULE ;
  531.                        id       :ULONG   ;
  532.                        cchMax   :LONG    ;
  533.                        pchBuffer:PSZ     )return LONG;
  534. pragma Import(c,WinLoadString, Link_name=>"_WinLoadString");
  535.  
  536. function WinLoadMessage(ha       :HAB     ;
  537.                         hmod     :HMODULE ;
  538.                         id       :ULONG   ;
  539.                         cchMax   :LONG    ;
  540.                         pchBuffer:PSZ     )return LONG;
  541. pragma Import(c,WinLoadMessage, Link_name=>"_WinLoadMessage");
  542.  
  543. --                        Window Manager Subsection part 2                  **--
  544.  
  545. function WinSetActiveWindow(hwndDesktop:HWND ;
  546.                             hwn        :HWND )return BOOL32;
  547. pragma Import(c,WinSetActiveWindow, Link_name=>"_WinSetActiveWindow");
  548.  
  549. --        WM_CREATE structure
  550.  
  551. type CREATESTRUCT is record     -- crst
  552.    pPresParams         :PVOID   ;
  553.    pCtlData            :PVOID   ;
  554.    id                  :ULONG   ;
  555.    hwndInsertBehind    :HWND    ;
  556.    hwndOwner           :HWND    ;
  557.    cy                  :LONG    ;
  558.    cx                  :LONG    ;
  559.    y                   :LONG    ;
  560.    x                   :LONG    ;
  561.    flStyle             :ULONG   ;
  562.    pszText             :PSZ     ;
  563.    pszClass            :PSZ     ;
  564.    hwndParent          :HWND    ;
  565. end record; -- CREATESTRUCT;
  566. type PCREATESTRUCT  is access all CREATESTRUCT;
  567.  
  568. --        WinQueryClassInfo( ) structure
  569.  
  570. type CLASSINFO  is record  -- clsi
  571.    flClassStyle     :ULONG   ;
  572.    pfnWindowProc    :PFNWP   ;
  573.    cbWindowData     :ULONG   ;
  574. end record; -- CLASSINFO;
  575. type PCLASSINFO  is access all CLASSINFO;
  576.  
  577. function WinSubclassWindow(hwn  :HWND  ;
  578.                            pfnw :PFNWP )return PFNWP;
  579. pragma Import(c,WinSubclassWindow, Link_name=>"_WinSubclassWindow");
  580.  
  581. function WinQueryClassName(hwn   :HWND ;
  582.                            cchMax:LONG ;
  583.                            pc    :PCH  )return LONG;
  584. pragma Import(c,WinQueryClassName, Link_name=>"_WinQueryClassName");
  585.  
  586. function WinQueryClassInfo(ha          :HAB        ;
  587.                            pszClassName:PSZ        ;
  588.                            pClassInf   :PCLASSINFO )return BOOL32;
  589. pragma Import(c,WinQueryClassInfo, Link_name=>"_WinQueryClassInfo");
  590.  
  591. function WinQueryActiveWindow(hwndDesktop:HWND )return HWND;
  592. pragma Import(c,WinQueryActiveWindow, Link_name=>"_WinQueryActiveWindow");
  593.  
  594. function WinIsThreadActive(ha :HAB )return BOOL32;
  595. pragma Import(c,WinIsTHreadActive, Link_name=>"_WinIsTHreadActive");
  596.  
  597. function WinQuerySysModalWindow(hwndDesktop:HWND )return HWND;
  598. pragma Import(c,WinQuerySysModalWindow, Link_name=>"_WinQuerySysModalWindow");
  599.  
  600. function WinSetSysModalWindow(hwndDesktop:HWND ;
  601.                               hwn        :HWND )return BOOL32  ;
  602. pragma Import(c,WinSetSysModalWindow, Link_name=>"_WinSetSysModalWindow");
  603.  
  604. function WinQueryWindowUShort(hwn  :HWND ;
  605.                               index:LONG )return USHORT;
  606. pragma Import(c,WinQueryWindowUShort, Link_name=>"_WinQueryWindowUShort");
  607.  
  608. function WinSetWindowUShort(hwn  :HWND   ;
  609.                             index:LONG   ;
  610.                             us   :USHORT )return BOOL32  ;
  611. pragma Import(c,WinSetWindowUShort, Link_name=>"_WinSetWindowUShort");
  612.  
  613. function WinQueryWindowULong(hwn  :HWND ;
  614.                              index:LONG )return ULONG ;
  615. pragma Import(c,WinQueryWindowULong, Link_name=>"_WinQueryWindowULong");
  616.  
  617. function WinSetWindowULong(hwn  :HWND  ;
  618.                            index:LONG  ;
  619.                            ul   :ULONG )return BOOL32  ;
  620. pragma Import(c,WinSetWindowULong, Link_name=>"_WinSetWindowULong");
  621.  
  622. function WinQueryWindowPtr(hwn  :HWND ;
  623.                            index:LONG )return PVOID ;
  624. pragma Import(c,WinQueryWindowPtr, Link_name=>"_WinQueryWindowPtr");
  625.  
  626. function WinSetWindowPtr(hwn  :HWND ;
  627.                          index:LONG ;
  628.                           p   :PVOID)return BOOL32  ;
  629. pragma Import(c,WinSetWindowPtr, Link_name=>"_WinSetWindowPtr");
  630.  
  631. function WinSetWindowBits(hwn   :HWND  ;
  632.                           index :LONG  ;
  633.                           flData:ULONG ;
  634.                           flMask:ULONG )return BOOL32  ;
  635. pragma Import(c,WinSetWindowBits, Link_name=>"_WinSetWindowBits");
  636.  
  637. --             Standard WinQueryWindowUShort/ULong( ) indices
  638.  
  639.  QWS_USER    :constant Long:= 0   ;
  640.  QWS_ID      :constant Long:=   -1;
  641.  QWS_MIN     :constant Long:=   -1;
  642.  QWL_USER    :constant Long:= 0   ;
  643.  QWL_STYLE   :constant Long:=   -2;
  644.  QWP_PFNWP   :constant Long:=   -3;
  645.  QWL_HMQ     :constant Long:=   -4;
  646.  QWL_RESERVED:constant Long:=   -5;
  647.  QWL_PENDATA :constant Long:=   -7;
  648.  QWL_MIN     :constant Long:=   -7;
  649. --
  650. --             WC_FRAME WinQueryWindowUShort/ULong( ) indices
  651.  QWL_HHEAP                  :constant Ulong:=16#0004#;
  652.  QWL_HWNDFOCUSSAVE          :constant Ulong:=16#0018#;
  653.  QWL_DEFBUTTON              :constant Ulong:=16#0040#;
  654.  QWL_PSSCBLK                :constant Ulong:=16#0048#;
  655.  QWL_PFEPBLK                :constant Ulong:=16#004c#;
  656.  QWL_PSTATBLK               :constant Ulong:=16#0050#;
  657.  QWS_FLAGS                  :constant Ulong:=16#0008#;
  658.  QWS_RESULT                 :constant Ulong:=16#000a#;
  659.  QWS_XRESTORE               :constant Ulong:=16#000c#;
  660.  QWS_YRESTORE               :constant Ulong:=16#000e#;
  661.  QWS_CXRESTORE              :constant Ulong:=16#0010#;
  662.  QWS_CYRESTORE              :constant Ulong:=16#0012#;
  663.  QWS_XMINIMIZE              :constant Ulong:=16#0014#;
  664.  QWS_YMINIMIZE              :constant Ulong:=16#0016#;
  665. --
  666. --                  Window enumeration
  667. subtype HENUM is LHANDLE   ;  -- henum
  668.  
  669. function WinBeginEnumWindows(hwn :HWND )return HENUM;
  670. pragma Import(c,WinBeginEnumWindows, Link_name=>"_WinBeginEnumWindows");
  671.  
  672. function WinGetNextWindow( hen :HENUM )return HWND ;
  673. pragma Import(c,WinGetNextWindow, Link_name=>"_WinGetNextWindow");
  674.  
  675. function WinEndEnumWindows(hen :HENUM  )return BOOL32 ;
  676. pragma Import(c,WinEndEnumWindows, Link_name=>"_WinEndEnumWindows");
  677.  
  678. function WinWindowFromPoint(hwn      :HWND    ;
  679.                             pptl     :PPOINTL ;
  680.                             fChildren:BOOL32  )return HWND ;
  681. pragma Import(c,WinWindowFromPoint, Link_name=>"_WinWindowFromPoint");
  682.  
  683. function WinMapWindowPoints(hwndFrom:HWND    ;
  684.                             hwndTo  :HWND    ;
  685.                             prgptl  :PPOINTL ;
  686.                             cwpt    :LONG    )return BOOL32 ;
  687. pragma Import(c,WinMapWindowPoints, Link_name=>"_WinMapWindowPoints");
  688.  
  689. --                 More window painting  functions
  690.  
  691. function WinValidateRect(hwn             :HWND   ;
  692.                          prcl            :PRECTL ;
  693.                          fIncludeChildren:BOOL32 )return BOOL32 ;
  694. pragma Import(c,WinValidateRect, Link_name=>"_WinValidateRect");
  695.  
  696. function WinValidateRegion(hwn             :HWND   ;
  697.                            hrg             :HRGN   ;
  698.                            fIncludeChildren:BOOL32 )return BOOL32 ;
  699. pragma Import(c,WinValidateRegion, Link_name=>"_WinValidateRegion");
  700.  
  701. function WinWindowFromDC(hd :HDC )return HWND ;
  702. pragma Import(c,WinWindowFromDC, Link_name=>"_WinWindowFromDC");
  703.  
  704. function WinQueryWindowDC(hwn :HWND )return HDC  ;
  705. pragma Import(c,WinQueryWindowDC, Link_name=>"_WinQueryWindowDC");
  706.  
  707. function WinGetScreenPS(hwndDesktop:HWND )return HPS  ;
  708. pragma Import(c,WinGetScreenPS, Link_name=>"_WinGetScreenPS");
  709.  
  710. function WinLockWindowUpdate(hwndDesktop   :HWND ;
  711.                              hwndLockUpdate:HWND )return BOOL32 ;
  712. pragma Import(c,WinLockWindowUpdate, Link_name=>"_WinLockWindowUpdate");
  713.  
  714. function WinLockVisRegions(hwndDesktop:HWND   ;
  715.                            fLock      :BOOL32 )return BOOL32 ;
  716. pragma Import(c,WinLockVisRegions, Link_name=>"_WinLockVisRegions");
  717.  
  718. function WinQueryUpdateRect(hwn :HWND   ;
  719.                             prcl:PRECTL )return BOOL32 ;
  720. pragma Import(c,WinQueryUpdateRect, Link_name=>"_WinQueryUpdateRect");
  721.  
  722. function WinQueryUpdateRegion(hwn:HWND ;
  723.                               hrg:HRGN )return LONG;
  724. pragma Import(c,WinQueryUpdateRegion, Link_name=>"_WinQueryUpdateRegion");
  725.  
  726. function WinExcludeUpdateRegion(hp :HPS  ;
  727.                                 hwn:HWND )return LONG;
  728. pragma Import(c,WinExcludeUpdateRegion, Link_name=>"_WinExcludeUpdateRegion");
  729.  
  730. --          Standard Window Messages
  731.  WM_NULL                    : constant Ulong := 16#0000# ;
  732.  WM_CREATE                  : constant Ulong := 16#0001# ;
  733.  WM_DESTROY                 : constant Ulong := 16#0002# ;
  734.  WM_ENABLE                  : constant Ulong := 16#0004# ;
  735.  WM_SHOW                    : constant Ulong := 16#0005# ;
  736.  WM_MOVE                    : constant Ulong := 16#0006# ;
  737.  WM_SIZE                    : constant Ulong := 16#0007# ;
  738.  WM_ADJUSTWINDOWPOS         : constant Ulong := 16#0008# ;
  739.  WM_CALCVALIDRECTS          : constant Ulong := 16#0009# ;
  740.  WM_SETWINDOWPARAMS         : constant Ulong := 16#000a# ;
  741.  WM_QUERYWINDOWPARAMS       : constant Ulong := 16#000b# ;
  742.  WM_HITTEST                 : constant Ulong := 16#000c# ;
  743.  WM_ACTIVATE                : constant Ulong := 16#000d# ;
  744.  WM_SETFOCUS                : constant Ulong := 16#000f# ;
  745.  WM_SETSELECTION            : constant Ulong := 16#0010# ;
  746. --
  747. --        language support Winproc
  748.  WM_PPAINT               : constant Ulong := 16#0011# ;
  749.  WM_PSETFOCUS            : constant Ulong := 16#0012# ;
  750.  WM_PSYSCOLORCHANGE      : constant Ulong := 16#0013# ;
  751.  WM_PSIZE                : constant Ulong := 16#0014# ;
  752.  WM_PACTIVATE            : constant Ulong := 16#0015# ;
  753.  WM_PCONTROL             : constant Ulong := 16#0016# ;
  754.  WM_COMMAND              : constant Ulong := 16#0020# ;
  755.  WM_SYSCOMMAND           : constant Ulong := 16#0021# ;
  756.  WM_HELP                 : constant Ulong := 16#0022# ;
  757.  WM_PAINT                : constant Ulong := 16#0023# ;
  758.  WM_TIMER                : constant Ulong := 16#0024# ;
  759.  WM_SEM1                 : constant Ulong := 16#0025# ;
  760.  WM_SEM2                 : constant Ulong := 16#0026# ;
  761.  WM_SEM3                 : constant Ulong := 16#0027# ;
  762.  WM_SEM4                 : constant Ulong := 16#0028# ;
  763.  WM_CLOSE                : constant Ulong := 16#0029# ;
  764.  WM_QUIT                 : constant Ulong := 16#002a# ;
  765.  WM_SYSCOLORCHANGE       : constant Ulong := 16#002b# ;
  766.  WM_SYSVALUECHANGED      : constant Ulong := 16#002d# ;
  767.  WM_APPTERMINATENOTIFY   : constant Ulong := 16#002e# ;
  768.  WM_PRESPARAMCHANGED     : constant Ulong := 16#002f# ;
  769. --
  770. --     -- Control notification messages
  771.  WM_CONTROL              : constant Ulong := 16#0030# ;
  772.  WM_VSCROLL              : constant Ulong := 16#0031# ;
  773.  WM_HSCROLL              : constant Ulong := 16#0032# ;
  774.  WM_INITMENU             : constant Ulong := 16#0033# ;
  775.  WM_MENUSELECT           : constant Ulong := 16#0034# ;
  776.  WM_MENUEND              : constant Ulong := 16#0035# ;
  777.  WM_DRAWITEM             : constant Ulong := 16#0036# ;
  778.  WM_MEASUREITEM          : constant Ulong := 16#0037# ;
  779.  WM_CONTROLPOINTER       : constant Ulong := 16#0038# ;
  780.  WM_QUERYDLGCODE         : constant Ulong := 16#003a# ;
  781.  WM_INITDLG              : constant Ulong := 16#003b# ;
  782.  WM_SUBSTITUTESTRING     : constant Ulong := 16#003c# ;
  783.  WM_MATCHMNEMONIC        : constant Ulong := 16#003d# ;
  784.  WM_SAVEAPPLICATION      : constant Ulong := 16#003e# ;
  785. --
  786. --     --***********************************************************************--
  787. --     --Reserve a range of messages for help manager.  This range includes
  788. --     --public messages; defined below; and private ones; which need to be
  789. --     --reserved here to prevent clashing with application messages
  790. --
  791.  WM_HELPBASE    : constant Ulong := 16#0F00#; -- Start of msgs for help manager
  792.  WM_HELPTOP     : constant Ulong := 16#0FFF#; -- End of msgs for help manager
  793.  WM_USER        : constant Ulong := 16#1000#;
  794.  
  795. --          WM_COMMAND msg source codes
  796.  CMDSRC_PUSHBUTTON  :constant ulong:=    1 ;
  797.  CMDSRC_MENU        :constant ulong:=    2 ;
  798.  CMDSRC_ACCELERATOR :constant ulong:=    3 ;
  799.  CMDSRC_FONTDLG     :constant ulong:=    4 ;
  800.  CMDSRC_FILEDLG     :constant ulong:=    5 ;
  801.  CMDSRC_PRINTDLG    :constant ulong:=    6 ;
  802.  CMDSRC_COLORDLG    :constant ulong:=    7 ;
  803.  CMDSRC_OTHER       :constant ulong:=    0 ;
  804.  
  805. --       The following structure and macro are used to access the
  806. --       WM_COMMAND; WM_HELP; and WM_SYSCOMMAND message parameters:
  807. --
  808. type CMDMSG  is record    -- commandmsg
  809.   cmd       :USHORT  ;           -- mp1
  810.   unused    :USHORT  ;
  811.   source    :USHORT  ;           -- mp2
  812.   fMouse    :USHORT  ;
  813. end record; -- CMDMSG;
  814. type PCMDMSG  is access all CMDMSG;
  815.  
  816. --     The following structure is used by the WinQueryQueueInfo( ) routine
  817.  
  818. type MQINFO  is record    -- mqi
  819.    cb           :ULONG   ;
  820.    pi           :PID     ;
  821.    ti           :TID     ;
  822.    cmsgs        :ULONG   ;
  823.    pReserved    :PVOID   ;
  824. end record; -- MQINFO;
  825. type PMQINFO  is access all MQINFO;
  826.  
  827. function   WinSendMsg(hwn:HWND   ;
  828.                       msg:ULONG  ;
  829.                       mp1:MPARAM ;
  830.                       mp2:Menuitem) return Long   ;
  831. pragma Import(c,WinSendMsg, Link_name=>"_WinSendMsg");
  832.  
  833. function   WinSendMsg(hwn:HWND   ;
  834.                       msg:ULONG  ;
  835.                       mp1:MPARAM ;
  836.                       mp2:MPARAM ) return Long   ;
  837. pragma Import(c,WinSendMsg, Link_name=>"_WinSendMsg");
  838.  
  839. function WinCreateMsgQueue(ha  :HAB  ;
  840.                            cmsg:LONG )return HMQ    ;
  841. pragma Import(c,WinCreateMsgQueue, Link_name=>"_WinCreateMsgQueue");
  842.  
  843. function WinDestroyMsgQueue(hm:HMQ)return BOOL32   ;
  844. pragma Import(c,WinDestroyMsgQueue, Link_name=>"_WinDestroyMsgQueue");
  845.  
  846. function WinQueryQueueInfo(hm    :HMQ     ;
  847.                            pmqi  :PMQINFO ;
  848.                            cbCopy:ULONG   )return BOOL32   ;
  849. pragma Import(c,WinQueryQueueInfo, Link_name=>"_WinQueryQueueInfo");
  850.  
  851. function WinCancelShutdown(hm           :HMQ    ;
  852.                            fCancelAlways:BOOL32 )return BOOL32   ;
  853. pragma Import(c,WinCancelShutdown, Link_name=>"_WinCancelShutdown");
  854.  
  855. function WinGetMsg(ha            :HAB   ;
  856.                    pqms          :PQMSG ;
  857.                    hwndFilter    :HWND  ;
  858.                    msgFilterFirst:ULONG ;
  859.                    msgFilterLast :ULONG )return BOOL32   ;
  860. pragma Import(c,WinGetMsg, Link_name=>"_WinGetMsg");
  861.  
  862. function WinPeekMsg(ha            :HAB   ;
  863.                     pqms          :PQMSG ;
  864.                     hwndFilter    :HWND  ;
  865.                     msgFilterFirst:ULONG ;
  866.                     msgFilterLast :ULONG ;
  867.                     fl            :ULONG )return BOOL32   ;
  868. pragma Import(c,WinPeekMsg, Link_name=>"_WinPeekMsg");
  869.  
  870. function  WinDispatchMsg(ha  :HAB   ;
  871.                          pqms:PQMSG ) return Mresult;
  872. pragma Import(c,WinDispatchMsg, Link_name=>"_WinDispatchMsg");
  873.  
  874. function WinPostMsg(hwn:HWND   ;
  875.                     msg:ULONG  ;
  876.                     mp1:MPARAM ;
  877.                     mp2:MPARAM )return BOOL32   ;
  878. pragma Import(c,WinPostMsg, Link_name=>"_WinPostMsg");
  879.  
  880. function WinRegisterUserMsg(ha       :HAB   ;
  881.                             msgid    :ULONG ;
  882.                             datatype1:LONG  ;
  883.                             dir1     :LONG  ;
  884.                             datatype2:LONG  ;
  885.                             dir2     :LONG  ;
  886.                             datatyper:LONG  )return BOOL32   ;
  887. pragma Import(c,WinRegisterUserMsg, Link_name=>"_WinRegisterUserMsg");
  888.  
  889. function WinRegisterUserDatatype(ha      :HAB   ;
  890.                                  datatype:LONG  ;
  891.                                  count   :LONG  ;
  892.                                  types   :PLONG )return BOOL32   ;
  893. pragma Import(c,WinRegisterUserDatatype, Link_name=>"_WinRegisterUserDatatype");
  894.  
  895. function WinSetMsgMode(ha       :HAB  ;
  896.                        classname:PSZ  ;
  897.                        control  :LONG )return BOOL32   ;
  898. pragma Import(c,WinSetMsgMode, Link_name=>"_WinSetMsgMode");
  899.  
  900. function WinSetSynchroMode(ha  :HAB  ;
  901.                            mode:LONG )return BOOL32   ;
  902. pragma Import(c,WinSetSynchroMode, Link_name=>"_WinSetSynchroMode");
  903.  
  904. --          WinPeekMsg( ) constants
  905.  PM_REMOVE                  : constant Long := 16#0001#;
  906.  PM_NOREMOVE                : constant Long := 16#0000#;
  907.  
  908. --          WinRegisterUserDatatype datatypes defined in separate file
  909. --        #include <pmtypes.h>  constants
  910.  
  911. --          WinRegisterUserMsg direction codes
  912.  RUM_IN    : constant Long := 1;
  913.  RUM_OUT   : constant Long := 2;
  914.  RUM_INOUT : constant Long := 3;
  915. --
  916. --          WinSetMsgMode constants
  917.  SMD_DELAYED                : constant Long := 16#0001#;
  918.  SMD_IMMEDIATE              : constant Long := 16#0002#;
  919. --
  920. --          WinSetSynchroMode constants
  921.  SSM_SYNCHRONOUS            : constant Long := 16#0001#;
  922.  SSM_ASYNCHRONOUS           : constant Long := 16#0002#;
  923.  SSM_MIXED                  : constant Long := 16#0003#;
  924. --
  925. --          WM_CALCVALIDRECTS return flags
  926.  CVR_ALIGNLEFT               : constant Long := 16#0001#;
  927.  CVR_ALIGNBOTTOM             : constant Long := 16#0002#;
  928.  CVR_ALIGNRIGHT              : constant Long := 16#0004#;
  929.  CVR_ALIGNTOP                : constant Long := 16#0008#;
  930.  CVR_REDRAW                  : constant Long := 16#0010#;
  931. --
  932. --          WM_HITTEST return codes
  933.  HT_NORMAL           : constant Long :=        0 ;
  934.  HT_TRANSPARENT      : constant Long :=         -1;
  935.  HT_DISCARD          : constant Long :=         -2;
  936.  HT_ERROR            : constant Long :=         -3;
  937. --
  938. --          WM_SET/QUERYWINDOWPARAMS structures and flags
  939.  
  940. type WNDPARAMS   is record   -- wprm
  941.    fsStatus        :ULONG   ;
  942.    cchText         :ULONG   ;
  943.    pszText         :PSZ     ;
  944.    cbPresParams    :ULONG   ;
  945.    pPresParams     :PVOID   ;
  946.    cbCtlData       :ULONG   ;
  947.    pCtlData        :PVOID   ;
  948. end record; -- WNDPARAMS;
  949. type PWNDPARAMS  is access all WNDPARAMS;
  950.  
  951.  WPM_TEXT                   : constant Long := 16#0001#;
  952.  WPM_CTLDATA                : constant Long := 16#0002#;
  953.  WPM_PRESPARAMS             : constant Long := 16#0004#;
  954.  WPM_CCHTEXT                : constant Long := 16#0008#;
  955.  WPM_CBCTLDATA              : constant Long := 16#0010#;
  956.  WPM_CBPRESPARAMS           : constant Long := 16#0020#;
  957.  
  958. function WinInSendMsg(ha:HAB  )return BOOL32   ;
  959. pragma Import(c,WinInSendMsg, Link_name=>"_WinInSendMsg");
  960.  
  961. function WinBroadcastMsg(hwn:HWND   ;
  962.                          msg:ULONG  ;
  963.                          mp1:MPARAM ;
  964.                          mp2:MPARAM ;
  965.                          rgf:ULONG  )return BOOL32   ;
  966. pragma Import(c,WinBroadcastMsg, Link_name=>"_WinBroadcastMsg");
  967.  
  968. --          WinBroadcastMsg codes
  969.  BMSG_POST                  : constant Long := 16#0000#;
  970.  BMSG_SEND                  : constant Long := 16#0001#;
  971.  BMSG_POSTQUEUE             : constant Long := 16#0002#;
  972.  BMSG_DESCENDANTS           : constant Long := 16#0004#;
  973.  BMSG_FRAMEONLY             : constant Long := 16#0008#;
  974.  
  975. function WinWaitMsg(ha      :HAB   ;
  976.                     msgFirst:ULONG ;
  977.                     msgLast :ULONG )return BOOL32 ;
  978. pragma Import(c,WinWaitMsg, Link_name=>"_WinWaitMsg");
  979.  
  980. function WinQueryQueueStatus(hwndDesktop:HWND )return ULONG;
  981. pragma Import(c,WinQueryQueueStatus, Link_name=>"_WinQueryQueueStatus");
  982.  
  983. --             WinQueryQueueStatus( ) constants
  984.  QS_KEY                     : constant Long := 16#0001#;
  985.  QS_MOUSEBUTTON             : constant Long := 16#0002#;
  986.  QS_MOUSEMOVE               : constant Long := 16#0004#;
  987.  QS_MOUSE                   : constant Long := 16#0006#; -- QS_MOUSEMOVE|QS_MOUSEBUTTON
  988.  QS_TIMER                   : constant Long := 16#0008#;
  989.  QS_PAINT                   : constant Long := 16#0010#;
  990.  QS_POSTMSG                 : constant Long := 16#0020#;
  991.  QS_SEM1                    : constant Long := 16#0040#;
  992.  QS_SEM2                    : constant Long := 16#0080#;
  993.  QS_SEM3                    : constant Long := 16#0100#;
  994.  QS_SEM4                    : constant Long := 16#0200#;
  995.  QS_SENDMSG                 : constant Long := 16#0400#;
  996.  QS_MSGINPUT                : constant Long := 16#0800#;
  997.  
  998. function WinQueryMsgPos(ha  :HAB     ;
  999.                         pptl:PPOINTL )return BOOL32 ;
  1000. pragma Import(c,WinQueryMsgPos, Link_name=>"_WinQueryMsgPos");
  1001.  
  1002. function WinQueryMsgTime(ha :HAB )return ULONG;
  1003. pragma Import(c,WinQueryMsgTime, Link_name=>"_WinQueryMsgTime");
  1004.  
  1005. subtype  HEV   is ULONG ;    -- hev
  1006. subtype  HMTX  is ULONG ;   -- hmtx
  1007. subtype  HMUX  is ULONG ;   -- hmux
  1008.  
  1009. function WinWaitEventSem(hv       :HEV   ;
  1010.                          ulTimeout:ULONG )return APIRET;
  1011. pragma Import(c,WinWaitEventSem, Link_name=>"_WinWaitEventSem");
  1012.  
  1013. function WinRequestMutexSem(hmt      :HMTX  ;
  1014.                             ulTimeout:ULONG )return APIRET;
  1015. pragma Import(c,WinRequestMutexSem, Link_name=>"_WinRequestMutexSem");
  1016.  
  1017. function WinWaitMuxWaitSem(hmx      :HMUX   ;
  1018.                            ulTimeout:ULONG  ;
  1019.                            pulUser  :PULONG )return APIRET;
  1020. pragma Import(c,WinWaitMuxWaitSem, Link_name=>"_WinWaitMuxWaitSem");
  1021.  
  1022. function WinPostQueueMsg(hm :HMQ    ;
  1023.                          msg:ULONG  ;
  1024.                          mp1:MPARAM ;
  1025.                          mp2:MPARAM )return BOOL32 ;
  1026. pragma Import(c,WinPostQueueMsg, Link_name=>"_WinPostQueueMsg");
  1027.  
  1028. --          WinSetMsgInterest( )/WinSetClassMsgInterest( ) constants
  1029.  SMIM_ALL                   : constant Long := 16#0EFF#;
  1030.  SMI_NOINTEREST             : constant Long := 16#0001#;
  1031.  SMI_INTEREST               : constant Long := 16#0002#;
  1032.  SMI_RESET                  : constant Long := 16#0004#;
  1033.  SMI_AUTODISPATCH           : constant Long := 16#0008#;
  1034.  
  1035. function WinSetMsgInterest(hwn      :HWND  ;
  1036.                            msg_class:ULONG ;
  1037.                            control  :LONG  )return BOOL32 ;
  1038. pragma Import(c,WinSetMsgInterest, Link_name=>"_WinSetMsgInterest");
  1039.  
  1040. function WinSetClassMsgInterest(ha          :HAB   ;
  1041.                                 pszClassName:PSZ   ;
  1042.                                 msg_class   :ULONG ;
  1043.                                 control     :LONG  )return BOOL32 ;
  1044. pragma Import(c,WinSetClassMsgInterest, Link_name=>"_WinSetClassMsgInterest");
  1045.  
  1046. end os2.PMwb;
  1047.