home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Graphics / Graphics.zip / os2apipm.zip / OS2API / OS2-PMWD.ADS < prev    next >
Text File  |  1996-08-10  |  25KB  |  544 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.PMwd                                       ║
  7. -- ║                                                                   ║
  8. -- ║        Author :  Leonid Dulman     1995 , 1996                    ║
  9. -- ║                                                                   ║
  10. -- ║             GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS            ║
  11. -- ║                                                                   ║
  12. -- ║             PM Window dialog                                      ║
  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.PMwd is
  21. pragma Preelaborate (PMwd);
  22. --
  23. --             Keyboard and mouse
  24. --       Keyboard and mouse input COMMON subsection
  25.  
  26. function WinSetFocus(hwndDesktop :HWND ;
  27.                      hwndSetFocus:HWND )return BOOL32 ;
  28. pragma Import(c,WinSetFocus, Link_name=>"_WinSetFocus");
  29.  
  30. function WinFocusChange(hwndDesktop  :HWND  ;
  31.                         hwndSetFocus :HWND  ;
  32.                         flFocusChange:ULONG )return BOOL32 ;
  33. pragma Import(c,WinFocusChange, Link_name=>"_WinFocusChange");
  34.  
  35. function WinLockupSystem(ha:HAB )return BOOL32;
  36. pragma Import(c,WinLockupSystem, Link_name=>"_WinLockupSystem");
  37.  
  38. function WinUnlockSystem(ha :HAB ; pszPassword:PSZ)return BOOL32;
  39. pragma Import(c,WinUnlockSystem, Link_name=>"_WinUnlockSystem");
  40.  
  41.  FC_NOSETFOCUS              :constant Ulong:=16#0001#;
  42.  FC_NOBRINGTOTOP            :constant Ulong:=16#0001#;
  43.  FC_NOLOSEFOCUS             :constant Ulong:=16#0002#;
  44.  FC_NOBRINGTOPFIRSTWINDOW   :constant Ulong:=16#0002#;
  45.  FC_NOSETACTIVE             :constant Ulong:=16#0004#;
  46.  FC_NOLOSEACTIVE            :constant Ulong:=16#0008#;
  47.  FC_NOSETSELECTION          :constant Ulong:=16#0010#;
  48.  FC_NOLOSESELECTION         :constant Ulong:=16#0020#;
  49.  QFC_NEXTINCHAIN            :constant Ulong:=16#0001#;
  50.  QFC_ACTIVE                 :constant Ulong:=16#0002#;
  51.  QFC_FRAME                  :constant Ulong:=16#0003#;
  52.  QFC_SELECTACTIVE           :constant Ulong:=16#0004#;
  53.  QFC_PARTOFCHAIN            :constant Ulong:=16#0005#;
  54.  
  55. --       Keyboard and mouse input COMMON subsection
  56.  
  57. function WinSetCapture(hwndDesktop:HWND ;
  58.                        hwn        :HWND )return BOOL32 ;
  59. pragma Import(c,WinSetCapture, Link_name=>"_WinSetCapture");
  60.  
  61. function WinQueryCapture(hwndDesktop:HWND )return HWND ;
  62. pragma Import(c,WinQueryCapture, Link_name=>"_WinQueryCapture");
  63.  
  64. function WinCheckInput(ha :HAB )return BOOL32 ;
  65. pragma Import(c,WinCheckInput, Link_name=>"_WinCheckInput");
  66.  
  67. --          Mouse input messages
  68.  WM_MOUSEFIRST           :constant Ulong:=16#0070#;
  69.  WM_MOUSELAST            :constant Ulong:=16#0079#;
  70.  WM_BUTTONCLICKFIRST     :constant Ulong:=16#0071#;
  71.  WM_BUTTONCLICKLAST      :constant Ulong:=16#0079#;
  72.  WM_MOUSEMOVE            :constant Ulong:=16#0070#;
  73.  WM_BUTTON1DOWN          :constant Ulong:=16#0071#;
  74.  WM_BUTTON1UP            :constant Ulong:=16#0072#;
  75.  WM_BUTTON1DBLCLK        :constant Ulong:=16#0073#;
  76.  WM_BUTTON2DOWN          :constant Ulong:=16#0074#;
  77.  WM_BUTTON2UP            :constant Ulong:=16#0075#;
  78.  WM_BUTTON2DBLCLK        :constant Ulong:=16#0076#;
  79.  WM_BUTTON3DOWN          :constant Ulong:=16#0077#;
  80.  WM_BUTTON3UP            :constant Ulong:=16#0078#;
  81.  WM_BUTTON3DBLCLK        :constant Ulong:=16#0079#;
  82.  WM_MOUSEMAP             :constant Ulong:=16#007D#;
  83.  WM_EXTMOUSEFIRST        :constant Ulong:=16#0410#;
  84.  WM_EXTMOUSELAST         :constant Ulong:=16#0419#;
  85.  WM_CHORD                :constant Ulong:=16#0410#;
  86.  WM_BUTTON1MOTIONSTART   :constant Ulong:=16#0411#;
  87.  WM_BUTTON1MOTIONEND     :constant Ulong:=16#0412#;
  88.  WM_BUTTON1CLICK         :constant Ulong:=16#0413#;
  89.  WM_BUTTON2MOTIONSTART   :constant Ulong:=16#0414#;
  90.  WM_BUTTON2MOTIONEND     :constant Ulong:=16#0415#;
  91.  WM_BUTTON2CLICK         :constant Ulong:=16#0416#;
  92.  WM_BUTTON3MOTIONSTART   :constant Ulong:=16#0417#;
  93.  WM_BUTTON3MOTIONEND     :constant Ulong:=16#0418#;
  94.  WM_BUTTON3CLICK         :constant Ulong:=16#0419#;
  95. --
  96. --           Messages 16#041A#  16#041F# are reserved
  97. --
  98.  WM_MOUSETRANSLATEFIRST  :constant Ulong:=16#0420#;
  99.  WM_MOUSETRANSLATELAST   :constant Ulong:=16#0428#;
  100.  WM_BEGINDRAG            :constant Ulong:=16#0420#;
  101.  WM_ENDDRAG              :constant Ulong:=16#0421#;
  102.  WM_SINGLESELECT         :constant Ulong:=16#0422#;
  103.  WM_OPEN                 :constant Ulong:=16#0423#;
  104.  WM_CONTEXTMENU          :constant Ulong:=16#0424#;
  105.  WM_CONTEXTHELP          :constant Ulong:=16#0425#;
  106.  WM_TEXTEDIT             :constant Ulong:=16#0426#;
  107.  WM_BEGINSELECT          :constant Ulong:=16#0427#;
  108.  WM_ENDSELECT            :constant Ulong:=16#0428#;
  109.  WM_PENFIRST             :constant Ulong:=16#04C0#;
  110.  WM_PENLAST              :constant Ulong:=16#04FF#;
  111.  WM_MMPMFIRST            :constant Ulong:=16#0500#;
  112.  WM_MMPMLAST             :constant Ulong:=16#05FF#;
  113.  
  114. function WinQueryFocus(hwndDesktop:HWND )return HWND ;
  115. pragma Import(c,WinQueryFocus, Link_name=>"_WinQueryFocus");
  116.  
  117. --          Key/Character input messages
  118.  WM_CHAR                    :constant Ulong:=16#007a#;
  119.  WM_VIOCHAR                 :constant Ulong:=16#007b#;
  120. --
  121. --        WM_CHAR fs field bits
  122.  KC_NONE                    :constant Ulong:=16#0000#;   -- Reserved
  123.  KC_CHAR                    :constant Ulong:=16#0001#;
  124.  KC_VIRTUALKEY              :constant Ulong:=16#0002#;
  125.  KC_SCANCODE                :constant Ulong:=16#0004#;
  126.  KC_SHIFT                   :constant Ulong:=16#0008#;
  127.  KC_CTRL                    :constant Ulong:=16#0010#;
  128.  KC_ALT                     :constant Ulong:=16#0020#;
  129.  KC_KEYUP                   :constant Ulong:=16#0040#;
  130.  KC_PREVDOWN                :constant Ulong:=16#0080#;
  131.  KC_LONEKEY                 :constant Ulong:=16#0100#;
  132.  KC_DEADKEY                 :constant Ulong:=16#0200#;
  133.  KC_COMPOSITE               :constant Ulong:=16#0400#;
  134.  KC_INVALIDCOMP             :constant Ulong:=16#0800#;
  135.  KC_TOGGLE                  :constant Ulong:=16#1000#;
  136.  KC_INVALIDCHAR             :constant Ulong:=16#2000#;
  137.  KC_DBCSRSRVD1              :constant Ulong:=16#4000#;
  138.  KC_DBCSRSRVD2              :constant Ulong:=16#8000#;
  139.  
  140. --
  141. --       The following structure and macro are used to access the
  142. --       WM_MOUSEMOVE; and WM_BUTTON message parameters
  143. --
  144. type MSEMSG   is record   -- mousemsg
  145.   x               :SHORT   ;  -- mp1
  146.   y               :SHORT   ;
  147.   codeHitTest     :USHORT  ;   -- mp2
  148.   fsInp           :USHORT  ;   -- input flags
  149. end record; -- MSEMSG;
  150. type PMSEMSG  is access all MSEMSG;
  151.  
  152. type CHRMSG   is record   -- charmsg
  153.     fs         :USHORT  ;       -- mp1
  154.     cRepeat    :UCHAR   ;
  155.     scancode   :UCHAR   ;
  156.     chr        :USHORT  ;        -- mp2
  157.     vkey       :USHORT  ;
  158. end record; -- CHRMSG;
  159. type PCHRMSG  is access all CHRMSG;
  160.  
  161.  INP_NONE                   :constant Ulong:=16#0000#;
  162.  INP_KBD                    :constant Ulong:=16#0001#;
  163.  INP_MULT                   :constant Ulong:=16#0002#;
  164.  INP_RES2                   :constant Ulong:=16#0004#;
  165.  INP_SHIFT                  :constant Ulong:=16#0008#;
  166.  INP_CTRL                   :constant Ulong:=16#0010#;
  167.  INP_ALT                    :constant Ulong:=16#0020#;
  168.  INP_RES3                   :constant Ulong:=16#0040#;
  169.  INP_RES4                   :constant Ulong:=16#0080#;
  170.  INP_IGNORE                 :constant Ulong:=16#FFFF#;
  171. --
  172. --          Virtual key values
  173.  VK_BUTTON1                 :constant Ulong:=16#01#;
  174.  VK_BUTTON2                 :constant Ulong:=16#02#;
  175.  VK_BUTTON3                 :constant Ulong:=16#03#;
  176.  VK_BREAK                   :constant Ulong:=16#04#;
  177.  VK_BACKSPACE               :constant Ulong:=16#05#;
  178.  VK_TAB                     :constant Ulong:=16#06#;
  179.  VK_BACKTAB                 :constant Ulong:=16#07#;
  180.  VK_NEWLINE                 :constant Ulong:=16#08#;
  181.  VK_SHIFT                   :constant Ulong:=16#09#;
  182.  VK_CTRL                    :constant Ulong:=16#0A#;
  183.  VK_ALT                     :constant Ulong:=16#0B#;
  184.  VK_ALTGRAF                 :constant Ulong:=16#0C#;
  185.  VK_PAUSE                   :constant Ulong:=16#0D#;
  186.  VK_CAPSLOCK                :constant Ulong:=16#0E#;
  187.  VK_ESC                     :constant Ulong:=16#0F#;
  188.  VK_SPACE                   :constant Ulong:=16#10#;
  189.  VK_PAGEUP                  :constant Ulong:=16#11#;
  190.  VK_PAGEDOWN                :constant Ulong:=16#12#;
  191.  VK_END                     :constant Ulong:=16#13#;
  192.  VK_HOME                    :constant Ulong:=16#14#;
  193.  VK_LEFT                    :constant Ulong:=16#15#;
  194.  VK_UP                      :constant Ulong:=16#16#;
  195.  VK_RIGHT                   :constant Ulong:=16#17#;
  196.  VK_DOWN                    :constant Ulong:=16#18#;
  197.  VK_PRINTSCRN               :constant Ulong:=16#19#;
  198.  VK_INSERT                  :constant Ulong:=16#1A#;
  199.  VK_DELETE                  :constant Ulong:=16#1B#;
  200.  VK_SCRLLOCK                :constant Ulong:=16#1C#;
  201.  VK_NUMLOCK                 :constant Ulong:=16#1D#;
  202.  VK_ENTER                   :constant Ulong:=16#1E#;
  203.  VK_SYSRQ                   :constant Ulong:=16#1F#;
  204.  VK_F1                      :constant Ulong:=16#20#;
  205.  VK_F2                      :constant Ulong:=16#21#;
  206.  VK_F3                      :constant Ulong:=16#22#;
  207.  VK_F4                      :constant Ulong:=16#23#;
  208.  VK_F5                      :constant Ulong:=16#24#;
  209.  VK_F6                      :constant Ulong:=16#25#;
  210.  VK_F7                      :constant Ulong:=16#26#;
  211.  VK_F8                      :constant Ulong:=16#27#;
  212.  VK_F9                      :constant Ulong:=16#28#;
  213.  VK_F10                     :constant Ulong:=16#29#;
  214.  VK_F11                     :constant Ulong:=16#2A#;
  215.  VK_F12                     :constant Ulong:=16#2B#;
  216.  VK_F13                     :constant Ulong:=16#2C#;
  217.  VK_F14                     :constant Ulong:=16#2D#;
  218.  VK_F15                     :constant Ulong:=16#2E#;
  219.  VK_F16                     :constant Ulong:=16#2F#;
  220.  VK_F17                     :constant Ulong:=16#30#;
  221.  VK_F18                     :constant Ulong:=16#31#;
  222.  VK_F19                     :constant Ulong:=16#32#;
  223.  VK_F20                     :constant Ulong:=16#33#;
  224.  VK_F21                     :constant Ulong:=16#34#;
  225.  VK_F22                     :constant Ulong:=16#35#;
  226.  VK_F23                     :constant Ulong:=16#36#;
  227.  VK_F24                     :constant Ulong:=16#37#;
  228.  VK_ENDDRAG                 :constant Ulong:=16#38#;
  229.  VK_MENU                    :constant Ulong:=16#29#;
  230.  VK_DBCSFIRST               :constant Ulong:=16#0080#;
  231.  VK_DBCSLAST                :constant Ulong:=16#00ff#;
  232.  VK_USERFIRST               :constant Ulong:=16#0100#;
  233.  VK_USERLAST                :constant Ulong:=16#01ff#;
  234. --
  235. function WinGetKeyState(hwndDesktop:HWND ;
  236.                         vkey       :LONG )return LONG;
  237. pragma Import(c,WinGetKeyState, Link_name=>"_WinGetKeyState");
  238.  
  239. function WinGetPhysKeyState(hwndDesktop:HWND ;
  240.                             sc         :LONG )return LONG;
  241. pragma Import(c,WinGetPhysKeyState, Link_name=>"_WinGetPhysKeyState");
  242.  
  243. function WinEnablePhysInput(hwndDesktop:HWND   ;
  244.                             fEnable    :BOOL32 )return BOOL32 ;
  245. pragma Import(c,WinEnablePhysInput, Link_name=>"_WinEnablePhysInput");
  246.  
  247. function WinIsPhysInputEnabled(hwndDesktop:HWND )return BOOL32 ;
  248. pragma Import(c,WinIsPhysInputEnabled, Link_name=>"_WinIsPhysInputEnabled");
  249.  
  250. function WinSetKeyboardStateTable(hwndDesktop   :HWND   ;
  251.                                   pKeyStateTable:PBYTE  ;
  252.                                   fSet          :BOOL32 )return BOOL32 ;
  253. pragma Import(c,WinSetKeyboardStateTable, Link_name=>"_WinSetKeyboardStateTable");
  254.  
  255. --        -- Journal Notification messages
  256.  WM_JOURNALNOTIFY           :constant Ulong:=16#007c#;
  257. --
  258. --        Define the valid commands ( lParm1) for journal notify message
  259.  JRN_QUEUESTATUS            :constant Ulong:=16#00000001#;
  260.  JRN_PHYSKEYSTATE           :constant Ulong:=16#00000002#;
  261. --
  262.  
  263. --        Dialog Manager
  264. --
  265. --           Dialog Manager COMMON subsection
  266. --
  267. function WinGetDlgMsg(hwndDlg:HWND  ;
  268.                       pqms   :PQMSG )return BOOL32   ;
  269. pragma Import(c,WinGetDlgMsg, Link_name=>"_WinGetDlgMsg");
  270.  
  271. function WinLoadDlg(hwndParent   :HWND    ;
  272.                     hwndOwner    :HWND    ;
  273.                     pfnDlgProc   :PFNWP   ;
  274.                     hmod         :HMODULE ;
  275.                     idDlg        :ULONG   ;
  276.                     pCreateParams:PVOID   )return HWND   ;
  277. pragma Import(c,WinLoadDlg, Link_name=>"_WinLoadDlg");
  278.  
  279. function WinDlgBox(hwndParent   :HWND    ;
  280.                    hwndOwner    :HWND    ;
  281.                    pfnDlgProc   :PFNWP   ;
  282.                    hmod         :HMODULE ;
  283.                    idDlg        :ULONG   ;
  284.                    pCreateParams:PVOID   )return ULONG ;
  285. pragma Import(c,WinDlgBox, Link_name=>"_WinDlgBox");
  286.  
  287. function WinDismissDlg(hwndDlg :HWND  ;
  288.                        usResult:ULONG )return BOOL32   ;
  289. pragma Import(c,WinDismissDlg, Link_name=>"_WinDismissDlg");
  290.  
  291. function WinQueryDlgItemShort(hwndDlg:HWND   ;
  292.                               idItem :ULONG  ;
  293.                               pResult:PSHORT ;
  294.                               fSigned:BOOL32 )return BOOL32   ;
  295. pragma Import(c,WinQueryDlgItemShort, Link_name=>"_WinQueryDlgItemShort");
  296.  
  297. function WinSetDlgItemShort(hwndDlg:HWND   ;
  298.                             idItem :ULONG  ;
  299.                             usValue:USHORT ;
  300.                             fSigned:BOOL32 )return BOOL32   ;
  301. pragma Import(c,WinSetDlgItemShort, Link_name=>"_WinSetDlgItemShort");
  302.  
  303. function WinSetDlgItemText(hwndDlg:HWND  ;
  304.                            idItem :ULONG ;
  305.                            pszText:PSZ   )return BOOL32   ;
  306. pragma Import(c,WinSetDlgItemText, Link_name=>"_WinSetDlgItemText");
  307.  
  308. function WinQueryDlgItemText(hwndDlg     :HWND  ;
  309.                              idItem      :ULONG ;
  310.                              cchBufferMax:LONG  ;
  311.                              pchBuffer   :PSZ   )return ULONG ;
  312. pragma Import(c,WinQueryDlgItemText, Link_name=>"_WinQueryDlgItemText");
  313.  
  314. function WinQueryDlgItemTextLength(hwndDlg:HWND  ;
  315.                                    idItem :ULONG )return LONG  ;
  316. pragma Import(c,WinQueryDlgItemTextLength, Link_name=>"_WinQueryDlgItemTextLength");
  317.  
  318. function  WinDefDlgProc(hwndDlg:HWND   ;
  319.                         msg    :ULONG  ;
  320.                         mp1    :Mparam ;
  321.                         mp2    :Mparam ) return Long;
  322. pragma Import(c,WinDefDlgProc, Link_name=>"_WinDefDlgProc");
  323.  
  324. --      Special item IDs
  325.  DID_OK      : constant Ulong:= 1 ;
  326.  DID_CANCEL  : constant Ulong:= 2 ;
  327.  DID_ERROR   : constant Ulong:= 16#ffff#;
  328. --
  329. function WinAlarm(hwndDesktop:HWND  ;
  330.                   rgfType    :ULONG )return  BOOL32;
  331. pragma Import(c,WinAlarm, Link_name=>"_WinAlarm");
  332.  
  333. --      WinAlarm Codes
  334.  
  335.  WA_WARNING    :constant Ulong:= 0;
  336.  WA_NOTE       :constant Ulong:= 1;
  337.  WA_ERROR      :constant Ulong:= 2;
  338.  WA_CWINALARMS :constant Ulong:=10; -- count of valid alarms     53304
  339.  
  340. function WinMessageBox(hwndParent:HWND  ;
  341.                        hwndOwner :HWND  ;
  342.                        pszText   :PSZ   ;
  343.                        pszCaption:PSZ   ;
  344.                        idWindow  :ULONG ;
  345.                        flStyle   :ULONG )return ULONG;
  346. pragma Import(c,WinMessageBox, Link_name=>"_WinMessageBox");
  347.  
  348. --     -- Message box types
  349.  
  350.  MB_OK                   :constant Ulong:=16#0000#;
  351.  MB_OKCANCEL             :constant Ulong:=16#0001#;
  352.  MB_RETRYCANCEL          :constant Ulong:=16#0002#;
  353.  MB_ABORTRETRYIGNORE     :constant Ulong:=16#0003#;
  354.  MB_YESNO                :constant Ulong:=16#0004#;
  355.  MB_YESNOCANCEL          :constant Ulong:=16#0005#;
  356.  MB_CANCEL               :constant Ulong:=16#0006#;
  357.  MB_ENTER                :constant Ulong:=16#0007#;
  358.  MB_ENTERCANCEL          :constant Ulong:=16#0008#;
  359.  MB_NOICON               :constant Ulong:=16#0000#;
  360.  MB_CUANOTIFICATION      :constant Ulong:=16#0000#;
  361.  MB_ICONQUESTION         :constant Ulong:=16#0010#;
  362.  MB_ICONEXCLAMATION      :constant Ulong:=16#0020#;
  363.  MB_CUAWARNING           :constant Ulong:=16#0020#;
  364.  MB_ICONASTERISK         :constant Ulong:=16#0030#;
  365.  MB_ICONHAND             :constant Ulong:=16#0040#;
  366.  MB_CUACRITICAL          :constant Ulong:=16#0040#;
  367.  MB_QUERY                :constant Ulong:=16#0010#;
  368.  MB_WARNING              :constant Ulong:=16#0020#;
  369.  MB_INFORMATION          :constant Ulong:=16#0030#;
  370.  MB_CRITICAL             :constant Ulong:=16#0040#;
  371.  MB_ERROR                :constant Ulong:=16#0040#;
  372.  MB_DEFBUTTON1           :constant Ulong:=16#0000#;
  373.  MB_DEFBUTTON2           :constant Ulong:=16#0100#;
  374.  MB_DEFBUTTON3           :constant Ulong:=16#0200#;
  375.  MB_APPLMODAL            :constant Ulong:=16#0000#;
  376.  MB_SYSTEMMODAL          :constant Ulong:=16#1000#;
  377.  MB_HELP                 :constant Ulong:=16#2000#;
  378.  MB_MOVEABLE             :constant Ulong:=16#4000#;
  379.  
  380. --      Message box return codes
  381.  
  382.  MBID_OK                 :constant Ulong:=      1;
  383.  MBID_CANCEL             :constant Ulong:=      2;
  384.  MBID_ABORT              :constant Ulong:=      3;
  385.  MBID_RETRY              :constant Ulong:=      4;
  386.  MBID_IGNORE             :constant Ulong:=      5;
  387.  MBID_YES                :constant Ulong:=      6;
  388.  MBID_NO                 :constant Ulong:=      7;
  389.  MBID_HELP               :constant Ulong:=      8;
  390.  MBID_ENTER              :constant Ulong:=      9;
  391.  MBID_ERROR              :constant Ulong:=16#ffff#;
  392.  
  393. --     -- Useful macros
  394.  
  395. --       ULONG/USHORT WinCheckButton(:HWND hwn Dlg;:USHORT id;:USHORT checkState)
  396. --          sets the check state of button #id.
  397. --          returns the previous check state.
  398. --
  399. --     #define WinCheckButton( hwn Dlg; id; usCheckState) \
  400. --     ( (:ULONG)WinSendDlgItemMsg( hwn Dlg; id; BM_SETCHECK; \
  401. --     MPFROMSHORT( usCheckState)return ( MPARAM)NULL))
  402. --
  403. --     --*************************************************************************--
  404. --       ULONG/USHORT WinQueryButtonCheckstate(:HWND hwn Dlg;:USHORT id)
  405. --          returns the check state of buttin #id.
  406. --
  407. --     *************************************************************************--
  408. --     #define WinQueryButtonCheckstate( hwn Dlg; id) \
  409. --     ( (:ULONG)WinSendDlgItemMsg( hwn Dlg; id; BM_QUERYCHECK; \
  410. --     ( MPARAM)NULL; ( MPARAM)NULL))
  411. --
  412. --     --*************************************************************************--
  413. --     --BOOL32 WinEnableControl(:HWND hwn Dlg;:USHORT id; BOOL32 fEnable)
  414. --     --   sets the enable state of button #id.
  415. --     --   returns fSuccess.
  416. --     *************************************************************************--
  417. --     #define WinEnableControl( hwn Dlg; id; fEnable) \
  418. --     WinEnableWindow( WinWindowFromID( hwn Dlg; id)return fEnable)
  419. --
  420. --     --*************************************************************************--
  421. --     --BOOL32 WinIsControlEnabled(:HWND hwn Dlg;:ULONG id)
  422. --     --   returns the enable state of control #id.
  423. --     --
  424. --     *************************************************************************--
  425. --     #define WinIsControlEnabled( hwn Dlg; id) \
  426. --     ( ( BOOL)WinIsWindowEnabled( WinWindowFromID( hwn Dlg; id)))
  427. --
  428.  
  429. --
  430. --        Dialog codes: returned by WM_QUERYDLGCODE msg
  431. --
  432.  DLGC_ENTRYFIELD :constant Ulong:=16#0001#;  -- Entry field item understands EM_SETSEL)
  433.  DLGC_BUTTON     :constant Ulong:=16#0002#;  -- Button item
  434.  DLGC_RADIOBUTTON:constant Ulong:=16#0004#;  -- Radio button
  435.  DLGC_STATIC     :constant Ulong:=16#0008#;  -- Static item
  436.  DLGC_DEFAULT    :constant Ulong:=16#0010#;  -- Default push button
  437.  DLGC_PUSHBUTTON :constant Ulong:=16#0020#;  -- Normal ( Non-default) push button
  438.  DLGC_CHECKBOX   :constant Ulong:=16#0040#;  -- Check box button control
  439.  DLGC_SCROLLBAR  :constant Ulong:=16#0080#;  -- Scroll bar
  440.  DLGC_MENU       :constant Ulong:=16#0100#;  -- Menu
  441.  DLGC_TABONCLICK :constant Ulong:=16#0200#;
  442.  DLGC_MLE        :constant Ulong:=16#0400#;  -- Multiple Line Entry
  443.  
  444. function WinProcessDlg(hwndDlg:HWND )return ULONG ;
  445. pragma Import(c,WinProcessDlg, Link_name=>"_WinProcessDlg");
  446.  
  447. procedure  WinSendDlgItemMsg(hwndDlg:HWND   ;
  448.                              idItem :ULONG  ;
  449.                              msg    :ULONG  ;
  450.                              mp1    :MPARAM ;
  451.                              mp2    :Pmenuitem);
  452. pragma Import(c,WinSendDlgItemMsg, Link_name=>"_WinSendDlgItemMsg");
  453.  
  454. function WinMapDlgPoints(hwndDlg          :HWND    ;
  455.                          prgwptl          :PPOINTL ;
  456.                          cwpt             :ULONG   ;
  457.                          fCalcWindowCoords:BOOL32  )return BOOL32   ;
  458. pragma Import(c,WinMapDlgPoints, Link_name=>"_WinMapDlgPoints");
  459.  
  460. function WinEnumDlgItem(hwndDlg:HWND  ;
  461.                         hwn    :HWND  ;
  462.                         code   :ULONG )return HWND   ;
  463. pragma Import(c,WinEnumDlgItem, Link_name=>"_WinEnumDlgItem");
  464.  
  465. function WinSubstituteStrings(hwn      :HWND ;
  466.                               pszSrc   :PSZ  ;
  467.                               cchDstMax:LONG ;
  468.                               pszDst   :PSZ  )return LONG  ;
  469. pragma Import(c,WinSubstituteStrings, Link_name=>"_WinSubstituteStrings");
  470.  
  471. --      WinEnumDlgItem( ) constants
  472.  
  473.  EDI_FIRSTTABITEM       :constant Ulong:= 0 ;
  474.  EDI_LASTTABITEM        :constant Ulong:= 1 ;
  475.  EDI_NEXTTABITEM        :constant Ulong:= 2 ;
  476.  EDI_PREVTABITEM        :constant Ulong:= 3 ;
  477.  EDI_FIRSTGROUPITEM     :constant Ulong:= 4 ;
  478.  EDI_LASTGROUPITEM      :constant Ulong:= 5 ;
  479.  EDI_NEXTGROUPITEM      :constant Ulong:= 6 ;
  480.  EDI_PREVGROUPITEM      :constant Ulong:= 7 ;
  481.  
  482.  
  483. --          Variable-sized dialog template items:
  484.  
  485. --  ***********************************************************************--
  486.  
  487. --   We pack the structures _DLGTITEM and _DLGTEMPLATE so that the
  488. --   structures are identical in the 32-bit and 16-bit worlds. We have
  489. --   to do this because is has been documented that one can pass a
  490. --   pointer to 'the binary resource format' when calling WinCreateDlg.
  491. --
  492. --
  493. --   Binary resources may be bound into application executables or
  494. --   passed as a parameter when creating a window or dialog
  495. --   Currently they must be the same for both 16-bit and 32-bit
  496. --   so we pack the structures.
  497. --  ***********************************************************************--
  498.  
  499. type DLGTITEM   is record   -- dlgti
  500.     fsItemStatus      :USHORT  ;
  501.     cChildren         :USHORT  ;
  502.     cchClassName      :USHORT  ;
  503.     offClassName      :USHORT  ;
  504.     cchText           :USHORT  ;
  505.     offText           :USHORT  ;
  506.     flStyle           :ULONG   ;
  507.     x                 :SHORT   ;
  508.     y                 :SHORT   ;
  509.     cx                :SHORT   ;
  510.     cy                :SHORT   ;
  511.     id                :USHORT  ;
  512.     offPresParams     :USHORT  ;
  513.     offCtlData        :USHORT  ;
  514. end record; -- DLGTITEM;
  515. type PDLGTITEM  is access all DLGTITEM;
  516.  
  517. --       Dialog Template structure
  518. --
  519. --   Binary resources may be bound into application executables or
  520. --   passed as a parameter when creating a window or dialog
  521. --   Currently they must be the same for both 16-bit and 32-bit
  522. --   so we pack the structures.
  523.  
  524. type DLGTEMPLATE  is record    -- dlgt
  525.     cbTemplate         :USHORT   ;
  526.     typ                :USHORT   ;
  527.     codepage           :USHORT   ;
  528.     offadlgti          :USHORT   ;
  529.     fsTemplateStatus   :USHORT   ;
  530.     iItemFocus         :USHORT   ;
  531.     coffPresParams     :USHORT   ;
  532.     adlgti             :DLGTITEM ;                  --  [1];
  533. end record; -- DLGTEMPLATE;
  534. type PDLGTEMPLATE  is access all DLGTEMPLATE;
  535.  
  536. function WinCreateDlg(hwndParent   :HWND         ;
  537.                       hwndOwner    :HWND         ;
  538.                       pfnDlgProc   :PFNWP        ;
  539.                       pdlgt        :PDLGTEMPLATE ;
  540.                       pCreateParams:PVOID        )return HWND  ;
  541. pragma Import(c,WinCreateDlg, Link_name=>"_WinCreateDlg");
  542.  
  543. end os2.PMwd;
  544.