home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SOURCE.DAT / SOURCE / RTL / PMWIN.PAS < prev    next >
Pascal/Delphi Source File  |  1998-01-24  |  134KB  |  3,620 lines

  1. UNIT PMWIN;
  2.  
  3. {****************************** Module Header ******************************
  4. *                                                                          *
  5. * Module Name: 'PMWIN'.PAS                                                   *
  6. *                                                                          *
  7. * OS/2 Presentation Manager Window Manager unit file.                      *
  8. *                                                                          *
  9. ****************************************************************************}
  10.  
  11. INTERFACE
  12.  
  13. USES Os2Def;
  14.  
  15. {Note: An ARRAY [0..x] OF CHAR is equal to a CSTRING[x] !
  16.        CString and PSZ are null terminated strings
  17.        PSZ is changed to PChar (^CString) in records and in
  18.        WinRegisterclass to recognize WC_XXXX values}
  19.  
  20.  
  21. CONST
  22.      { size for fields in the font structures }
  23.      FACESIZE                    =32;
  24.  
  25. TYPE
  26.      FATTRS=RECORD
  27.                   usRecordLength:USHORT;
  28.                   fsSelection:USHORT;
  29.                   lMatch:LONGINT;
  30.                   szFacename:CSTRING[FACESIZE-1];
  31.                   idRegistry:USHORT;
  32.                   usCodePage:USHORT;
  33.                   lMaxBaselineExt:LONGINT;
  34.                   lAveCharWidth:LONG;
  35.                   fsType:USHORT;
  36.                   fsFontUse:USHORT;
  37.            END;
  38.  
  39. TYPE
  40.      PANOSE=RECORD
  41.                   bFamilyType:BYTE;
  42.                   bSerifStyle:BYTE;
  43.                   bWeight:BYTE;
  44.                   bProportion:BYTE;
  45.                   bContrast:BYTE;
  46.                   bStrokeVariation:BYTE;
  47.                   bArmStyle:BYTE;
  48.                   bLetterform:BYTE;
  49.                   bMidline:BYTE;
  50.                   bXHeight:BYTE;
  51.                   fbPassedISO:BYTE;
  52.                   fbFailedISO:BYTE;
  53.             END;
  54.  
  55.      PFONTMETRICS=^FONTMETRICS;
  56.      FONTMETRICS=RECORD
  57.                       szFamilyname:CSTRING[FACESIZE-1];
  58.                       szFacename:CSTRING[FACESIZE-1];
  59.                       idRegistry:USHORT;
  60.                       usCodePage:USHORT;
  61.                       lEmHeight:LONG;
  62.                       lXHeight:LONG;
  63.                       lMaxAscender:LONG;
  64.                       lMaxDescender:LONG;
  65.                       lLowerCaseAscent:LONG;
  66.                       lLowerCaseDescent:LONG;
  67.                       lInternalLeading:LONG;
  68.                       lExternalLeading:LONG;
  69.                       lAveCharWidth:LONG;
  70.                       lMaxCharInc:LONG;
  71.                       lEmInc:LONG;
  72.                       lMaxBaselineExt:LONG;
  73.                       sCharSlope:SHORT;
  74.                       sInlineDir:SHORT;
  75.                       sCharRot:SHORT;
  76.                       usWeightClass:USHORT;
  77.                       usWidthClass:USHORT;
  78.                       sXDeviceRes:SHORT;
  79.                       sYDeviceRes:SHORT;
  80.                       sFirstChar:SHORT;
  81.                       sLastChar:SHORT;
  82.                       sDefaultChar:SHORT;
  83.                       sBreakChar:SHORT;
  84.                       sNominalPointSize:SHORT;
  85.                       sMinimumPointSize:SHORT;
  86.                       sMaximumPointSize:SHORT;
  87.                       fsType:USHORT;
  88.                       fsDefn:USHORT;
  89.                       fsSelection:USHORT;
  90.                       fsCapabilities:USHORT;
  91.                       lSubscriptXSize:LONG;
  92.                       lSubscriptYSize:LONG;
  93.                       lSubscriptXOffset:LONG;
  94.                       lSubscriptYOffset:LONG;
  95.                       lSuperscriptXSize:LONG;
  96.                       lSuperscriptYSize:LONG;
  97.                       lSuperscriptXOffset:LONG;
  98.                       lSuperscriptYOffset:LONG;
  99.                       lUnderscoreSize:LONG;
  100.                       lUnderscorePosition:LONG;
  101.                       lStrikeoutSize:LONG;
  102.                       lStrikeoutPosition:LONG;
  103.                       sKerningPairs:SHORT;
  104.                       sFamilyClass:SHORT;
  105.                       lMatch:LONG;
  106.                       FamilyNameAtom:LONG;
  107.                       FaceNameAtom:LONG;
  108.                       _panose:PANOSE;
  109.                  END;
  110.  
  111.  
  112. {***************************************************************************
  113.  General Window Management types, constants and macros
  114.  ***************************************************************************}
  115.  
  116. CONST
  117.      { Standard Window Messages }
  118.      WM_NULL                  =$0000;
  119.      WM_CREATE                =$0001;
  120.      WM_DESTROY               =$0002;
  121.      WM_ENABLE                =$0004;
  122.      WM_SHOW                  =$0005;
  123.      WM_MOVE                  =$0006;
  124.      WM_SIZE                  =$0007;
  125.      WM_ADJUSTWINDOWPOS       =$0008;
  126.      WM_CALCVALIDRECTS        =$0009;
  127.      WM_SETWINDOWPARAMS       =$000a;
  128.      WM_QUERYWINDOWPARAMS     =$000b;
  129.      WM_HITTEST               =$000c;
  130.      WM_ACTIVATE              =$000d;
  131.      WM_SETFOCUS              =$000f;
  132.      WM_SETSELECTION          =$0010;
  133.      WM_PPAINT                =$0011;
  134.      WM_PSETFOCUS             =$0012;
  135.      WM_PSYSCOLORCHANGE       =$0013;
  136.      WM_PSIZE                 =$0014;
  137.      WM_PACTIVATE             =$0015;
  138.      WM_PCONTROL              =$0016;
  139.      WM_COMMAND               =$0020;
  140.      WM_SYSCOMMAND            =$0021;
  141.      WM_HELP                  =$0022;
  142.      WM_PAINT                 =$0023;
  143.      WM_TIMER                 =$0024;
  144.      WM_SEM1                  =$0025;
  145.      WM_SEM2                  =$0026;
  146.      WM_SEM3                  =$0027;
  147.      WM_SEM4                  =$0028;
  148.      WM_CLOSE                 =$0029;
  149.      WM_QUIT                  =$002a;
  150.      WM_SYSCOLORCHANGE        =$002b;
  151.      WM_SYSVALUECHANGED       =$002d;
  152.      WM_APPTERMINATENOTIFY    =$002e;
  153.      WM_PRESPARAMCHANGED      =$002f;
  154.  
  155.      { Control notification messages }
  156.      WM_CONTROL               =$0030;
  157.      WM_VSCROLL               =$0031;
  158.      WM_HSCROLL               =$0032;
  159.      WM_INITMENU              =$0033;
  160.      WM_MENUSELECT            =$0034;
  161.      WM_MENUEND               =$0035;
  162.      WM_DRAWITEM              =$0036;
  163.      WM_MEASUREITEM           =$0037;
  164.      WM_CONTROLPOINTER        =$0038;
  165.      WM_QUERYDLGCODE          =$003a;
  166.      WM_INITDLG               =$003b;
  167.      WM_SUBSTITUTESTRING      =$003c;
  168.      WM_MATCHMNEMONIC         =$003d;
  169.      WM_SAVEAPPLICATION       =$003e;
  170.  
  171.      { Frame window related messages }
  172.  
  173.      WM_FLASHWINDOW           =$0040;
  174.      WM_FORMATFRAME           =$0041;
  175.      WM_UPDATEFRAME           =$0042;
  176.      WM_FOCUSCHANGE           =$0043;
  177.  
  178.      WM_SETBORDERSIZE         =$0044;
  179.      WM_TRACKFRAME            =$0045;
  180.      WM_MINMAXFRAME           =$0046;
  181.      WM_SETICON               =$0047;
  182.      WM_QUERYICON             =$0048;
  183.      WM_SETACCELTABLE         =$0049;
  184.      WM_QUERYACCELTABLE       =$004a;
  185.      WM_TRANSLATEACCEL        =$004b;
  186.      WM_QUERYTRACKINFO        =$004c;
  187.      WM_QUERYBORDERSIZE       =$004d;
  188.      WM_NEXTMENU              =$004e;
  189.      WM_ERASEBACKGROUND       =$004f;
  190.      WM_QUERYFRAMEINFO        =$0050;
  191.      WM_QUERYFOCUSCHAIN       =$0051;
  192.      WM_OWNERPOSCHANGE        =$0052;
  193.      WM_CALCFRAMERECT         =$0053;
  194.      WM_WINDOWPOSCHANGED      =$0055;
  195.      WM_ADJUSTFRAMEPOS        =$0056;
  196.      WM_QUERYFRAMECTLCOUNT    =$0059;
  197.      WM_QUERYHELPINFO         =$005B;
  198.      WM_SETHELPINFO           =$005C;
  199.      WM_ERROR                 =$005D;
  200.      WM_REALIZEPALETTE        =$005E;
  201.  
  202.      { Key/Character input messages }
  203.      WM_CHAR                  =$007a;
  204.      WM_VIOCHAR               =$007b;
  205.  
  206.      { Mouse input messages }
  207.      WM_MOUSEFIRST            =$0070;
  208.      WM_MOUSELAST             =$0079;
  209.      WM_BUTTONCLICKFIRST      =$0071;
  210.      WM_BUTTONCLICKLAST       =$0079;
  211.      WM_MOUSEMOVE             =$0070;
  212.      WM_BUTTON1DOWN           =$0071;
  213.      WM_BUTTON1UP             =$0072;
  214.      WM_BUTTON1DBLCLK         =$0073;
  215.      WM_BUTTON2DOWN           =$0074;
  216.      WM_BUTTON2UP             =$0075;
  217.      WM_BUTTON2DBLCLK         =$0076;
  218.      WM_BUTTON3DOWN           =$0077;
  219.      WM_BUTTON3UP             =$0078;
  220.      WM_BUTTON3DBLCLK         =$0079;
  221.      WM_MOUSEMAP              =$007D;
  222.      WM_EXTMOUSEFIRST         =$0410;
  223.      WM_EXTMOUSELAST          =$0419;
  224.      WM_CHORD                 =$0410;
  225.      WM_BUTTON1MOTIONSTART    =$0411;
  226.      WM_BUTTON1MOTIONEND      =$0412;
  227.      WM_BUTTON1CLICK          =$0413;
  228.      WM_BUTTON2MOTIONSTART    =$0414;
  229.      WM_BUTTON2MOTIONEND      =$0415;
  230.      WM_BUTTON2CLICK          =$0416;
  231.      WM_BUTTON3MOTIONSTART    =$0417;
  232.      WM_BUTTON3MOTIONEND      =$0418;
  233.      WM_BUTTON3CLICK          =$0419;
  234.      WM_MOUSETRANSLATEFIRST   =$0420;
  235.      WM_MOUSETRANSLATELAST    =$0428;
  236.      WM_BEGINDRAG             =$0420;
  237.      WM_ENDDRAG               =$0421;
  238.      WM_SINGLESELECT          =$0422;
  239.      WM_OPEN                  =$0423;
  240.      WM_CONTEXTMENU           =$0424;
  241.      WM_CONTEXTHELP           =$0425;
  242.      WM_TEXTEDIT              =$0426;
  243.      WM_BEGINSELECT           =$0427;
  244.      WM_ENDSELECT             =$0428;
  245.      WM_PENFIRST              =$04C0;
  246.      WM_PENLAST               =$04FF;
  247.      WM_MMPMFIRST             =$0500;
  248.      WM_MMPMLAST              =$05FF;
  249.  
  250.      WM_HELPBASE              =$0F00;  {Start of msgs for help manager}
  251.      WM_HELPTOP               =$0FFF;  { End of msgs for help manager }
  252.  
  253.      WM_USER                  =$1000;
  254.  
  255.      WM_MOUSEDRAG1            =$1001;  {own defined}
  256.      WM_MOUSEDRAG2            =$1002;  {own defined}
  257.  
  258.      WM_SPEED_USER            =$1003;  {use this entry when working with OPML !}
  259.  
  260.      WM_VRNDISABLED           =$007E;
  261.      WM_VRNENABLED            =$007F;
  262.  
  263. { Predefined window handles }
  264. CONST
  265.      HWND_DESKTOP           =1;
  266.      HWND_OBJECT            =2;
  267.      HWND_TOP               =3;
  268.      HWND_BOTTOM            =4;
  269.      HWND_THREADCAPTURE     =5;
  270.  
  271. { Standard Window Styles }
  272. CONST
  273.      WS_VISIBLE             =$80000000;
  274.      WS_DISABLED            =$40000000;
  275.      WS_CLIPCHILDREN        =$20000000;
  276.      WS_CLIPSIBLINGS        =$10000000;
  277.      WS_PARENTCLIP          =$08000000;
  278.      WS_SAVEBITS            =$04000000;
  279.      WS_SYNCPAINT           =$02000000;
  280.      WS_MINIMIZED           =$01000000;
  281.      WS_MAXIMIZED           =$00800000;
  282.      WS_ANIMATE             =$00400000;
  283.  
  284. { Dialog manager styles }
  285. CONST
  286.      WS_GROUP               =$00010000;
  287.      WS_TABSTOP             =$00020000;
  288.      WS_MULTISELECT         =$00040000;
  289.  
  290. { Class styles }
  291. CONST
  292.      CS_MOVENOTIFY          =$00000001;
  293.      CS_SIZEREDRAW          =$00000004;
  294.      CS_HITTEST             =$00000008;
  295.      CS_PUBLIC              =$00000010;
  296.      CS_FRAME               =$00000020;
  297.      CS_CLIPCHILDREN        =$20000000;
  298.      CS_CLIPSIBLINGS        =$10000000;
  299.      CS_PARENTCLIP          =$08000000;
  300.      CS_SAVEBITS            =$04000000;
  301.      CS_SYNCPAINT           =$02000000;
  302.  
  303. CONST
  304.      PSF_LOCKWINDOWUPDATE       =$0001;
  305.      PSF_CLIPUPWARDS            =$0002;
  306.      PSF_CLIPDOWNWARDS          =$0004;
  307.      PSF_CLIPSIBLINGS           =$0008;
  308.      PSF_CLIPCHILDREN           =$0010;
  309.      PSF_PARENTCLIP             =$0020;
  310.  
  311. { WinScrollWindow() flags }
  312. CONST
  313.      SW_SCROLLCHILDREN          =$0001;
  314.      SW_INVALIDATERGN           =$0002;
  315.  
  316. { WinInitialize/WinTerminate Interface declarations }
  317.  
  318. TYPE
  319.    PQVERSDATA=^QVERSDATA;
  320.    QVERSDATA=RECORD
  321.                   environment:USHORT;
  322.                   version:USHORT;
  323.              END;
  324.  
  325. CONST
  326.    QV_OS2                     =$0000;
  327.    QV_CMS                     =$0001;
  328.    QV_TSO                     =$0002;
  329.    QV_TSOBATCH                =$0003;
  330.    QV_OS400                   =$0004;
  331.  
  332. /*** Class info structure returned by WinEnumObjectClasses ***********/
  333. TYPE
  334.     POBJCLASS=^OBJCLASS;
  335.     OBJCLASS=RECORD
  336.               pNext:POBJCLASS;         /* Null for the last structure.. */
  337.               pszClassName:PCHAR;      /* Class name                    */
  338.               pszModName:PCHAR;        /* Module name                   */
  339.              END;
  340.  
  341. { WinQueryWindow() codes }
  342. CONST
  343.      QW_NEXT         =0;
  344.      QW_PREV         =1;
  345.      QW_TOP          =2;
  346.      QW_BOTTOM       =3;
  347.      QW_OWNER        =4;
  348.      QW_PARENT       =5;
  349.      QW_NEXTTOP      =6;
  350.      QW_PREVTOP      =7;
  351.      QW_FRAMEOWNER   =8;
  352.  
  353. { Values returned from WM_ADJUSTWINDOWPOS and passed to WM_WINDOWPOSCHANGED }
  354.  
  355. CONST
  356.      AWP_MINIMIZED              =$00010000;
  357.      AWP_MAXIMIZED              =$00020000;
  358.      AWP_RESTORED               =$00040000;
  359.      AWP_ACTIVATE               =$00080000;
  360.      AWP_DEACTIVATE             =$00100000;
  361.  
  362. { WinSetWindowPos() flags }
  363.  
  364.      SWP_SIZE                   =$0001;
  365.      SWP_MOVE                   =$0002;
  366.      SWP_ZORDER                 =$0004;
  367.      SWP_SHOW                   =$0008;
  368.      SWP_HIDE                   =$0010;
  369.      SWP_NOREDRAW               =$0020;
  370.      SWP_NOADJUST               =$0040;
  371.      SWP_ACTIVATE               =$0080;
  372.      SWP_DEACTIVATE             =$0100;
  373.      SWP_EXTSTATECHANGE         =$0200;
  374.      SWP_MINIMIZE               =$0400;
  375.      SWP_MAXIMIZE               =$0800;
  376.      SWP_RESTORE                =$1000;
  377.      SWP_FOCUSACTIVATE          =$2000;
  378.      SWP_FOCUSDEACTIVATE        =$4000;
  379.      SWP_NOAUTOCLOSE            =$8000; { Valid in PROGDETAILS struct only }
  380.  
  381.  
  382. { WinDrawBitmap() flags }
  383.  
  384. CONST
  385.      DBM_NORMAL                 =$0000;
  386.      DBM_INVERT                 =$0001;
  387.      DBM_HALFTONE               =$0002;
  388.      DBM_STRETCH                =$0004;
  389.      DBM_IMAGEATTRS             =$0008;
  390.  
  391.  
  392.  
  393. {*
  394. * WinDrawText() codes:
  395. * From DT_LEFT to DT_EXTERNALLEADING, the codes are designed to be OR'ed with
  396. * SS_TEXT to create variations of the basic text static item.
  397. *}
  398.  
  399. CONST
  400.      DT_LEFT                    =$0000;
  401.      DT_QUERYEXTENT             =$0002;
  402.      DT_UNDERSCORE              =$0010;
  403.      DT_STRIKEOUT               =$0020;
  404.      DT_TEXTATTRS               =$0040;
  405.      DT_EXTERNALLEADING         =$0080;
  406.      DT_CENTER                  =$0100;
  407.      DT_RIGHT                   =$0200;
  408.      DT_TOP                     =$0000;
  409.      DT_VCENTER                 =$0400;
  410.      DT_BOTTOM                  =$0800;
  411.      DT_HALFTONE                =$1000;
  412.      DT_MNEMONIC                =$2000;
  413.      DT_WORDBREAK               =$4000;
  414.      DT_ERASERECT               =$8000;
  415.  
  416. { WinDrawBorder() flags }
  417.  
  418. CONST
  419.      DB_PATCOPY                 =$0000;
  420.      DB_PATINVERT               =$0001;
  421.      DB_DESTINVERT              =$0002;
  422.      DB_AREAMIXMODE             =$0003;
  423.  
  424.      DB_ROP                     =$0007;
  425.      DB_INTERIOR                =$0008;
  426.      DB_AREAATTRS               =$0010;
  427.      DB_STANDARD                =$0100;
  428.      DB_DLGBORDER               =$0200;
  429.      DB_RAISED                  =$0400;
  430.      DB_DEPRESSED               =$0800;
  431.  
  432. TYPE
  433.     HOBJECT=LONGWORD;
  434.  
  435. { WM_CREATE structure }
  436. TYPE
  437.     PCREATESTRUCT=^CREATESTRUCT;
  438.     CREATESTRUCT=RECORD
  439.                      pPresParams:PVOID;
  440.                      pCtlData:PVOID;
  441.                      id:ULONG;
  442.                      hwndInsertBehind:HWND;
  443.                      hwndOwner:HWND;
  444.                      cy:LONG;
  445.                      cx:LONG;
  446.                      y:LONG;
  447.                      x:LONG;
  448.                      flStyle:ULONG;
  449.                      pszText:PChar;
  450.                      pszClass:PChar;
  451.                      hwndParent:HWND;
  452.                 END;
  453.  
  454.    { WinQueryClassInfo() structure }
  455.  
  456. TYPE
  457.     PCLASSINFO=^CLASSINFO;
  458.     CLASSINFO=RECORD
  459.                    flClassStyle:ULONG;
  460.                    pfnWindowProc:POINTER;
  461.                    cbWindowData:ULONG;
  462.               END;
  463.  
  464. { Standard WinQueryWindowUSHORT/ULONG() indices }
  465. CONST
  466.      QWS_USER                   =0;
  467.      QWS_ID                     =-1;
  468.      QWS_MIN                    =-1;
  469.  
  470.      QWL_USER                   =0;
  471.      QWL_STYLE                  =-2;
  472.      QWP_PFNWP                  =-3;
  473.      QWL_HMQ                    =-4;
  474.      QWL_RESERVED               =-5;
  475.  
  476.      QWL_PENDATA                =-7;
  477.      QWL_MIN                    =-7;
  478.  
  479. { WC_FRAME WinQueryWindowUSHORT/ULONG() indices }
  480.  
  481. CONST
  482.      QWL_HHEAP                  =$0004;
  483.      QWL_HWNDFOCUSSAVE          =$0018;
  484.      QWL_DEFBUTTON              =$0040;
  485.      QWL_PSSCBLK                =$0048;
  486.      QWL_PFEPBLK                =$004c;
  487.      QWL_PSTATBLK               =$0050;
  488.  
  489.      QWS_FLAGS                  =$0008;
  490.      QWS_RESULT                 =$000a;
  491.      QWS_XRESTORE               =$000c;
  492.      QWS_YRESTORE               =$000e;
  493.      QWS_CXRESTORE              =$0010;
  494.      QWS_CYRESTORE              =$0012;
  495.      QWS_XMINIMIZE              =$0014;
  496.      QWS_YMINIMIZE              =$0016;
  497.  
  498.  
  499. { Window enumeration }
  500.  
  501. TYPE
  502.     HENUM=LHANDLE;
  503.  
  504. { WM_COMMAND msg source codes }
  505.  
  506. CONST
  507.      CMDSRC_PUSHBUTTON      =1;
  508.      CMDSRC_MENU            =2;
  509.      CMDSRC_ACCELERATOR     =3;
  510.      CMDSRC_FONTDLG         =4;
  511.      CMDSRC_FILEDLG         =5;
  512.      CMDSRC_PRINTDLG        =6;
  513.      CMDSRC_COLORDLG        =7;
  514.      CMDSRC_OTHER           =0;
  515.  
  516. TYPE
  517.     PCMDMSG=^CMDMSG;  {#pragma Pack 1}
  518.     CMDMSG=RECORD
  519.                  cmd:USHORT;
  520.                  unused:USHORT;
  521.                  source:USHORT;
  522.                  fMouse:USHORT;
  523.            END;
  524.  
  525.     PCHRMSG=^CHRMSG;  {#pragma Pack 1}
  526.     CHRMSG=RECORD
  527.                  fs:WORD;
  528.                  cRepeat:BYTE;
  529.                  ScanCode:BYTE;
  530.                  chr:WORD;
  531.                  vkey:WORD;
  532.            END;
  533.  
  534.     PMSEMSG=^MSEMSG;  {#pragma Pack 1}
  535.     MSEMSG=RECORD
  536.                  x,y:INTEGER;
  537.                  codeHitTest:WORD;
  538.                  fsInp:WORD;
  539.            END;
  540.  
  541.  
  542.     PMQINFO=^MQINFO;
  543.     MQINFO=RECORD
  544.                  cb:ULONG;
  545.                  pid:PID;
  546.                  tid:TID;
  547.                  cmsgs:ULONG;
  548.                  pReserved:POINTER;
  549.            END;
  550.  
  551. { WinPeekMsg() constants }
  552.  
  553. CONST
  554.      PM_REMOVE                 =$0001;
  555.      PM_NOREMOVE               =$0000;
  556.  
  557. { WinRegisterUserMsg direction codes }
  558.  
  559. CONST
  560.      RUM_IN                    =1;
  561.      RUM_OUT                   =2;
  562.      RUM_INOUT                 =3;
  563.  
  564. { WinSetMsgMode constants }
  565.  
  566. CONST
  567.      SMD_DELAYED               =$0001;
  568.      SMD_IMMEDIATE             =$0002;
  569.  
  570. { WinSetSynchroMode constants }
  571.  
  572. CONST
  573.      SSM_SYNCHRONOUS           =$0001;
  574.      SSM_ASYNCHRONOUS          =$0002;
  575.      SSM_MIXED                 =$0003;
  576.  
  577.  
  578. { WM_CALCVALIDRECTS return flags }
  579.  
  580. CONST
  581.      CVR_ALIGNLEFT             =$0001;
  582.      CVR_ALIGNBOTTOM           =$0002;
  583.      CVR_ALIGNRIGHT            =$0004;
  584.      CVR_ALIGNTOP              =$0008;
  585.      CVR_REDRAW                =$0010;
  586.  
  587. { WM_HITTEST return codes }
  588.  
  589. CONST
  590.      HT_NORMAL                 =0;
  591.      HT_TRANSPARENT            =-1;
  592.      HT_DISCARD                =-2;
  593.      HT_ERROR                  =-3;
  594.  
  595. { WM_SET/QUERYWINDOWPARAMS structures and flags }
  596.  
  597. TYPE
  598.     PWNDPARAMS=^WNDPARAMS;
  599.     WNDPARAMS=RECORD
  600.                    fsStatus:ULONG;
  601.                    cchText:ULONG;
  602.                    pszText:PChar;
  603.                    cbPresParams:ULONG;
  604.                    pPresParams:POINTER;
  605.                    cbCtlData:ULONG;
  606.                    pCtlData:POINTER;
  607.               END;
  608.  
  609. CONST
  610.      WPM_TEXT                   =$0001;
  611.      WPM_CTLDATA                =$0002;
  612.      WPM_PRESPARAMS             =$0004;
  613.      WPM_CCHTEXT                =$0008;
  614.      WPM_CBCTLDATA              =$0010;
  615.      WPM_CBPRESPARAMS           =$0020;
  616.  
  617.  
  618. { WinBroadcastMsg codes }
  619. CONST
  620.      BMSG_POST                  =$0000;
  621.      BMSG_SEND                  =$0001;
  622.      BMSG_POSTQUEUE             =$0002;
  623.      BMSG_DESCENDANTS           =$0004;
  624.      BMSG_FRAMEONLY             =$0008;
  625.  
  626.  
  627. { WinQueryQueueStatus() constants }
  628. CONST
  629.       QS_KEY                     =$0001;
  630.       QS_MOUSEBUTTON             =$0002;
  631.       QS_MOUSEMOVE               =$0004;
  632.       QS_MOUSE                   =$0006;   { QS_MOUSEMOVE|QS_MOUSEBUTTON }
  633.       QS_TIMER                   =$0008;
  634.       QS_PAINT                   =$0010;
  635.       QS_POSTMSG                 =$0020;
  636.       QS_SEM1                    =$0040;
  637.       QS_SEM2                    =$0080;
  638.       QS_SEM3                    =$0100;
  639.       QS_SEM4                    =$0200;
  640.       QS_SENDMSG                 =$0400;
  641.       QS_MSGINPUT                =$0800;
  642.  
  643.  
  644.  
  645. TYPE
  646.     HEV=ULONG;
  647.     HMTX=ULONG;
  648.     HMUX=ULONG;
  649.  
  650. { WinSetMsgInterest()/WinSetClassMsgInterest() constants }
  651. CONST
  652.      SMIM_ALL                   =$0EFF;
  653.      SMI_NOINTEREST             =$0001;
  654.      SMI_INTEREST               =$0002;
  655.      SMI_RESET                  =$0004;
  656.      SMI_AUTODISPATCH           =$0008;
  657.  
  658. CONST
  659.      FC_NOSETFOCUS              =$0001;
  660.      FC_NOBRINGTOTOP            =FC_NOSETFOCUS;
  661.      FC_NOLOSEFOCUS             =$0002;
  662.      FC_NOBRINGTOPFIRSTWINDOW   =FC_NOLOSEFOCUS;
  663.      FC_NOSETACTIVE             =$0004;
  664.      FC_NOLOSEACTIVE            =$0008;
  665.      FC_NOSETSELECTION          =$0010;
  666.      FC_NOLOSESELECTION         =$0020;
  667.  
  668.      QFC_NEXTINCHAIN            =$0001;
  669.      QFC_ACTIVE                 =$0002;
  670.      QFC_FRAME                  =$0003;
  671.      QFC_SELECTACTIVE           =$0004;
  672.      QFC_PARTOFCHAIN            =$0005;
  673.  
  674. { WM_CHAR fs field bits }
  675. CONST
  676.      KC_NONE                 =$0000;     { Reserved }
  677.      KC_CHAR                 =$0001;
  678.      KC_VIRTUALKEY           =$0002;
  679.      KC_SCANCODE             =$0004;
  680.  
  681.      KC_SHIFT                =$0008;
  682.      KC_CTRL                 =$0010;
  683.      KC_ALT                  =$0020;
  684.      KC_KEYUP                =$0040;
  685.      KC_PREVDOWN             =$0080;
  686.      KC_LONEKEY              =$0100;
  687.      KC_DEADKEY              =$0200;
  688.      KC_COMPOSITE            =$0400;
  689.      KC_INVALIDCOMP          =$0800;
  690.  
  691.      KC_TOGGLE               =$1000;
  692.      KC_INVALIDCHAR          =$2000;
  693.      KC_DBCSRSRVD1           =$4000;
  694.      KC_DBCSRSRVD2           =$8000;
  695.  
  696. CONST
  697.      INP_NONE                  =$0000;
  698.      INP_KBD                   =$0001;
  699.      INP_MULT                  =$0002;
  700.      INP_RES2                  =$0004;
  701.      INP_SHIFT                 =$0008;
  702.      INP_CTRL                  =$0010;
  703.      INP_ALT                   =$0020;
  704.      INP_RES3                  =$0040;
  705.      INP_RES4                  =$0080;
  706.      INP_IGNORE                =$FFFF;
  707.  
  708. { Virtual key values }
  709. CONST
  710.      VK_BUTTON1                 =$01;
  711.      VK_BUTTON2                 =$02;
  712.      VK_BUTTON3                 =$03;
  713.      VK_BREAK                   =$04;
  714.      VK_BACKSPACE               =$05;
  715.      VK_TAB                     =$06;
  716.      VK_BACKTAB                 =$07;
  717.      VK_NEWLINE                 =$08;
  718.      VK_SHIFT                   =$09;
  719.      VK_CTRL                    =$0A;
  720.      VK_ALT                     =$0B;
  721.      VK_ALTGRAF                 =$0C;
  722.      VK_PAUSE                   =$0D;
  723.      VK_CAPSLOCK                =$0E;
  724.      VK_ESC                     =$0F;
  725.      VK_SPACE                   =$10;
  726.      VK_PAGEUP                  =$11;
  727.      VK_PAGEDOWN                =$12;
  728.      VK_END                     =$13;
  729.      VK_HOME                    =$14;
  730.      VK_LEFT                    =$15;
  731.      VK_UP                      =$16;
  732.      VK_RIGHT                   =$17;
  733.      VK_DOWN                    =$18;
  734.      VK_PRINTSCRN               =$19;
  735.      VK_INSERT                  =$1A;
  736.      VK_DELETE                  =$1B;
  737.      VK_SCRLLOCK                =$1C;
  738.      VK_NUMLOCK                 =$1D;
  739.      VK_ENTER                   =$1E;
  740.      VK_SYSRQ                   =$1F;
  741.      VK_F1                      =$20;
  742.      VK_F2                      =$21;
  743.      VK_F3                      =$22;
  744.      VK_F4                      =$23;
  745.      VK_F5                      =$24;
  746.      VK_F6                      =$25;
  747.      VK_F7                      =$26;
  748.      VK_F8                      =$27;
  749.      VK_F9                      =$28;
  750.      VK_F10                     =$29;
  751.      VK_F11                     =$2A;
  752.      VK_F12                     =$2B;
  753.      VK_F13                     =$2C;
  754.      VK_F14                     =$2D;
  755.      VK_F15                     =$2E;
  756.      VK_F16                     =$2F;
  757.      VK_F17                     =$30;
  758.      VK_F18                     =$31;
  759.      VK_F19                     =$32;
  760.      VK_F20                     =$33;
  761.      VK_F21                     =$34;
  762.      VK_F22                     =$35;
  763.      VK_F23                     =$36;
  764.      VK_F24                     =$37;
  765.      VK_ENDDRAG                 =$38;
  766.      VK_CLEAR                   =$39;
  767.      VK_EREOF                   =$3A;
  768.      VK_PA1                     =$3B;
  769.  
  770.  
  771.      VK_MENU                    =VK_F10;
  772.      VK_DBCSFIRST               =$0080;
  773.      VK_DBCSLAST                =$00ff;
  774.  
  775.      VK_USERFIRST               =$0100;
  776.      VK_USERLAST                =$01ff;
  777.  
  778. { Journal Notification messages  }
  779. CONST
  780.      WM_JOURNALNOTIFY           =$007c;
  781.  
  782. CONST
  783.      JRN_QUEUESTATUS            =$00000001;
  784.      JRN_PHYSKEYSTATE           =$00000002;
  785.  
  786.  
  787. { Special item IDs }
  788. CONST
  789.      DID_OK      =1;
  790.      DID_CANCEL  =2;
  791.      DID_ERROR   =$ffff;
  792.  
  793. { WinAlarm Codes }
  794. CONST
  795.      WA_WARNING                 =0;
  796.      WA_NOTE                    =1;
  797.      WA_ERROR                   =2;
  798.      WA_CWINALARMS             =13;
  799.  
  800.  
  801. { Message box types }
  802. CONST
  803.     MB_OK                      =$0000;
  804.     MB_OKCANCEL                =$0001;
  805.     MB_RETRYCANCEL             =$0002;
  806.     MB_ABORTRETRYIGNORE        =$0003;
  807.     MB_YESNO                   =$0004;
  808.     MB_YESNOCANCEL             =$0005;
  809.     MB_CANCEL                  =$0006;
  810.     MB_ENTER                   =$0007;
  811.     MB_ENTERCANCEL             =$0008;
  812.  
  813.     MB_NOICON                  =$0000;
  814.     MB_CUANOTIFICATION         =$0000;
  815.     MB_ICONQUESTION            =$0010;
  816.     MB_ICONEXCLAMATION         =$0020;
  817.     MB_CUAWARNING              =$0020;
  818.     MB_ICONASTERISK            =$0030;
  819.     MB_ICONHAND                =$0040;
  820.     MB_CUACRITICAL             =$0040;
  821.     MB_QUERY                   =MB_ICONQUESTION;
  822.     MB_WARNING                 =MB_CUAWARNING;
  823.     MB_INFORMATION             =MB_ICONASTERISK;
  824.     MB_CRITICAL                =MB_CUACRITICAL;
  825.     MB_ERROR                   =MB_CRITICAL;
  826.  
  827.     MB_DEFBUTTON1              =$0000;
  828.     MB_DEFBUTTON2              =$0100;
  829.     MB_DEFBUTTON3              =$0200;
  830.  
  831.     MB_APPLMODAL               =$0000;
  832.     MB_SYSTEMMODAL             =$1000;
  833.     MB_HELP                    =$2000;
  834.     MB_MOVEABLE                =$4000;
  835.  
  836.  
  837. { Message box return codes }
  838.  
  839. CONST
  840.     MBID_OK                    =1;
  841.     MBID_CANCEL                =2;
  842.     MBID_ABORT                 =3;
  843.     MBID_RETRY                 =4;
  844.     MBID_IGNORE                =5;
  845.     MBID_YES                   =6;
  846.     MBID_NO                    =7;
  847.     MBID_HELP                  =8;
  848.     MBID_ENTER                 =9;
  849.     MBID_ERROR                 =$ffff;
  850.  
  851. { Dialog codes: returned by WM_QUERYDLGCODE msg }
  852.  
  853. CONST
  854.     DLGC_ENTRYFIELD    =$0001;  { Entry field item understands EM_SETSEL) }
  855.     DLGC_BUTTON        =$0002;  { Button item                             }
  856.     DLGC_RADIOBUTTON   =$0004;  { Radio button                            }
  857.     DLGC_STATIC        =$0008;  { Static item                             }
  858.     DLGC_DEFAULT       =$0010;  { Default push button                     }
  859.     DLGC_PUSHBUTTON    =$0020;  { Normal (Non-default) push button        }
  860.     DLGC_CHECKBOX      =$0040;  { Check box button control                }
  861.     DLGC_SCROLLBAR     =$0080;  { Scroll bar                              }
  862.     DLGC_MENU          =$0100;  { Menu                                    }
  863.     DLGC_TABONCLICK    =$0200;
  864.     DLGC_MLE           =$0400;  { Multiple Line Entry                     }
  865.  
  866. { WinEnumDlgItem() constants }
  867. CONST
  868.     EDI_FIRSTTABITEM           =0;
  869.     EDI_LASTTABITEM            =1;
  870.     EDI_NEXTTABITEM            =2;
  871.     EDI_PREVTABITEM            =3;
  872.     EDI_FIRSTGROUPITEM         =4;
  873.     EDI_LASTGROUPITEM          =5;
  874.     EDI_NEXTGROUPITEM          =6;
  875.     EDI_PREVGROUPITEM          =7;
  876.  
  877. { Dialog template definitions }
  878.  
  879. TYPE
  880.     PDLGITEM=^DLGITEM;
  881.     DLGITEM=RECORD  {pack 2}
  882.                   fsItemStatus:USHORT;
  883.                   cChildren:USHORT;
  884.                   cchClassName:USHORT;
  885.                   offClassName:USHORT;
  886.                   cchText:USHORT;
  887.                   offText:USHORT;
  888.                   flStyle:ULONG;
  889.                   x:INTEGER;
  890.                   y:INTEGER;
  891.                   cx:INTEGER;
  892.                   cy:INTEGER;
  893.                   id:USHORT;
  894.                   offPresParams:USHORT;
  895.                   offCtlData:USHORT;
  896.            END;
  897.  
  898. { Dialog Template structure }
  899.  
  900. TYPE
  901.     PDLGTEMPLATE=^DLGTEMPLATE;
  902.     DLGTEMPLATE=RECORD  {pack 2}
  903.                       cbTemplate:USHORT;
  904.                       atype:USHORT;
  905.                       codepage:USHORT;
  906.                       offadlgti:USHORT;
  907.                       fsTemplateStatus:USHORT;
  908.                       iItemFocus:USHORT;
  909.                       coffPresParams:USHORT;
  910.                       adlgti:ARRAY[0..0] OF DLGITEM;
  911.                 END;
  912.  
  913.  
  914. { Static Control Manager }
  915.  
  916. {* Static control styles:***************************************************
  917.  *                                                                         *
  918.  * NOTE: the top 9 bits of the LOUSHORT of the window flStyle are used for   *
  919.  * DT_* flags.  The lower 7 bits are for SS_* styles.  This gives us up    *
  920.  * to 128 distinct static control types (we currently use 11 of them).     *
  921.  ***************************************************************************}
  922.  
  923. CONST
  924.     SS_TEXT                    =$0001;
  925.     SS_GROUPBOX                =$0002;
  926.  
  927.     SS_ICON                    =$0003;
  928.     SS_BITMAP                  =$0004;
  929.     SS_FGNDRECT                =$0005;
  930.     SS_HALFTONERECT            =$0006;
  931.     SS_BKGNDRECT               =$0007;
  932.     SS_FGNDFRAME               =$0008;
  933.     SS_HALFTONEFRAME           =$0009;
  934.     SS_BKGNDFRAME              =$000a;
  935.     SS_SYSICON                 =$000b;
  936.     SS_AUTOSIZE                =$0040;
  937.  
  938.  
  939. { Static control messages }
  940.  
  941. CONST
  942.     SM_SETHANDLE               =$0100;
  943.     SM_QUERYHANDLE             =$0101;
  944.  
  945. { Button control styles }
  946.  
  947. CONST
  948.     BS_PUSHBUTTON              =0;
  949.     BS_CHECKBOX                =1;
  950.     BS_AUTOCHECKBOX            =2;
  951.     BS_RADIOBUTTON             =3;
  952.     BS_AUTORADIOBUTTON         =4;
  953.     BS_3STATE                  =5;
  954.     BS_AUTO3STATE              =6;
  955.  
  956.     BS_USERBUTTON              =7;
  957.     BS_PRIMARYSTYLES           =$000f;
  958.  
  959.     BS_BITMAP                  =$0040;
  960.     BS_ICON                    =$0080;
  961.     BS_HELP                    =$0100;
  962.     BS_SYSCOMMAND              =$0200;
  963.     BS_DEFAULT                 =$0400;
  964.     BS_NOPOINTERFOCUS          =$0800;
  965.     BS_NOBORDER                =$1000;
  966.     BS_NOCURSORSELECT          =$2000;
  967.     BS_AUTOSIZE                =$4000;
  968.  
  969.  
  970. TYPE
  971.     PBTNCDATA=^BTNCDATA;
  972.     BTNCDATA=RECORD  {pack 2}
  973.                   cb:USHORT;
  974.                   fsCheckState:USHORT;
  975.                   fsHiliteState:USHORT;
  976.                   hImage:LHANDLE;
  977.              END;
  978.  
  979. { User button structure (passed in WM_CONTROL msg) }
  980.  
  981. TYPE
  982.     PUSERBUTTON=^USERBUTTON;
  983.     USERBUTTON=RECORD
  984.                      hwnd:HWND;
  985.                      hps:HPS;
  986.                      fsState:ULONG;
  987.                      fsStateOld:ULONG;
  988.                END;
  989. { Button control messages }
  990.  
  991. CONST
  992.     BM_CLICK                   =$0120;
  993.     BM_QUERYCHECKINDEX         =$0121;
  994.     BM_QUERYHILITE             =$0122;
  995.     BM_SETHILITE               =$0123;
  996.     BM_QUERYCHECK              =$0124;
  997.     BM_SETCHECK                =$0125;
  998.     BM_SETDEFAULT              =$0126;
  999.  
  1000. { Button notification codes }
  1001.  
  1002. CONST
  1003.     BN_CLICKED                 =1;
  1004.     BN_DBLCLICKED              =2;
  1005.     BN_PAINT                   =3;
  1006.  
  1007. { BN_PAINT button draw state codes (must be in high byte) }
  1008.  
  1009. CONST
  1010.     BDS_HILITED                =$0100;
  1011.     BDS_DISABLED               =$0200;
  1012.     BDS_DEFAULT                =$0400;
  1013.  
  1014. { Entry field  styles }
  1015.  
  1016. CONST
  1017.      ES_LEFT                    =$00000000;
  1018.      ES_CENTER                  =$00000001;
  1019.      ES_RIGHT                   =$00000002;
  1020.      ES_AUTOSCROLL              =$00000004;
  1021.  
  1022.      ES_MARGIN                  =$00000008;
  1023.      ES_AUTOTAB                 =$00000010;
  1024.      ES_READONLY                =$00000020;
  1025.      ES_COMMAND                 =$00000040;
  1026.      ES_UNREADABLE              =$00000080;
  1027.      ES_AUTOSIZE                =$00000200;
  1028.  
  1029.      ES_ANY                     =$00000000;
  1030.      ES_SBCS                    =$00001000;
  1031.      ES_DBCS                    =$00002000;
  1032.      ES_MIXED                   =$00003000;
  1033.  
  1034.  
  1035. { combo box styles }
  1036.  
  1037. CONST
  1038.     CBS_SIMPLE                 =$0001;
  1039.     CBS_DROPDOWN               =$0002;
  1040.     CBS_DROPDOWNLIST           =$0004;
  1041.     CBS_COMPATIBLE             =$0008;
  1042.  
  1043. { IDs of combobox entry field and listbox. }
  1044.  
  1045. CONST
  1046.     CBID_LIST                  =$029A;
  1047.     CBID_EDIT                  =$029B;
  1048.  
  1049.     CBM_SHOWLIST               =$0170;
  1050.     CBM_HILITE                 =$0171;
  1051.     CBM_ISLISTSHOWING          =$0172;
  1052.  
  1053.     CBN_EFCHANGE               =1;
  1054.     CBN_EFSCROLL               =2;
  1055.     CBN_MEMERROR               =3;
  1056.     CBN_LBSELECT               =4;
  1057.     CBN_LBSCROLL               =5;
  1058.     CBN_SHOWLIST               =6;
  1059.     CBN_ENTER                  =7;
  1060.  
  1061. TYPE
  1062.     PENTRYFDATA=^ENTRYFDATA;
  1063.     ENTRYFDATA=RECORD {pack 2}
  1064.                      cb:USHORT;
  1065.                      cchEditLimit:USHORT;
  1066.                      ichMinSel:USHORT;
  1067.                      ichMaxSel:USHORT;
  1068.                END;
  1069.  
  1070. { Entry Field  messages }
  1071.  
  1072. CONST
  1073.     EM_QUERYCHANGED            =$0140;
  1074.     EM_QUERYSEL                =$0141;
  1075.     EM_SETSEL                  =$0142;
  1076.     EM_SETTEXTLIMIT            =$0143;
  1077.  
  1078.     EM_CUT                     =$0144;
  1079.     EM_COPY                    =$0145;
  1080.     EM_CLEAR                   =$0146;
  1081.     EM_PASTE                   =$0147;
  1082.     EM_QUERYFIRSTCHAR          =$0148;
  1083.     EM_SETFIRSTCHAR            =$0149;
  1084.     EM_QUERYREADONLY           =$014a;
  1085.     EM_SETREADONLY             =$014b;
  1086.     EM_SETINSERTMODE           =$014c;
  1087.  
  1088. { Entry Field notification messages }
  1089.  
  1090. CONST
  1091.     EN_SETFOCUS                =$0001;
  1092.     EN_KILLFOCUS               =$0002;
  1093.     EN_CHANGE                  =$0004;
  1094.     EN_SCROLL                  =$0008;
  1095.     EN_MEMERROR                =$0010;
  1096.     EN_OVERFLOW                =$0020;
  1097.     EN_INSERTMODETOGGLE        =$0040;
  1098.  
  1099.  
  1100. { List box styles }
  1101.  
  1102. CONST
  1103.     LS_MULTIPLESEL             =$00000001;
  1104.     LS_OWNERDRAW               =$00000002;
  1105.     LS_NOADJUSTPOS             =$00000004;
  1106.     LS_HORZSCROLL              =$00000008;
  1107.     LS_EXTENDEDSEL             =$00000010;
  1108.  
  1109.  
  1110. { List box notification messages }
  1111.  
  1112. CONST
  1113.     LN_SELECT                  =1;
  1114.     LN_SETFOCUS                =2;
  1115.     LN_KILLFOCUS               =3;
  1116.     LN_SCROLL                  =4;
  1117.     LN_ENTER                   =5;
  1118.  
  1119. { List box messages }
  1120.  
  1121. TYPE
  1122.    PLBOXINFO=^LBOXINFO;
  1123.    LBOXINFO=RECORD
  1124.                  lItemIndex:LONGINT;
  1125.                  ulItemCount:LONGWORD;
  1126.                  reserved:LONGWORD;
  1127.                  reserved2:LONGWORD;
  1128.    END;
  1129.  
  1130. CONST
  1131.    LM_QUERYITEMCOUNT          =$0160;
  1132.    LM_INSERTITEM              =$0161;
  1133.    LM_SETTOPINDEX             =$0162;
  1134.    LM_DELETEITEM              =$0163;
  1135.    LM_SELECTITEM              =$0164;
  1136.    LM_QUERYSELECTION          =$0165;
  1137.    LM_SETITEMTEXT             =$0166;
  1138.    LM_QUERYITEMTEXTLENGTH     =$0167;
  1139.    LM_QUERYITEMTEXT           =$0168;
  1140.  
  1141.    LM_SETITEMHANDLE           =$0169;
  1142.    LM_QUERYITEMHANDLE         =$016a;
  1143.    LM_SEARCHSTRING            =$016b;
  1144.    LM_SETITEMHEIGHT           =$016c;
  1145.    LM_QUERYTOPINDEX           =$016d;
  1146.    LM_DELETEALL               =$016e;
  1147.    LM_INSERTMULTITEMS         =$016f;
  1148.    LM_SETITEMWIDTH            =$0660;
  1149.  
  1150. { List box constants }
  1151.  
  1152. CONST
  1153.     LIT_CURSOR                =-4;
  1154.     LIT_ERROR                 =-3;
  1155.     LIT_MEMERROR              =-2;
  1156.     LIT_NONE                  =-1;
  1157.     LIT_FIRST                 =-1;
  1158.  
  1159. { For LM_INSERTITEM msg }
  1160.  
  1161. CONST
  1162.     LIT_END                   =-1;
  1163.     LIT_SORTASCENDING         =-2;
  1164.     LIT_SORTDESCENDING        =-3;
  1165.  
  1166. { For LM_SEARCHSTRING msg }
  1167.  
  1168.     LSS_SUBSTRING             =$0001;
  1169.     LSS_PREFIX                =$0002;
  1170.     LSS_CASESENSITIVE         =$0004;
  1171.  
  1172.  
  1173. { Menu control styles }
  1174.  
  1175. CONST
  1176.     MS_ACTIONBAR               =$00000001;
  1177.     MS_TITLEBUTTON             =$00000002;
  1178.     MS_VERTICALFLIP            =$00000004;
  1179.  
  1180.     MS_CONDITIONALCASCADE      =$00000040;
  1181.  
  1182.  
  1183.  
  1184. { Menu control messages }
  1185. CONST
  1186.     MM_INSERTITEM              =$0180;
  1187.     MM_DELETEITEM              =$0181;
  1188.     MM_QUERYITEM               =$0182;
  1189.     MM_SETITEM                 =$0183;
  1190.     MM_QUERYITEMCOUNT          =$0184;
  1191.     MM_STARTMENUMODE           =$0185;
  1192.     MM_ENDMENUMODE             =$0186;
  1193.     MM_REMOVEITEM              =$0188;
  1194.     MM_SELECTITEM              =$0189;
  1195.     MM_QUERYSELITEMID          =$018a;
  1196.     MM_QUERYITEMTEXT           =$018b;
  1197.     MM_QUERYITEMTEXTLENGTH     =$018c;
  1198.     MM_SETITEMHANDLE           =$018d;
  1199.     MM_SETITEMTEXT             =$018e;
  1200.     MM_ITEMPOSITIONFROMID      =$018f;
  1201.     MM_ITEMIDFROMPOSITION      =$0190;
  1202.     MM_QUERYITEMATTR           =$0191;
  1203.     MM_SETITEMATTR             =$0192;
  1204.     MM_ISITEMVALID             =$0193;
  1205.     MM_QUERYITEMRECT           =$0194;
  1206.     MM_DELETEITEMBYPOS         =$01f1;  {UNDOCUMENTED}
  1207.  
  1208.     MM_QUERYDEFAULTITEMID      =$0431;
  1209.     MM_SETDEFAULTITEMID        =$0432;
  1210.  
  1211.  
  1212. TYPE
  1213.     PMTI=^MTI;
  1214.     MTI=RECORD
  1215.               afStyle:USHORT;
  1216.               pad:USHORT;
  1217.               idItem:USHORT;
  1218.               c:ARRAY[0..1] OF CHAR;
  1219.         END;
  1220.  
  1221.     PMT=^MT;
  1222.     MT=RECORD
  1223.              len:ULONG;
  1224.              codepage:USHORT;
  1225.              reserved:USHORT;
  1226.              cMti:USHORT;
  1227.              rgMti:MTI;
  1228.        END;
  1229.  
  1230. TYPE
  1231.     POWNERITEM=^OWNERITEM;
  1232.     OWNERITEM=RECORD
  1233.                    hwnd:HWND;
  1234.                    hps:HPS;
  1235.                    fsState:ULONG;
  1236.                    fsAttribute:ULONG;
  1237.                    fsStateOld:ULONG;
  1238.                    fsAttributeOld:ULONG;
  1239.                    rclItem:RECTL;
  1240.                    idItem:LONG;
  1241.                    hItem:ULONG;
  1242.               END;
  1243.  
  1244.     PMENUITEM=^MENUITEM;
  1245.     MENUITEM=RECORD {pack 2}
  1246.                   iPosition:INTEGER;
  1247.                   afStyle:USHORT;
  1248.                   afAttribute:USHORT;
  1249.                   id:USHORT;
  1250.                   hwndSubMenu:HWND;
  1251.                   hItem:ULONG;
  1252.              END;
  1253.  
  1254. CONST
  1255.     MIT_END                    =-1;
  1256.     MIT_NONE                   =-1;
  1257.     MIT_MEMERROR               =-1;
  1258.     MIT_ERROR                  =-1;
  1259.     MIT_FIRST                  =-2;
  1260.     MIT_LAST                   =-3;
  1261.     MID_NONE                   =MIT_NONE;
  1262.     MID_ERROR                  =-1;
  1263.  
  1264. { Menu item styles & attributes }
  1265.  
  1266. CONST
  1267.     MIS_TEXT                   =$0001;
  1268.  
  1269.     MIS_BITMAP                 =$0002;
  1270.     MIS_SEPARATOR              =$0004;
  1271.  
  1272.     MIS_OWNERDRAW              =$0008;
  1273.  
  1274.     MIS_SUBMENU                =$0010;
  1275.     MIS_MULTMENU               =$0020; { multiple choice submenu     }
  1276.     MIS_SYSCOMMAND             =$0040;
  1277.     MIS_HELP                   =$0080;
  1278.     MIS_STATIC                 =$0100;
  1279.     MIS_BUTTONSEPARATOR        =$0200;
  1280.     MIS_BREAK                  =$0400;
  1281.     MIS_BREAKSEPARATOR         =$0800;
  1282.     MIS_GROUP                  =$1000; { multiple choice group start }
  1283.     MIS_SINGLE                 =$2000;
  1284.  
  1285.     MIA_NODISMISS              =$0020;
  1286.     MIA_FRAMED                 =$1000;
  1287.     MIA_CHECKED                =$2000;
  1288.     MIA_DISABLED               =$4000;
  1289.     MIA_HILITED                =$8000;
  1290.  
  1291.  
  1292. { Values of fs in WinPopupMenu call }
  1293. CONST
  1294.    PU_POSITIONONITEM          =$0001;
  1295.  
  1296.    PU_HCONSTRAIN              =$0002;
  1297.    PU_VCONSTRAIN              =$0004;
  1298.  
  1299.    PU_NONE                    =$0000;
  1300.    PU_MOUSEBUTTON1DOWN        =$0008;
  1301.    PU_MOUSEBUTTON2DOWN        =$0010;
  1302.    PU_MOUSEBUTTON3DOWN        =$0018;
  1303.  
  1304.    PU_SELECTITEM              =$0020;
  1305.  
  1306.    PU_MOUSEBUTTON1            =$0040;
  1307.    PU_MOUSEBUTTON2            =$0080;
  1308.    PU_MOUSEBUTTON3            =$0100;
  1309.    PU_KEYBOARD                =$0200;
  1310.  
  1311. { Scroll Bar styles }
  1312.  
  1313. CONST
  1314.     SBS_HORZ                  =0;
  1315.     SBS_VERT                  =1;
  1316.     SBS_THUMBSIZE             =2;
  1317.     SBS_AUTOTRACK             =4;
  1318.     SBS_AUTOSIZE              =$2000;
  1319.  
  1320. { Scroll Bar messages }
  1321.  
  1322. CONST
  1323.    SBM_SETSCROLLBAR           =$01a0;
  1324.    SBM_SETPOS                 =$01a1;
  1325.    SBM_QUERYPOS               =$01a2;
  1326.    SBM_QUERYRANGE             =$01a3;
  1327.    SBM_SETTHUMBSIZE           =$01a6;
  1328.  
  1329. { Scroll Bar Commands }
  1330.  
  1331. CONST
  1332.    SB_LINEUP                  =1;
  1333.    SB_LINEDOWN                =2;
  1334.    SB_LINELEFT                =1;
  1335.    SB_LINERIGHT               =2;
  1336.    SB_PAGEUP                  =3;
  1337.    SB_PAGEDOWN                =4;
  1338.    SB_PAGELEFT                =3;
  1339.    SB_PAGERIGHT               =4;
  1340.    SB_SLIDERTRACK             =5;
  1341.    SB_SLIDERPOSITION          =6;
  1342.    SB_ENDSCROLL               =7;
  1343.  
  1344.  
  1345. TYPE
  1346.     PSBCDATA=^SBCDATA;
  1347.     SBCDATA=RECORD {pack 2}
  1348.                  cb:USHORT;
  1349.                  sHilite:USHORT;
  1350.                  posFirst:INTEGER;
  1351.                  posLast:INTEGER;
  1352.                  posThumb:INTEGER;
  1353.                  cVisible:INTEGER;
  1354.                  cTotal:INTEGER;
  1355.             END;
  1356.  
  1357.    PFRAMECDATA=^FRAMECDATA;
  1358.    FRAMECDATA=RECORD {pack 2}
  1359.                    cb:USHORT;
  1360.                    flCreateFlags:ULONG;
  1361.                    hmodResources:USHORT;
  1362.                    idResources:USHORT;
  1363.               END;
  1364.  
  1365. { Frame window styles }
  1366.  
  1367. CONST
  1368.    FCF_TITLEBAR               =$00000001;
  1369.    FCF_SYSMENU                =$00000002;
  1370.    FCF_MENU                   =$00000004;
  1371.    FCF_SIZEBORDER             =$00000008;
  1372.    FCF_MINBUTTON              =$00000010;
  1373.    FCF_MAXBUTTON              =$00000020;
  1374.    FCF_MINMAX                 =$00000030;
  1375.    FCF_VERTSCROLL             =$00000040;
  1376.    FCF_HORZSCROLL             =$00000080;
  1377.    FCF_DLGBORDER              =$00000100;
  1378.    FCF_BORDER                 =$00000200;
  1379.    FCF_SHELLPOSITION          =$00000400;
  1380.    FCF_TASKLIST               =$00000800;
  1381.    FCF_NOBYTEALIGN            =$00001000;
  1382.    FCF_NOMOVEWITHOWNER        =$00002000;
  1383.    FCF_ICON                   =$00004000;
  1384.    FCF_ACCELTABLE             =$00008000;
  1385.    FCF_SYSMODAL               =$00010000;
  1386.    FCF_SCREENALIGN            =$00020000;
  1387.    FCF_MOUSEALIGN             =$00040000;
  1388.    FCF_HIDEBUTTON             =$01000000;
  1389.    FCF_HIDEMAX                =$01000020;
  1390.    FCF_DBE_APPSTAT            =$80000000;
  1391.    FCF_AUTOICON               =$40000000;
  1392.    FCF_STANDARD               =$0000CC3F;
  1393.  
  1394.    FS_ICON                    =$00000001;
  1395.    FS_ACCELTABLE              =$00000002;
  1396.    FS_SHELLPOSITION           =$00000004;
  1397.    FS_TASKLIST                =$00000008;
  1398.    FS_NOBYTEALIGN             =$00000010;
  1399.    FS_NOMOVEWITHOWNER         =$00000020;
  1400.    FS_SYSMODAL                =$00000040;
  1401.    FS_DLGBORDER               =$00000080;
  1402.    FS_BORDER                  =$00000100;
  1403.    FS_SCREENALIGN             =$00000200;
  1404.    FS_MOUSEALIGN              =$00000400;
  1405.    FS_SIZEBORDER              =$00000800;
  1406.    FS_DBE_APPSTAT             =$00008000;
  1407.    FS_STANDARD                =$0000000F;
  1408.  
  1409.  
  1410. { Frame Window Flags accessed via WinSet/QueryWindowUSHORT(QWS_FLAGS) }
  1411.  
  1412. CONST
  1413.      FF_FLASHWINDOW             =$0001;
  1414.      FF_ACTIVE                  =$0002;
  1415.      FF_FLASHHILITE             =$0004;
  1416.      FF_OWNERHIDDEN             =$0008;
  1417.      FF_DLGDISMISSED            =$0010;
  1418.      FF_OWNERDISABLED           =$0020;
  1419.      FF_SELECTED                =$0040;
  1420.      FF_NOACTIVATESWP           =$0080;
  1421.  
  1422. { WM_QUERYFRAMEINFO constants }
  1423.  
  1424. CONST
  1425.      FI_FRAME                =$00000001;
  1426.      FI_OWNERHIDE            =$00000002;
  1427.      FI_ACTIVATEOK           =$00000004;
  1428.      FI_NOMOVEWITHOWNER      =$00000008;
  1429.  
  1430. TYPE
  1431.     HSAVEWP=LHANDLE;
  1432.  
  1433.  
  1434. { Frame control IDs    }
  1435.  
  1436. CONST
  1437.    FID_SYSMENU                =$8002;
  1438.    FID_TITLEBAR               =$8003;
  1439.    FID_MINMAX                 =$8004;
  1440.    FID_MENU                   =$8005;
  1441.    FID_VERTSCROLL             =$8006;
  1442.    FID_HORZSCROLL             =$8007;
  1443.    FID_CLIENT                 =$8008;
  1444.    { Note =$8009 is reserved }
  1445.    FID_DBE_APPSTAT            =$8010;
  1446.    FID_DBE_KBDSTAT            =$8011;
  1447.    FID_DBE_PECIC              =$8012;
  1448.    FID_DBE_KKPOPUP            =$8013;
  1449.  
  1450. { Standard WM_SYSCOMMAND command values }
  1451.  
  1452. CONST
  1453.    SC_SIZE                    =$8000;
  1454.    SC_MOVE                    =$8001;
  1455.    SC_MINIMIZE                =$8002;
  1456.    SC_MAXIMIZE                =$8003;
  1457.    SC_CLOSE                   =$8004;
  1458.    SC_NEXT                    =$8005;
  1459.    SC_APPMENU                 =$8006;
  1460.    SC_SYSMENU                 =$8007;
  1461.    SC_RESTORE                 =$8008;
  1462.    SC_NEXTFRAME               =$8009;
  1463.    SC_NEXTWINDOW              =$8010;
  1464.    SC_TASKMANAGER             =$8011;
  1465.    SC_HELPKEYS                =$8012;
  1466.    SC_HELPINDEX               =$8013;
  1467.    SC_HELPEXTENDED            =$8014;
  1468.    SC_SWITCHPANELIDS          =$8015;
  1469.    SC_DBE_FIRST               =$8018;
  1470.    SC_DBE_LAST                =$801F;
  1471.  
  1472.    SC_BEGINDRAG               =$8020;
  1473.    SC_ENDDRAG                 =$8021;
  1474.    SC_SELECT                  =$8022;
  1475.    SC_OPEN                    =$8023;
  1476.    SC_CONTEXTMENU             =$8024;
  1477.    SC_CONTEXTHELP             =$8025;
  1478.    SC_TEXTEDIT                =$8026;
  1479.    SC_BEGINSELECT             =$8027;
  1480.    SC_ENDSELECT               =$8028;
  1481.    SC_WINDOW                  =$8029;
  1482.    SC_HIDE                    =$802a;
  1483.  
  1484.  
  1485. { Title bar control messages }
  1486.  
  1487. CONST
  1488.    TBM_SETHILITE              =$01e3;
  1489.    TBM_QUERYHILITE            =$01e4;
  1490.  
  1491.  
  1492. CONST
  1493.     SV_SWAPBUTTON              =0;
  1494.     SV_DBLCLKTIME              =1;
  1495.     SV_CXDBLCLK                =2;
  1496.     SV_CYDBLCLK                =3;
  1497.     SV_CXSIZEBORDER            =4;
  1498.     SV_CYSIZEBORDER            =5;
  1499.     SV_ALARM                   =6;
  1500.  
  1501.     SV_RESERVEDFIRST1          =7;
  1502.     SV_RESERVEDLAST1           =8;
  1503.  
  1504.     SV_CURSORRATE              =9;
  1505.     SV_FIRSTSCROLLRATE         =10;
  1506.     SV_SCROLLRATE              =11;
  1507.     SV_NUMBEREDLISTS           =12;
  1508.     SV_WARNINGFREQ             =13;
  1509.     SV_NOTEFREQ                =14;
  1510.     SV_ERRORFREQ               =15;
  1511.     SV_WARNINGDURATION         =16;
  1512.     SV_NOTEDURATION            =17;
  1513.     SV_ERRORDURATION           =18;
  1514.  
  1515.     SV_RESERVEDFIRST           =19;
  1516.     SV_RESERVEDLAST            =19;
  1517.  
  1518.     SV_CXSCREEN                =20;
  1519.     SV_CYSCREEN                =21;
  1520.     SV_CXVSCROLL               =22;
  1521.     SV_CYHSCROLL               =23;
  1522.     SV_CYVSCROLLARROW          =24;
  1523.     SV_CXHSCROLLARROW          =25;
  1524.     SV_CXBORDER                =26;
  1525.     SV_CYBORDER                =27;
  1526.     SV_CXDLGFRAME              =28;
  1527.     SV_CYDLGFRAME              =29;
  1528.     SV_CYTITLEBAR              =30;
  1529.     SV_CYVSLIDER               =31;
  1530.     SV_CXHSLIDER               =32;
  1531.     SV_CXMINMAXBUTTON          =33;
  1532.     SV_CYMINMAXBUTTON          =34;
  1533.     SV_CYMENU                  =35;
  1534.     SV_CXFULLSCREEN            =36;
  1535.     SV_CYFULLSCREEN            =37;
  1536.     SV_CXICON                  =38;
  1537.     SV_CYICON                  =39;
  1538.     SV_CXPOINTER               =40;
  1539.     SV_CYPOINTER               =41;
  1540.  
  1541.     SV_DEBUG                   =42;
  1542.     SV_CMOUSEBUTTONS           =43;
  1543.     SV_CPOINTERBUTTONS         =43;
  1544.     SV_POINTERLEVEL            =44;
  1545.     SV_CURSORLEVEL             =45;
  1546.     SV_TRACKRECTLEVEL          =46;
  1547.  
  1548.     SV_CTIMERS                 =47;
  1549.  
  1550.     SV_MOUSEPRESENT            =48;
  1551.  
  1552.     SV_CXBYTEALIGN             =49;
  1553.     SV_CXALIGN                 =49;
  1554.     SV_CYBYTEALIGN             =50;
  1555.     SV_CYALIGN                 =50;
  1556.  
  1557.     SV_NOTRESERVED             =56;
  1558.     SV_EXTRAKEYBEEP            =57;
  1559.  
  1560.     SV_SETLIGHTS               =58;
  1561.     SV_INSERTMODE              =59;
  1562.  
  1563.  
  1564.     SV_MENUROLLDOWNDELAY       =64;
  1565.     SV_MENUROLLUPDELAY         =65;
  1566.     SV_ALTMNEMONIC             =66;
  1567.     SV_TASKLISTMOUSEACCESS     =67;
  1568.  
  1569.     SV_CXICONTEXTWIDTH         =68;
  1570.     SV_CICONTEXTLINES          =69;
  1571.  
  1572.     SV_CHORDTIME               =70;
  1573.     SV_CXCHORD                 =71;
  1574.     SV_CYCHORD                 =72;
  1575.     SV_CXMOTIONSTART           =73;
  1576.     SV_CYMOTIONSTART           =74;
  1577.  
  1578.     SV_BEGINDRAG               =75;
  1579.     SV_ENDDRAG                 =76;
  1580.     SV_SINGLESELECT            =77;
  1581.     SV_OPEN                    =78;
  1582.     SV_CONTEXTMENU             =79;
  1583.     SV_CONTEXTHELP             =80;
  1584.     SV_TEXTEDIT                =81;
  1585.     SV_BEGINSELECT             =82;
  1586.     SV_ENDSELECT               =83;
  1587.  
  1588.     SV_BEGINDRAGKB             =84;
  1589.     SV_ENDDRAGKB               =85;
  1590.     SV_SELECTKB                =86;
  1591.     SV_OPENKB                  =87;
  1592.     SV_CONTEXTMENUKB           =88;
  1593.     SV_CONTEXTHELPKB           =89;
  1594.     SV_TEXTEDITKB              =90;
  1595.     SV_BEGINSELECTKB           =91;
  1596.     SV_ENDSELECTKB             =92;
  1597.  
  1598.     SV_ANIMATION               =93;
  1599.     SV_ANIMATIONSPEED          =94;
  1600.  
  1601.     SV_MONOICONS               =95;
  1602.  
  1603.     SV_KBDALTERED              =96;
  1604.  
  1605.     SV_PRINTSCREEN             =97;
  1606.  
  1607.     SV_CSYSVALUES              =98;
  1608.  
  1609.  
  1610. { Presentation parameter structures. }
  1611.  
  1612. TYPE
  1613.     PPARAM=^PARAM;
  1614.     PARAM=RECORD
  1615.                 id:ULONG;
  1616.                 cb:ULONG;
  1617.                 ab:ULONG;
  1618.           END;
  1619.  
  1620.     PPRESPARAMS=^PRESPARAMS;
  1621.     PRESPARAMS=RECORD
  1622.                      cb:ULONG;
  1623.                      param:ARRAY[0..100] OF PARAM;
  1624.                END;
  1625.  
  1626.  
  1627.  
  1628.  
  1629. { Presentation parameter types. }
  1630. CONST
  1631.    PP_FOREGROUNDCOLOR                      =1;
  1632.    PP_FOREGROUNDCOLORINDEX                 =2;
  1633.    PP_BACKGROUNDCOLOR                      =3;
  1634.    PP_BACKGROUNDCOLORINDEX                 =4;
  1635.    PP_HILITEFOREGROUNDCOLOR                =5;
  1636.    PP_HILITEFOREGROUNDCOLORINDEX           =6;
  1637.    PP_HILITEBACKGROUNDCOLOR                =7;
  1638.    PP_HILITEBACKGROUNDCOLORINDEX           =8;
  1639.    PP_DISABLEDFOREGROUNDCOLOR              =9;
  1640.    PP_DISABLEDFOREGROUNDCOLORINDEX         =10;
  1641.    PP_DISABLEDBACKGROUNDCOLOR              =11;
  1642.    PP_DISABLEDBACKGROUNDCOLORINDEX         =12;
  1643.    PP_BORDERCOLOR                          =13;
  1644.    PP_BORDERCOLORINDEX                     =14;
  1645.    PP_FONTNAMESIZE                         =15;
  1646.    PP_FONTHANDLE                           =16;
  1647.    PP_RESERVED                             =17;
  1648.    PP_ACTIVECOLOR                          =18;
  1649.    PP_ACTIVECOLORINDEX                     =19;
  1650.    PP_INACTIVECOLOR                        =20;
  1651.    PP_INACTIVECOLORINDEX                   =21;
  1652.    PP_ACTIVETEXTFGNDCOLOR                  =22;
  1653.    PP_ACTIVETEXTFGNDCOLORINDEX             =23;
  1654.    PP_ACTIVETEXTBGNDCOLOR                  =24;
  1655.    PP_ACTIVETEXTBGNDCOLORINDEX             =25;
  1656.    PP_INACTIVETEXTFGNDCOLOR                =26;
  1657.    PP_INACTIVETEXTFGNDCOLORINDEX           =27;
  1658.    PP_INACTIVETEXTBGNDCOLOR                =28;
  1659.    PP_INACTIVETEXTBGNDCOLORINDEX           =29;
  1660.    PP_SHADOW                               =30;
  1661.    PP_MENUFOREGROUNDCOLOR                  =31;
  1662.    PP_MENUFOREGROUNDCOLORINDEX             =32;
  1663.    PP_MENUBACKGROUNDCOLOR                  =33;
  1664.    PP_MENUBACKGROUNDCOLORINDEX             =34;
  1665.    PP_MENUHILITEFGNDCOLOR                  =35;
  1666.    PP_MENUHILITEFGNDCOLORINDEX             =36;
  1667.    PP_MENUHILITEBGNDCOLOR                  =37;
  1668.    PP_MENUHILITEBGNDCOLORINDEX             =38;
  1669.    PP_MENUDISABLEDFGNDCOLOR                =39;
  1670.    PP_MENUDISABLEDFGNDCOLORINDEX           =40;
  1671.    PP_MENUDISABLEDBGNDCOLOR                =41;
  1672.    PP_MENUDISABLEDBGNDCOLORINDEX           =42;
  1673.  
  1674.    PP_USER                                 =$8000;
  1675.  
  1676. { Flags for WinQueryPresParams() }
  1677.  
  1678. CONST
  1679.    QPF_NOINHERIT            =$0001;
  1680.    QPF_ID1COLORINDEX        =$0002;
  1681.    QPF_ID2COLORINDEX        =$0004;
  1682.    QPF_PURERGBCOLOR         =$0008;
  1683.    QPF_VALIDFLAGS           =$000F;
  1684.  
  1685.  
  1686. CONST
  1687.    SYSCLR_SHADOWHILITEBGND         =-50;
  1688.    SYSCLR_SHADOWHILITEFGND         =-49;
  1689.    SYSCLR_SHADOWTEXT               =-48;
  1690.    SYSCLR_ENTRYFIELD               =-47;
  1691.    SYSCLR_MENUDISABLEDTEXT         =-46;
  1692.    SYSCLR_MENUHILITE               =-45;
  1693.    SYSCLR_MENUHILITEBGND           =-44;
  1694.    SYSCLR_PAGEBACKGROUND           =-43;
  1695.    SYSCLR_FIELDBACKGROUND          =-42;
  1696.    SYSCLR_BUTTONLIGHT              =-41;
  1697.    SYSCLR_BUTTONMIDDLE             =-40;
  1698.    SYSCLR_BUTTONDARK               =-39;
  1699.    SYSCLR_BUTTONDEFAULT            =-38;
  1700.    SYSCLR_TITLEBOTTOM              =-37;
  1701.    SYSCLR_SHADOW                   =-36;
  1702.    SYSCLR_ICONTEXT                 =-35;
  1703.    SYSCLR_DIALOGBACKGROUND         =-34;
  1704.    SYSCLR_HILITEFOREGROUND         =-33;
  1705.    SYSCLR_HILITEBACKGROUND         =-32;
  1706.    SYSCLR_INACTIVETITLETEXTBGND    =-31;
  1707.    SYSCLR_ACTIVETITLETEXTBGND      =-30;
  1708.    SYSCLR_INACTIVETITLETEXT        =-29;
  1709.    SYSCLR_ACTIVETITLETEXT          =-28;
  1710.    SYSCLR_OUTPUTTEXT               =-27;
  1711.    SYSCLR_WINDOWSTATICTEXT         =-26;
  1712.    SYSCLR_SCROLLBAR                =-25;
  1713.    SYSCLR_BACKGROUND               =-24;
  1714.    SYSCLR_ACTIVETITLE              =-23;
  1715.    SYSCLR_INACTIVETITLE            =-22;
  1716.    SYSCLR_MENU                     =-21;
  1717.    SYSCLR_WINDOW                   =-20;
  1718.    SYSCLR_WINDOWFRAME              =-19;
  1719.    SYSCLR_MENUTEXT                 =-18;
  1720.    SYSCLR_WINDOWTEXT               =-17;
  1721.    SYSCLR_TITLETEXT                =-16;
  1722.    SYSCLR_ACTIVEBORDER             =-15;
  1723.    SYSCLR_INACTIVEBORDER           =-14;
  1724.    SYSCLR_APPWORKSPACE             =-13;
  1725.    SYSCLR_HELPBACKGROUND           =-12;
  1726.    SYSCLR_HELPTEXT                 =-11;
  1727.    SYSCLR_HELPHILITE               =-10;
  1728.  
  1729.    SYSCLR_CSYSCOLORS               =41;
  1730.  
  1731.    { default color table indices }
  1732.  
  1733.       CLR_FALSE                =-5;
  1734.       CLR_TRUE                 =-4;
  1735.       CLR_ERROR                =-255;
  1736.       CLR_DEFAULT              =-3;
  1737.       CLR_WHITE                =-2;
  1738.       CLR_BLACK                =-1;
  1739.       CLR_BACKGROUND           = 0;
  1740.       CLR_BLUE                 = 1;
  1741.       CLR_RED                  = 2;
  1742.       CLR_PINK                 = 3;
  1743.       CLR_GREEN                = 4;
  1744.       CLR_CYAN                 = 5;
  1745.       CLR_YELLOW               = 6;
  1746.       CLR_NEUTRAL              = 7;
  1747.       CLR_DARKGRAY             = 8;
  1748.       CLR_DARKBLUE             = 9;
  1749.       CLR_DARKRED              = 10;
  1750.       CLR_DARKPINK             = 11;
  1751.       CLR_DARKGREEN            = 12;
  1752.       CLR_DARKCYAN             = 13;
  1753.       CLR_BROWN                = 14;
  1754.       CLR_PALEGRAY             = 15;
  1755.  
  1756. {Jens}
  1757. CONST
  1758.      TID_CURSOR          =$ffff;
  1759.      TID_SCROLL          =$fffe;
  1760.      TID_FLASHWINDOW     =$fffd;
  1761.      TID_DELAY_END       =$81ff;
  1762.      TID_DELAY_START     =$8000;
  1763.      TID_USERMAX         =$7fff;
  1764.  
  1765. TYPE HACCEL=LHANDLE;
  1766.  
  1767. { ACCEL fs bits }
  1768.  
  1769. CONST
  1770.      AF_CHAR                    =$0001;
  1771.      AF_VIRTUALKEY              =$0002;
  1772.      AF_SCANCODE                =$0004;
  1773.      AF_SHIFT                   =$0008;
  1774.      AF_CONTROL                 =$0010;
  1775.      AF_ALT                     =$0020;
  1776.      AF_LONEKEY                 =$0040;
  1777.      AF_SYSCOMMAND              =$0100;
  1778.      AF_HELP                    =$0200;
  1779.  
  1780. TYPE
  1781.     PACCEL=^ACCEL;
  1782.     ACCEL=RECORD {pack 2}
  1783.                 fs:USHORT;
  1784.                 key:USHORT;
  1785.                 cmd:USHORT;
  1786.           END;
  1787.  
  1788.     PACCELTABLE=^ACCELTABLE;
  1789.     ACCELTABLE=RECORD {pack 2}
  1790.                     cAccel:USHORT;
  1791.                     codepage:USHORT;
  1792.                     aaccel:ARRAY[0..0] OF ACCEL;
  1793.                END;
  1794.  
  1795.  
  1796. { Extended Attribute Flags (Association Table) }
  1797. CONST
  1798.      EAF_DEFAULTOWNER           =$0001;
  1799.      EAF_UNCHANGEABLE           =$0002;
  1800.      EAF_REUSEICON              =$0004;
  1801.  
  1802.  
  1803. { WinTrackRect() tracking information structure }
  1804.  
  1805. TYPE
  1806.     PTRACKINFO=^TRACKINFO;
  1807.     TRACKINFO=RECORD
  1808.                    cxBorder:LONG;
  1809.                    cyBorder:LONG;
  1810.                    cxGrid:LONG;
  1811.                    cyGrid:LONG;
  1812.                    cxKeyboard:LONG;
  1813.                    cyKeyboard:LONG;
  1814.                    rclTrack:RECTL;
  1815.                    rclBoundary:RECTL;
  1816.                    ptlMinTrackSize:POINTL;
  1817.                    ptlMaxTrackSize:POINTL;
  1818.                    fs:ULONG;
  1819.            END;
  1820.  
  1821.  
  1822.  
  1823. { WinTrackRect() flags }
  1824. CONST
  1825.      TF_LEFT                    =$0001;
  1826.      TF_TOP                     =$0002;
  1827.      TF_RIGHT                   =$0004;
  1828.      TF_BOTTOM                  =$0008;
  1829.      TF_MOVE                    =$000F;
  1830.  
  1831.      TF_SETPOINTERPOS           =$0010;
  1832.      TF_GRID                    =$0020;
  1833.      TF_STANDARD                =$0040;
  1834.      TF_ALLINBOUNDARY           =$0080;
  1835.      TF_VALIDATETRACKRECT       =$0100;
  1836.      TF_PARTINBOUNDARY          =$0200;
  1837.  
  1838.  
  1839.  
  1840. { Clipboard messages }
  1841.  
  1842. CONST
  1843.      WM_RENDERFMT               =$0060;
  1844.      WM_RENDERALLFMTS           =$0061;
  1845.      WM_DESTROYCLIPBOARD        =$0062;
  1846.      WM_PAINTCLIPBOARD          =$0063;
  1847.      WM_SIZECLIPBOARD           =$0064;
  1848.      WM_HSCROLLCLIPBOARD        =$0065;
  1849.      WM_VSCROLLCLIPBOARD        =$0066;
  1850.      WM_DRAWCLIPBOARD           =$0067;
  1851.  
  1852. { Standard Clipboard formats }
  1853.  
  1854. CONST
  1855.      CF_TEXT                    =1;
  1856.      CF_BITMAP                  =2;
  1857.      CF_DSPTEXT                 =3;
  1858.      CF_DSPBITMAP               =4;
  1859.      CF_METAFILE                =5;
  1860.      CF_DSPMETAFILE             =6;
  1861.      CF_PALETTE                 =9;
  1862.      CF_MMPMFIRST               =10;
  1863.      CF_MMPMLAST                =19;
  1864.  
  1865. { standard DDE and clipboard format stings }
  1866.  
  1867. CONST
  1868.      SZFMT_TEXT                   ='#1';
  1869.      SZFMT_BITMAP                 ='#2';
  1870.      SZFMT_DSPTEXT                ='#3';
  1871.      SZFMT_DSPBITMAP              ='#4';
  1872.      SZFMT_METAFILE               ='#5';
  1873.      SZFMT_DSPMETAFILE            ='#6';
  1874.      SZFMT_PALETTE                ='#9';
  1875.      SZFMT_SYLK                   ='Sylk';
  1876.      SZFMT_DIF                    ='Dif';
  1877.      SZFMT_TIFF                   ='Tiff';
  1878.      SZFMT_OEMTEXT                ='OemText';
  1879.      SZFMT_DIB                    ='Dib';
  1880.      SZFMT_OWNERDISPLAY           ='OwnerDisplay';
  1881.      SZFMT_LINK                   ='Link';
  1882.      SZFMT_METAFILEPICT           ='MetaFilePict';
  1883.      SZFMT_DSPMETAFILEPICT        ='DspMetaFilePict';
  1884.      SZFMT_CPTEXT                 ='Codepage Text';
  1885.      SZDDEFMT_RTF                 ='Rich Text Format';
  1886.      SZDDEFMT_PTRPICT             ='Printer_Picture';
  1887.  
  1888. TYPE
  1889.      PMFP=^MFP;
  1890.      MFP=RECORD {pack 2}
  1891.                sizeBounds:POINTL;
  1892.                sizeMM:POINTL;
  1893.                cbLength:ULONG;
  1894.                mapMode:USHORT;
  1895.                reserved:USHORT;
  1896.               abData:BYTE;
  1897.          END;
  1898.  
  1899.      PCPTEXT=^CPTEXT;
  1900.      CPTEXT=RECORD {pack 2}
  1901.                   idCountry:USHORT;
  1902.                   usCodepage:USHORT;
  1903.                   usLangID:USHORT;
  1904.                   usSubLangID:USHORT;
  1905.                   abText:BYTE;
  1906.             END;
  1907.  
  1908.  
  1909.  
  1910. { WinSetClipbrdData() flags }
  1911. CONST
  1912.      CFI_OWNERFREE              =$0001;
  1913.      CFI_OWNERDISPLAY           =$0002;
  1914.      CFI_POINTER                =$0400;
  1915.      CFI_HANDLE                 =$0200;
  1916.  
  1917.  
  1918. { WinCreateCursor() flags }
  1919. CONST
  1920.    CURSOR_SOLID               =$0000;
  1921.    CURSOR_HALFTONE            =$0001;
  1922.    CURSOR_FRAME               =$0002;
  1923.    CURSOR_FLASH               =$0004;
  1924.    CURSOR_SETPOS              =$8000;
  1925.  
  1926.  
  1927. TYPE
  1928.     PCURSORINFO=^CURSORINFO;
  1929.     CURSORINFO=RECORD
  1930.                     hwnd:HWND;
  1931.                     x:LONG;
  1932.                     y:LONG;
  1933.                     cx:LONG;
  1934.                     cy:LONG;
  1935.                     fs:ULONG;
  1936.                     rclClip:RECTL
  1937.                END;
  1938.  
  1939. { System pointers (NOTE: these are 1-based) }
  1940.  
  1941. CONST
  1942.    SPTR_ARROW                 =1;
  1943.    SPTR_TEXT                  =2;
  1944.    SPTR_WAIT                  =3;
  1945.    SPTR_SIZE                  =4;
  1946.    SPTR_MOVE                  =5;
  1947.    SPTR_SIZENWSE              =6;
  1948.    SPTR_SIZENESW              =7;
  1949.    SPTR_SIZEWE                =8;
  1950.    SPTR_SIZENS                =9;
  1951.    SPTR_APPICON               =10;
  1952.  
  1953.    SPTR_ICONINFORMATION       =11;
  1954.    SPTR_ICONQUESTION          =12;
  1955.    SPTR_ICONERROR             =13;
  1956.    SPTR_ICONWARNING           =14;
  1957.  
  1958.    SPTR_ILLEGAL               =18;
  1959.    SPTR_FILE                  =19;
  1960.    SPTR_FOLDER                =20;
  1961.    SPTR_MULTFILE              =21;
  1962.    SPTR_PROGRAM               =22;
  1963.    SPTR_DISPLAY_PTRS          =22;
  1964.    SPTR_PENFIRST              =23;
  1965.    SPTR_PENLAST               =39;
  1966.    SPTR_CPTR                  =39;
  1967.  
  1968.    SPTR_HANDICON              =SPTR_ICONERROR;
  1969.    SPTR_QUESICON              =SPTR_ICONQUESTION;
  1970.    SPTR_BANGICON              =SPTR_ICONWARNING;
  1971.    SPTR_NOTEICON              =SPTR_ICONINFORMATION;
  1972.  
  1973.  
  1974. TYPE
  1975.    PPOINTERINFO=^POINTERINFO;
  1976.    POINTERINFO=RECORD
  1977.                      fPointer:ULONG;
  1978.                      xHotspot:LONG;
  1979.                      yHotspot:LONG;
  1980.                      hbmPointer:HBITMAP;
  1981.                      hbmColor:HBITMAP;
  1982.                      hbmMiniPointer:HBITMAP;
  1983.                      hbmMiniColor:HBITMAP;
  1984.                END;
  1985.  
  1986. { WinDrawPointer() constants }
  1987.  
  1988. CONST
  1989.    DP_NORMAL                  =$0000;
  1990.    DP_HALFTONED               =$0001;
  1991.    DP_INVERTED                =$0002;
  1992.  
  1993.  
  1994.  
  1995. { System bitmaps (NOTE: these are 1-based) }
  1996. CONST
  1997.    SBMP_OLD_SYSMENU           =1;
  1998.    SBMP_OLD_SBUPARROW         =2;
  1999.    SBMP_OLD_SBDNARROW         =3;
  2000.    SBMP_OLD_SBRGARROW         =4;
  2001.    SBMP_OLD_SBLFARROW         =5;
  2002.    SBMP_MENUCHECK             =6;
  2003.    SBMP_OLD_CHECKBOXES        =7;
  2004.    SBMP_BTNCORNERS            =8;
  2005.    SBMP_OLD_MINBUTTON         =9;
  2006.    SBMP_OLD_MAXBUTTON         =10;
  2007.    SBMP_OLD_RESTOREBUTTON     =11;
  2008.    SBMP_OLD_CHILDSYSMENU      =12;
  2009.    SBMP_DRIVE                 =15;
  2010.    SBMP_FILE                  =16;
  2011.    SBMP_FOLDER                =17;
  2012.    SBMP_TREEPLUS              =18;
  2013.    SBMP_TREEMINUS             =19;
  2014.    SBMP_PROGRAM               =22;
  2015.    SBMP_MENUATTACHED          =23;
  2016.    SBMP_SIZEBOX               =24;
  2017.  
  2018.    SBMP_SYSMENU               =25;
  2019.    SBMP_MINBUTTON             =26;
  2020.    SBMP_MAXBUTTON             =27;
  2021.    SBMP_RESTOREBUTTON         =28;
  2022.    SBMP_CHILDSYSMENU          =29;
  2023.    SBMP_SYSMENUDEP            =30;
  2024.    SBMP_MINBUTTONDEP          =31;
  2025.    SBMP_MAXBUTTONDEP          =32;
  2026.    SBMP_RESTOREBUTTONDEP      =33;
  2027.    SBMP_CHILDSYSMENUDEP       =34;
  2028.    SBMP_SBUPARROW             =35;
  2029.    SBMP_SBDNARROW             =36;
  2030.    SBMP_SBLFARROW             =37;
  2031.    SBMP_SBRGARROW             =38;
  2032.    SBMP_SBUPARROWDEP          =39;
  2033.    SBMP_SBDNARROWDEP          =40;
  2034.    SBMP_SBLFARROWDEP          =41;
  2035.    SBMP_SBRGARROWDEP          =42;
  2036.    SBMP_SBUPARROWDIS          =43;
  2037.    SBMP_SBDNARROWDIS          =44;
  2038.    SBMP_SBLFARROWDIS          =45;
  2039.    SBMP_SBRGARROWDIS          =46;
  2040.    SBMP_COMBODOWN             =47;
  2041.    SBMP_CHECKBOXES            =48;
  2042.  
  2043.  
  2044.       {**********************************************************************
  2045.       * Hook codes
  2046.       *
  2047.       * Whether the hook receives a (U)SHORT or (U)LONG parameter depends
  2048.       * on the memory model that the hook executes in. 32-bit hook will
  2049.       * receive long parameters
  2050.       *
  2051.       **********************************************************************}
  2052.  
  2053. CONST
  2054.       HK_SENDMSG                 =0;
  2055.       {* VOID EXPENTRY SendMsgHook(HAB hab,             ** installer's hab
  2056.       *                            PSMHSTRUCT psmh,     ** p send msg struct
  2057.       *                            BOOL fInterTask);    ** between threads *}
  2058.  
  2059.       HK_INPUT                   =1;
  2060.       {* BOOL EXPENTRY InputHook(HAB hab,               ** installer's hab
  2061.       *                          PQMSG pQmsg,           ** p qmsg
  2062.       *                          ULONG/USHORT fs);      ** remove/noremove *}
  2063.  
  2064.       HK_MSGFILTER               =2;
  2065.       {* BOOL EXPENTRY MsgFilterHook(HAB hab,           ** installer's hab
  2066.       *                              PQMSG pQmsg,       ** p qmsg
  2067.       *                              ULONG/USHORT msgf);** filter flag *}
  2068.  
  2069.       HK_JOURNALRECORD           =3;
  2070.       {* VOID EXPENTRY JournalRecordHook(HAB hab,       ** installer's hab
  2071.       *                                  PQMSG pQmsg);  ** p qmsg *}
  2072.  
  2073.       HK_JOURNALPLAYBACK         =4;
  2074.       {* ULONG EXPENTRY JournalPlaybackHook(HAB hab,    **installer's hab
  2075.       *                                     BOOL fSkip, ** skip messages
  2076.       *                                     PQMSG pQmsg);** p qmsg *}
  2077.  
  2078.       HK_HELP                    =5;
  2079.       {* BOOL EXPENTRY HelpHook(HAB hab,                 ** installer's hab
  2080.       *                         ULONG/USHORT usMode,     ** mode
  2081.       *                         ULONG/USHORT idTopic,    ** main topic
  2082.       *                         ULONG/USHORT idSubTopic, ** sub topic
  2083.       *                         PRECTL prcPosition);     ** associated position *}
  2084.  
  2085.       HK_LOADER                  =6;
  2086.       {* BOOL EXPENTRY LoaderHook(HAB hab,               ** installer's hab
  2087.       *                           LONG/USHORT idContext, ** who called hook
  2088.       *                           CSTRING pszLibname,        ** lib name string
  2089.       *                           PHLIB hlib,            ** p to lib handle
  2090.       *                           CSTRING pszProcname,       ** procedure name
  2091.       *                           PFNWP wndProc);        ** window procedure *}
  2092.  
  2093.       HK_REGISTERUSERMSG         =7;
  2094.       {* BOOL EXPENTRY RegisterUserHook(HAB hab,         ** installer's hab
  2095.       *                                 ULONG cUSHORT,   ** entries in arRMP
  2096.       *                                 PULONG/PUSHORT arRMP, ** RMP array
  2097.       *                                 PBOOL fRegistered);** msg parms already reg*}
  2098.  
  2099.       HK_MSGCONTROL              =8;
  2100.       {* BOOL EXPENTRY MsgControlHook(HAB hab,            ** installer's hab
  2101.       *                               LONG/SHORT idContext,** who called hook
  2102.       *                               HWND hwnd,          ** SEI window handle
  2103.       *                               CSTRING pszClassname,   ** window class name
  2104.       *                               ULONG/USHORT usMsgclass,** interested msg class **
  2105.       *                               LONG/SHORT idControl,** SMI_*
  2106.       *                               PBOOL fSuccess);    ** mode already set *}
  2107.  
  2108.       HK_PLIST_ENTRY             =9;
  2109.       {* BOOL EXPENTRY ProgramListEntryHook(HAB hab,      ** installer's hab
  2110.       *                                     PPRFHOOKPARMS pProfileHookParams,** data
  2111.       *                                     PBOOL fNoExecute);  ** cease hook processing*}
  2112.  
  2113.       HK_PLIST_EXIT              =10;
  2114.       {* BOOL EXPENTRY ProgramListExitHook(HAB hab,       ** installer's hab
  2115.       *                                    PPRFHOOKPARMS pProfileHookParams);** data*}
  2116.  
  2117.       HK_FINDUSHORT                =11;
  2118.       {* BOOL EXPENTRY FindWordHook(usCodepage,           ** code page to use
  2119.       *                             CSTRING pszText,          ** text to break
  2120.       *                             ULONG cb,             ** maximum text size
  2121.       *                             ULONG ich,            ** break 'near' here
  2122.       *                             PULONG pichStart,     ** where break began
  2123.       *                             PULONG pichEnd,       ** where break ended
  2124.       *                             PULONG pichNext);     ** where next word begin*}
  2125.  
  2126.       HK_CODEPAGECHANGED         =12;
  2127.       {* VOID EXPENTRY CodePageChangedHook(HMQ hmq,       ** msg q handle
  2128.       *                                    ULONG/USHORT usOldCodepage, ** old code page
  2129.       *                                    ULONG/USHORT usNewCodepage);** new code page*}
  2130.  
  2131.       HK_WINDOWDC                =15;
  2132.       {* BOOL EXPENTRY WindowDCHook(HAB  hab,             ** installer's hab
  2133.       *                             HDC  hdc,             ** current hdc
  2134.       *                             HWND hwnd,            ** current hwnd
  2135.       *                             BOOL);                ** association flag *}
  2136.  
  2137.       HK_DESTROYWINDOW           =16;
  2138.       {* BOOL EXPENTRY DestroyWindowHook (HAB  hab,       ** installer's hab
  2139.       *                                   HWND hwnd,      ** destroyed win hwnd
  2140.       *                                   ULONG Reserved);** association flag  *}
  2141.  
  2142.       HK_CHECKMSGFILTER          =20;
  2143.       {* BOOL EXPENTRY CheckMsgFilteHook (HAB  hab,       ** installer's hab
  2144.       *                                   PQMSG pQmsg,    ** p qmsg
  2145.       *                                   ULONG/USHORT usFirst,  ** first msg
  2146.       *                                   ULONG/USHORT usLast,   ** last msg
  2147.       *                                   ULONG/USHORT fOptions);** flags  *}
  2148.  
  2149.       HK_MSGINPUT                =21;
  2150.       {* BOOL EXPENTRY MsgInputHook (HAB  hab,          ** installer's hab
  2151.       *                              PQMSG pQmsg,       ** p qmsg
  2152.       *                              BOOL fSkip,        ** skip msg
  2153.       *                              PBOOL pfNoRecord); ** journal record event *}
  2154.  
  2155.       HK_LOCKUP                  =23;
  2156.       {* BOOL EXPENTRY LockupHook (HAB  hab,              ** installer's hab
  2157.       *                           HWND hwndLockupFrame); ** hwnd     *}
  2158.  
  2159.       HK_FLUSHBUF                =24;
  2160.       {* BOOL EXPENTRY FlushBufHook (HAB  hab);           ** installer's hab *}
  2161.  
  2162.  
  2163. { Current message queue constant }
  2164.  
  2165. CONST
  2166.      HMQ_CURRENT          =1;
  2167.  
  2168. { WH_MSGFILTER context codes }
  2169.  
  2170. CONST
  2171.      MSGF_DIALOGBOX             =1;
  2172.      MSGF_MESSAGEBOX            =2;
  2173.      MSGF_TRACK                 =8;
  2174.      MSGF_DDEPOSTMSG            =3;
  2175.  
  2176. { HK_HELP Help modes }
  2177.  
  2178. CONST
  2179.      HLPM_FRAME              =-1;
  2180.      HLPM_WINDOW             =-2;
  2181.      HLPM_MENU               =-3;
  2182.  
  2183. { HK_SENDMSG structure }
  2184.  
  2185. CONST
  2186.      PM_MODEL_1X      =0;
  2187.      PM_MODEL_2X      =1;
  2188.  
  2189. TYPE
  2190.      PSMHSTRUCT=^SMHSTRUCT;
  2191.      SMHSTRUCT=RECORD
  2192.                    mp2:MPARAM;
  2193.                    mp1:MPARAM;
  2194.                    msg:ULONG;
  2195.                    hwnd:HWND;
  2196.                    model:ULONG;
  2197.                 END;
  2198.  
  2199. { HK_LOADER context codes }
  2200.  
  2201. CONST
  2202.      LHK_DELETEPROC             =1;
  2203.      LHK_DELETELIB              =2;
  2204.      LHK_LOADPROC               =3;
  2205.      LHK_LOADLIB                =4;
  2206.  
  2207. { HK_MSGCONTROL context codes }
  2208.  
  2209. CONST
  2210.      MCHK_MSGINTEREST           =1;
  2211.      MCHK_CLASSMSGINTEREST      =2;
  2212.      MCHK_SYNCHRONISATION       =3;
  2213.      MCHK_MSGMODE               =4;
  2214.  
  2215. { HK_REGISTERUSERMSG conext codes }
  2216.  
  2217. CONST
  2218.      RUMHK_DATATYPE             =1;
  2219.      RUMHK_MSG                  =2;
  2220.  
  2221. CONST
  2222.      WCS_ERROR                  =0;
  2223.      WCS_EQ                     =1;
  2224.      WCS_LT                     =2;
  2225.      WCS_GT                     =3;
  2226.  
  2227.  
  2228. TYPE
  2229.     HATOMTBL=LHANDLE;
  2230.     ATOM=ULONG;
  2231.  
  2232. { Error codes for debugging support }
  2233. { =$1001 - =$1021, =$1034, =$1036 - =$1050 are reserved }
  2234. CONST
  2235.    WINDBG_HWND_NOT_DESTROYED           =$1022;
  2236.    WINDBG_HPTR_NOT_DESTROYED           =$1023;
  2237.    WINDBG_HACCEL_NOT_DESTROYED         =$1024;
  2238.    WINDBG_HENUM_NOT_DESTROYED          =$1025;
  2239.    WINDBG_VISRGN_SEM_BUSY              =$1026;
  2240.    WINDBG_USER_SEM_BUSY                =$1027;
  2241.    WINDBG_DC_CACHE_BUSY                =$1028;
  2242.    WINDBG_HOOK_STILL_INSTALLED         =$1029;
  2243.    WINDBG_WINDOW_STILL_LOCKED          =$102a;
  2244.    WINDBG_UPDATEPS_ASSERTION_FAIL      =$102b;
  2245.    WINDBG_SENDMSG_WITHIN_USER_SEM      =$102c;
  2246.    WINDBG_USER_SEM_NOT_ENTERED         =$102d;
  2247.    WINDBG_PROC_NOT_EXPORTED            =$102e;
  2248.    WINDBG_BAD_SENDMSG_HWND             =$102f;
  2249.    WINDBG_ABNORMAL_EXIT                =$1030;
  2250.    WINDBG_INTERNAL_REVISION            =$1031;
  2251.    WINDBG_INITSYSTEM_FAILED            =$1032;
  2252.    WINDBG_HATOMTBL_NOT_DESTROYED       =$1033;
  2253.    WINDBG_WINDOW_UNLOCK_WAIT           =$1035;
  2254.  
  2255. { Get/Set Error Information Interface declarations }
  2256.  
  2257. TYPE
  2258.     PERRINFO=^ERRINFO;
  2259.     ERRINFO=RECORD
  2260.                   cbFixedErrInfo:ULONG;
  2261.                   idError:ERRORID;
  2262.                   cDetailLevel:ULONG;
  2263.                   offaoffszMsg:ULONG;
  2264.                   offBinaryData:ULONG;
  2265.             END;
  2266.  
  2267.  
  2268. { DDE standard system topic and item strings }
  2269. CONST
  2270.      SZDDESYS_TOPIC                  ='System';
  2271.      SZDDESYS_ITEM_TOPICS            ='Topics';
  2272.      SZDDESYS_ITEM_SYSITEMS          ='SysItems';
  2273.      SZDDESYS_ITEM_RTNMSG            ='ReturnMessage';
  2274.      SZDDESYS_ITEM_STATUS            ='Status';
  2275.      SZDDESYS_ITEM_FORMATS           ='Formats';
  2276.      SZDDESYS_ITEM_SECURITY          ='Security';
  2277.      SZDDESYS_ITEM_ITEMFORMATS       ='ItemFormats';
  2278.      SZDDESYS_ITEM_HELP              ='Help';
  2279.      SZDDESYS_ITEM_PROTOCOLS         ='Protocols';
  2280.      SZDDESYS_ITEM_RESTART           ='Restart';
  2281.  
  2282. TYPE
  2283.      PCONVCONTEXT=^CONVCONTEXT;
  2284.      CONVCONTEXT=RECORD
  2285.                       cb:ULONG;
  2286.                       fsContext:ULONG;
  2287.                       idCountry:ULONG;
  2288.                       usCodepage:ULONG;
  2289.                       usLangID:ULONG;
  2290.                       usSubLangID:ULONG;
  2291.                 END;
  2292.  
  2293. CONST
  2294.      DDECTXT_CASESENSITIVE    =$0001;
  2295.  
  2296. TYPE
  2297.      PDDEINIT=^DDEINIT;
  2298.      DDEINIT=RECORD
  2299.                   cb:ULONG;
  2300.                   pszAppName:PCHAR;
  2301.                   pszTopic:PCHAR;
  2302.                   offConvContext:ULONG;
  2303.              END;
  2304.  
  2305.      PDDESTRUCT=^DDESTRUCT;
  2306.      DDESTRUCT=RECORD
  2307.                     cbData:ULONG;
  2308.                     fsStatus:USHORT;
  2309.                     usFormat:USHORT;
  2310.                     offszItemName:USHORT;
  2311.                     offabData:USHORT;
  2312.                END;
  2313.  
  2314. { DDE constants for wStatus field }
  2315.  
  2316. CONST
  2317.      DDE_FACK                   =$0001;
  2318.      DDE_FBUSY                  =$0002;
  2319.      DDE_FNODATA                =$0004;
  2320.      DDE_FACKREQ                =$0008;
  2321.      DDE_FRESPONSE              =$0010;
  2322.      DDE_NOTPROCESSED           =$0020;
  2323.      DDE_FRESERVED              =$00C0;
  2324.      DDE_FAPPSTATUS             =$FF00;
  2325.  
  2326.      DDEFMT_TEXT                =$0001;
  2327.  
  2328.  
  2329. CONST
  2330.      DDEPM_RETRY     =$00000001;
  2331.      DDEPM_NOFREE    =$00000002;
  2332.  
  2333. { Dynamic Data Exchange (DDE) Messages }
  2334.  
  2335. CONST
  2336.      WM_DDE_FIRST               =$00A0;
  2337.      WM_DDE_INITIATE            =$00A0;
  2338.      WM_DDE_REQUEST             =$00A1;
  2339.      WM_DDE_ACK                 =$00A2;
  2340.      WM_DDE_DATA                =$00A3;
  2341.      WM_DDE_ADVISE              =$00A4;
  2342.      WM_DDE_UNADVISE            =$00A5;
  2343.      WM_DDE_POKE                =$00A6;
  2344.      WM_DDE_EXECUTE             =$00A7;
  2345.      WM_DDE_TERMINATE           =$00A8;
  2346.      WM_DDE_INITIATEACK         =$00A9;
  2347.      WM_DDE_LAST                =$00AF;
  2348.  
  2349.  
  2350. { Return values for WM_QUERYCONVERTPOS }
  2351.  
  2352. CONST
  2353.    QCP_CONVERT                =$0001;
  2354.    QCP_NOCONVERT              =$0000;
  2355.  
  2356. TYPE
  2357.     HLIB=HMODULE;
  2358.  
  2359. { Desktop API definitions }
  2360. TYPE
  2361.     PDESKTOP=^DESKTOP;
  2362.     DESKTOP=RECORD
  2363.                   cbSize:ULONG;
  2364.                   hbm:HBITMAP;
  2365.                   x:LONG;
  2366.                   y:LONG;
  2367.                   fl:ULONG;
  2368.                   lTileCount:LONG;
  2369.                   szFile:CSTRING[260];
  2370.             END;
  2371.  
  2372. CONST
  2373.      SDT_DESTROY         =$0001;
  2374.      SDT_NOBKGND         =$0002;
  2375.      SDT_TILE            =$0004;
  2376.      SDT_SCALE           =$0008;
  2377.      SDT_PATTERN         =$0010;
  2378.      SDT_CENTER          =$0020;
  2379.      SDT_RETAIN          =$0040;
  2380.      SDT_LOADFILE        =$0080;
  2381.  
  2382. CONST
  2383.    WM_DBCSFIRST          =$00b0;
  2384.    WM_DBCSLAST           =$00cf;
  2385.    WM_QUERYCONVERTPOS    =WM_DBCSFIRST;   
  2386.  
  2387.  
  2388. { Standard Window Classes}
  2389.  
  2390. CONST
  2391.      WC_FRAME            =$ffff0001;
  2392.      WC_COMBOBOX         =$ffff0002;
  2393.      WC_BUTTON           =$ffff0003;
  2394.      WC_MENU             =$ffff0004;
  2395.      WC_STATIC           =$ffff0005;
  2396.      WC_ENTRYFIELD       =$ffff0006;
  2397.      WC_LISTBOX          =$ffff0007;
  2398.      WC_SCROLLBAR        =$ffff0008;
  2399.      WC_TITLEBAR         =$ffff0009;
  2400.      WC_MLE              =$ffff000A;
  2401.      { 000B to 000F reserved }
  2402.      WC_APPSTAT          =$ffff0010;
  2403.      WC_KBDSTAT          =$ffff0011;
  2404.      WC_PECIC            =$ffff0012;
  2405.      WC_DBE_KKPOPUP      =$ffff0013;
  2406.      { 0014 to 001F reserved }
  2407.      WC_SPINBUTTON       =$ffff0020;
  2408.      { 0021 to 0024 reserved }
  2409.      WC_CONTAINER        =$ffff0025;
  2410.      WC_SLIDER           =$ffff0026;
  2411.      WC_VALUESET         =$ffff0027;
  2412.      WC_NOTEBOOK         =$ffff0028;
  2413.      { 0029 to 002C used by PEN }
  2414.      WC_PENFIRST         =$ffff0029;
  2415.      WC_PENLAST          =$ffff002C;
  2416.      { 002D to 0030 reserved }
  2417.      { 0030 to 003F reserved }
  2418.      WC_MMPMFIRST        =$ffff0040;
  2419.      WC_MMPMLAST         =$ffff004f;
  2420.  
  2421.  
  2422.  
  2423. CONST
  2424.      MPVOID:MPARAM=0;
  2425.  
  2426. {*************************************************************************
  2427.  * MLE Window styles ( in addition to WS_* )
  2428.  *************************************************************************}
  2429. CONST
  2430.     MLS_WORDWRAP               =$00000001;
  2431.     MLS_BORDER                 =$00000002;
  2432.     MLS_VSCROLL                =$00000004;
  2433.     MLS_HSCROLL                =$00000008;
  2434.     MLS_READONLY               =$00000010;
  2435.     MLS_IGNORETAB              =$00000020;
  2436.     MLS_DISABLEUNDO            =$00000040;
  2437.  
  2438. {************************************************************************
  2439.  * MLE External Data Types
  2440.  ************************************************************************}
  2441.  
  2442. TYPE
  2443.     IPT=LONG;        { insertion point         }
  2444.     PIPT=PLONG;      { insertion point         }
  2445.     PIX=LONG;        { pixel                   }
  2446.     LINE=ULONG;      { Line number             }
  2447.  
  2448.     PMLEFORMATRECT=^MLEFORMATRECT;
  2449.     MLEFORMATRECT=RECORD
  2450.                      cxFormat:LONG;     { format rectangle width  }
  2451.                      cyFormat:LONG;     { format rectangle height }
  2452.                   END;
  2453.  
  2454.     PMLECTLDATA=^MLECTLDATA;
  2455.     MLECTLDATA=RECORD
  2456.                      cbCtlData:USHORT;  { Length of the MLECTLDATA structure  }
  2457.                      afIEFormat:USHORT; { import/export format                }
  2458.                      cchText:ULONG;     { text limit                          }
  2459.                      iptAnchor:IPT;     { beginning of selection              }
  2460.                      iptCursor:IPT;     { ending of selection                 }
  2461.                      cxFormat:LONG;     { format rectangle width              }
  2462.                      cyFormat:LONG;     { format rectangle height             }
  2463.                      afFormatFlags:ULONG;  { formatting rectangle flags          }
  2464.                END;
  2465.  
  2466. {************************************************************************
  2467.  * afFormatFlags mask
  2468.  ************************************************************************}
  2469. CONST
  2470.      MLFFMTRECT_LIMITHORZ       =$00000001;
  2471.      MLFFMTRECT_LIMITVERT       =$00000002;
  2472.      MLFFMTRECT_MATCHWINDOW     =$00000004;
  2473.      MLFFMTRECT_FORMATRECT      =$00000007;
  2474.  
  2475. {************************************************************************
  2476.  * afIEFormat - Import/Export Format flags
  2477.  ************************************************************************}
  2478.      MLFIE_CFTEXT               =0;
  2479.      MLFIE_NOTRANS              =1;
  2480.      MLFIE_WINFMT               =2;
  2481.      MLFIE_RTF                  =3;
  2482.  
  2483. {************************************************************************
  2484.  * MLN_OVERFLOW structure
  2485.  ************************************************************************}
  2486. TYPE
  2487.    PMLEOVERFLOW=^MLEOVERFLOW;
  2488.    MLEOVERFLOW=RECORD
  2489.                     afErrInd:ULONG;  { see mask below                         }
  2490.                     nBytesOver:LONG; { number of bytes overflowed             }
  2491.                     pixHorzOver:LONG;{ number of pixels horizontally overflow }
  2492.                     pixVertOver:LONG;{ number of pixels vertically overflowed }
  2493.                END;
  2494.  
  2495. {************************************************************************
  2496.  * afErrInd - error format rectangle flags
  2497.  ************************************************************************}
  2498. CONST
  2499.      MLFEFR_RESIZE              =$00000001;
  2500.      MLFEFR_TABSTOP             =$00000002;
  2501.      MLFEFR_FONT                =$00000004;
  2502.      MLFEFR_TEXT                =$00000008;
  2503.      MLFEFR_WORDWRAP            =$00000010;
  2504.      MLFETL_TEXTBYTES           =$00000020;
  2505.  
  2506. {************************************************************************
  2507.  * MLN_MARGIN structure
  2508.  ************************************************************************}
  2509. TYPE
  2510.    PMLEMARGSTRUCT=^MLEMARGSTRUCT;
  2511.    MLEMARGSTRUCT=RECORD
  2512.                   afMargins:USHORT;      { margin indicator     }
  2513.                   usMouMsg:USHORT;       { mouse message        }
  2514.                   iptNear:IPT;           { the geometrically nearest insertion point }
  2515.                  END;
  2516.  
  2517. {************************************************************************
  2518.  * afFlags - margin notification indicators
  2519.  ************************************************************************}
  2520. CONST
  2521.      MLFMARGIN_LEFT             =$0001;
  2522.      MLFMARGIN_BOTTOM           =$0002;
  2523.      MLFMARGIN_RIGHT            =$0003;
  2524.      MLFMARGIN_TOP              =$0004;
  2525.  
  2526. {************************************************************************
  2527.  * MLM_QUERYSELECTION flags
  2528.  ************************************************************************}
  2529.      MLFQS_MINMAXSEL            =0;
  2530.      MLFQS_MINSEL               =1;
  2531.      MLFQS_MAXSEL               =2;
  2532.      MLFQS_ANCHORSEL            =3;
  2533.      MLFQS_CURSORSEL            =4;
  2534.  
  2535. {************************************************************************
  2536.  * MLN_CLPBDFAIL flags
  2537.  ************************************************************************}
  2538.      MLFCLPBD_TOOMUCHTEXT       =$00000001;
  2539.      MLFCLPBD_ERROR             =$00000002;
  2540.  
  2541. {************************************************************************
  2542.  * MLM_SEARCH structure
  2543.  ************************************************************************}
  2544. TYPE
  2545.    PMLE_SEARCHDATA=^MLE_SEARCHDATA;
  2546.    MLE_SEARCHDATA=RECORD
  2547.                     cb:ULONG; {USHORT ?} { size of search spec structure    }
  2548.                     pchFind:PCHAR;    { string to search for                }
  2549.                     pchReplace:PCHAR; { string to replace with              }
  2550.                     cchFind:SHORT;    { length of pchFindString             }
  2551.                     cchReplace:SHORT; { length of replace string            }
  2552.                     iptStart:IPT;     { point at which to start search      }
  2553.                     iptStop:IPT;      { point at which to stop search       }
  2554.                     cchFound:USHORT;  { Length of found string at iptStart  }
  2555.                   END;
  2556.  
  2557. {************************************************************************
  2558.  * MLM_SEARCH style flags
  2559.  ************************************************************************}
  2560. CONST
  2561.      MLFSEARCH_CASESENSITIVE    =$00000001;
  2562.      MLFSEARCH_SELECTMATCH      =$00000002;
  2563.      MLFSEARCH_CHANGEALL        =$00000004;
  2564.  
  2565. {************************************************************************
  2566.  * MLE messages - MLM from =$01b0 to =$01de; MLN from =$0001 to =$000f
  2567.  ************************************************************************}
  2568.    { formatting messages }
  2569.      MLM_SETTEXTLIMIT           =$01b0;
  2570.      MLM_QUERYTEXTLIMIT         =$01b1;
  2571.      MLM_SETFORMATRECT          =$01b2;
  2572.      MLM_QUERYFORMATRECT        =$01b3;
  2573.      MLM_SETWRAP                =$01b4;
  2574.      MLM_QUERYWRAP              =$01b5;
  2575.      MLM_SETTABSTOP             =$01b6;
  2576.      MLM_QUERYTABSTOP           =$01b7;
  2577.      MLM_SETREADONLY            =$01b8;
  2578.      MLM_QUERYREADONLY          =$01b9;
  2579.  
  2580.    { text content manipulation and queries messages }
  2581.      MLM_QUERYCHANGED           =$01ba;
  2582.      MLM_SETCHANGED             =$01bb;
  2583.      MLM_QUERYLINECOUNT         =$01bc;
  2584.      MLM_CHARFROMLINE           =$01bd;
  2585.      MLM_LINEFROMCHAR           =$01be;
  2586.      MLM_QUERYLINELENGTH        =$01bf;
  2587.      MLM_QUERYTEXTLENGTH        =$01c0;
  2588.  
  2589.    { text import and export messages }
  2590.      MLM_FORMAT                 =$01c1;
  2591.      MLM_SETIMPORTEXPORT        =$01c2;
  2592.      MLM_IMPORT                 =$01c3;
  2593.      MLM_EXPORT                 =$01c4;
  2594.      MLM_DELETE                 =$01c6;
  2595.      MLM_QUERYFORMATLINELENGTH  =$01c7;
  2596.      MLM_QUERYFORMATTEXTLENGTH  =$01c8;
  2597.      MLM_INSERT                 =$01c9;
  2598.  
  2599.    { selection messages }
  2600.      MLM_SETSEL                 =$01ca;
  2601.      MLM_QUERYSEL               =$01cb;
  2602.      MLM_QUERYSELTEXT           =$01cc;
  2603.  
  2604.    { undo and redo messages }
  2605.      MLM_QUERYUNDO              =$01cd;
  2606.      MLM_UNDO                   =$01ce;
  2607.      MLM_RESETUNDO              =$01cf;
  2608.  
  2609.    { text attributes messages }
  2610.      MLM_QUERYFONT              =$01d0;
  2611.      MLM_SETFONT                =$01d1;
  2612.      MLM_SETTEXTCOLOR           =$01d2;
  2613.      MLM_QUERYTEXTCOLOR         =$01d3;
  2614.      MLM_SETBACKCOLOR           =$01d4;
  2615.      MLM_QUERYBACKCOLOR         =$01d5;
  2616.  
  2617.    { scrolling messages }
  2618.      MLM_QUERYFIRSTCHAR         =$01d6;
  2619.      MLM_SETFIRSTCHAR           =$01d7;
  2620.  
  2621.    { clipboard messages }
  2622.      MLM_CUT                    =$01d8;
  2623.      MLM_COPY                   =$01d9;
  2624.      MLM_PASTE                  =$01da;
  2625.      MLM_CLEAR                  =$01db;
  2626.  
  2627.    { display manipulation messages }
  2628.      MLM_ENABLEREFRESH          =$01dc;
  2629.      MLM_DISABLEREFRESH         =$01dd;
  2630.  
  2631.    { search message }
  2632.      MLM_SEARCH                 =$01de;
  2633.      MLM_QUERYIMPORTEXPORT      =$01df;
  2634.  
  2635.    { notification messages }
  2636.      MLN_OVERFLOW               =$0001;
  2637.      MLN_PIXHORZOVERFLOW        =$0002;
  2638.      MLN_PIXVERTOVERFLOW        =$0003;
  2639.      MLN_TEXTOVERFLOW           =$0004;
  2640.      MLN_VSCROLL                =$0005;
  2641.      MLN_HSCROLL                =$0006;
  2642.      MLN_CHANGE                 =$0007;
  2643.      MLN_SETFOCUS               =$0008;
  2644.      MLN_KILLFOCUS              =$0009;
  2645.      MLN_MARGIN                 =$000a;
  2646.      MLN_SEARCHPAUSE            =$000b;
  2647.      MLN_MEMERROR               =$000c;
  2648.      MLN_UNDOOVERFLOW           =$000d;
  2649.      MLN_CLPBDFAIL              =$000f;
  2650.  
  2651. IMPORTS
  2652.  
  2653. FUNCTION WinRegisterClass(ahab:HAB;pszClassName:CSTRING;pfnWndProc:POINTER;
  2654.                           flStyle,cbWindowData:ULONG):BOOL;
  2655.                           APIENTRY;             'PMWIN' index 926;
  2656. FUNCTION WinDefWindowProc(ahwnd:HWND;msg:ULONG;mp1,mp2:MPARAM):ULONG;
  2657.                           APIENTRY;             'PMWIN' index 911;
  2658. FUNCTION WinDestroyWindow(ahwnd:HWND):BOOL;
  2659.                           APIENTRY;             'PMWIN' index 728;
  2660. FUNCTION WinShowWindow(ahwnd:HWND;fShow:BOOL):BOOL;
  2661.                           APIENTRY;             'PMWIN' index 883;
  2662. FUNCTION WinQueryWindowRect(ahwnd:HWND;VAR prclDest:RECTL):BOOL;
  2663.                           APIENTRY;             'PMWIN' index 840;
  2664. FUNCTION WinGetPS(ahwnd:HWND):HPS;
  2665.                           APIENTRY;             'PMWIN' index 757;
  2666. FUNCTION WinReleasePS(ahps:HPS):BOOL;
  2667.                           APIENTRY;             'PMWIN' index 848;
  2668. FUNCTION WinEndPaint(ahps:HPS):BOOL;
  2669.                           APIENTRY;             'PMWIN' index 738;
  2670. FUNCTION WinGetClipPS(ahwnd,hwndClip:HWND;fl:ULONG):HPS;
  2671.                           APIENTRY;             'PMWIN' index 749;
  2672. FUNCTION WinIsWindowShowing(ahwnd:HWND):BOOL;
  2673.                           APIENTRY;             'PMWIN' index 774;
  2674. FUNCTION WinBeginPaint(ahwnd:HWND;ahps:HPS;VAR prclPaint:RECTL):HPS;
  2675.                           APIENTRY;             'PMWIN' index 703;
  2676. FUNCTION WinOpenWindowDC(ahwnd:HWND):HDC;
  2677.                           APIENTRY;             'PMWIN' index 794;
  2678. FUNCTION WinScrollWindow(ahwnd:HWND;dx,dy:LONG;CONST prclScroll,prclClip:RECTL;
  2679.                          hrgnUpdate:HRGN;VAR prclUpdate:RECTL;
  2680.                          rgfsw:ULONG):LONG;
  2681.                           APIENTRY;             'PMWIN' index 849;
  2682. FUNCTION WinFillRect(ahps:HPS;CONST prcl:RECTL;lColor:LONG):BOOL;
  2683.                           APIENTRY;             'PMWIN' index 743;
  2684. FUNCTION WinQueryVersion(ahab:HAB):ULONG;
  2685.                           APIENTRY;             'PMWIN' index 833;
  2686. FUNCTION WinQueryAnchorBlock(ahwnd:HWND):HAB;
  2687.                           APIENTRY;             'PMWIN' index 800;
  2688. FUNCTION WinCreateWindow(hwndParent:HWND;pszClass:CSTRING;pszName:CSTRING;
  2689.                          flStyle:ULONG;x,y,cx,cy:LONG;hwndOwner,
  2690.                          hwndInsertBehind:HWND;id:ULONG;pCtlData,
  2691.                          pPresParams:POINTER):HWND;
  2692.                           APIENTRY;             'PMWIN' index 909;
  2693. FUNCTION WinCreateWCWindow(hwndParent:HWND;pszClass:ULONG;pszName:CSTRING;
  2694.                            flStyle:ULONG;x,y,cx,cy:LONG;hwndOwner,
  2695.                            hwndInsertBehind:HWND;id:ULONG;pCtlData,
  2696.                            pPresParams:PVOID):HWND;
  2697.                               APIENTRY;             'PMWIN' index 909;
  2698. FUNCTION WinEnableWindow(ahwnd:HWND;fEnable:BOOL):BOOL;
  2699.                           APIENTRY;             'PMWIN' index 735;
  2700. FUNCTION WinIsWindowEnabled(ahwnd:HWND):BOOL;
  2701.                           APIENTRY;             'PMWIN' index 773;
  2702. FUNCTION WinEnableWindowUpdate(ahwnd:HWND;fEnable:BOOL):BOOL;
  2703.                           APIENTRY;             'PMWIN' index 736;
  2704. FUNCTION WinIsWindowVisible(ahwnd:HWND):BOOL;
  2705.                           APIENTRY;             'PMWIN' index 775;
  2706. FUNCTION WinQueryWindowText(ahwnd:HWND;cchBufferMax:LONG;VAR pchBuffer):LONG;
  2707.                           APIENTRY;             'PMWIN' index 841;
  2708. FUNCTION WinSetWindowText(ahwnd:HWND;pszText:CSTRING):BOOL;
  2709.                           APIENTRY;             'PMWIN' index 877;
  2710. FUNCTION WinQueryWindowTextLength(ahwnd:HWND):LONG;
  2711.                           APIENTRY;             'PMWIN' index 842;
  2712. FUNCTION WinWindowFromID(hwndParent:HWND;id:ULONG):HWND;
  2713.                           APIENTRY;             'PMWIN' index 899;
  2714. FUNCTION WinIsWindow(ahab:HAB;ahwnd:HWND):BOOL;
  2715.                           APIENTRY;             'PMWIN' index 772;
  2716. FUNCTION WinQueryWindow(ahwnd:HWND;cmd:LONG):HWND;
  2717.                           APIENTRY;             'PMWIN' index 834;
  2718. FUNCTION WinMultWindowFromIDs(hwndParent:HWND;VAR prghwnd:HWND;
  2719.                               idFirst,idLast:ULONG):LONG;
  2720.                           APIENTRY;             'PMWIN' index 917;
  2721. FUNCTION WinSetParent(ahwnd,hwndNewParent:HWND;fRedraw:BOOL):BOOL;
  2722.                           APIENTRY;             'PMWIN' index 865;
  2723. FUNCTION WinIsChild(ahwnd,hwndParent:HWND):BOOL;
  2724.                           APIENTRY;             'PMWIN' index 768;
  2725. FUNCTION WinSetOwner(ahwnd,hwndNewOwner:HWND):BOOL;
  2726.                           APIENTRY;             'PMWIN' index 864;
  2727. FUNCTION WinQueryWindowProcess(ahwnd:HWND;VAR ppid:PID;VAR ptid:TID):BOOL;
  2728.                           APIENTRY;             'PMWIN' index 838;
  2729. FUNCTION WinQueryObjectWindow(hwndDesktop:HWND):HWND;
  2730.                           APIENTRY;             'PMWIN' index 820;
  2731. FUNCTION WinQueryDesktopWindow(ahab:HAB;ahdc:HDC):HWND;
  2732.                           APIENTRY;             'PMWIN' index 813;
  2733. FUNCTION WinSetWindowPos(ahwnd,hwndInsertBehind:HWND;x,y,cx,cy:LONG;
  2734.                          fl:ULONG):BOOL;
  2735.                           APIENTRY;             'PMWIN' index 875;
  2736. FUNCTION WinSetMultWindowPos(ahab:HAB;VAR pswp:SWP;cswp:ULONG):BOOL;
  2737.                           APIENTRY;             'PMWIN' index 863;
  2738. FUNCTION WinQueryWindowPos(ahwnd:HWND;VAR pswp:SWP):BOOL;
  2739.                           APIENTRY;             'PMWIN' index 837;
  2740. FUNCTION WinUpdateWindow(ahwnd:HWND):BOOL;
  2741.                           APIENTRY;             'PMWIN' index 892;
  2742. FUNCTION WinInvalidateRect(ahwnd:HWND;CONST pwrc:RECTL;
  2743.                            fIncludeChildren:BOOL):BOOL;
  2744.                           APIENTRY;             'PMWIN' index 765;
  2745. FUNCTION WinInvalidateRegion(ahwnd:HWND;ahrgn:HRGN;
  2746.                              fIncludeChildren:BOOL):BOOL;
  2747.                           APIENTRY;             'PMWIN' index 766;
  2748. FUNCTION WinInvertRect(ahps:HPS;CONST prcl:RECTL):BOOL;
  2749.                           APIENTRY;             'PMWIN' index 767;
  2750. FUNCTION WinDrawBitmap(hpsDst:HPS;hbm:HBITMAP;VAR pwrcSrc;
  2751.                        VAR pptlDst;clrFore,clrBack:LONG;
  2752.                        fl:ULONG):BOOL;
  2753.                           APIENTRY;             'PMWIN' index 730;
  2754. FUNCTION WinDrawText(ahps:HPS;cchText:LONG;VAR lpchText;VAR prcl:RECTL;
  2755.                      clrFore,clrBack:LONG;flCmd:ULONG):LONG;
  2756.                           APIENTRY;             'PMWIN' index 913;
  2757. FUNCTION WinDrawBorder(ahps:HPS;CONST prcl:RECTL;cx,cy,clrFore,clrBack:LONG;
  2758.                        flCmd:ULONG):BOOL;
  2759.                           APIENTRY;             'PMWIN' index 731;
  2760. FUNCTION WinLoadString(ahab:HAB;hmod:HMODULE;id:ULONG;cchMax:LONG;
  2761.                        VAR pchBuffer:CSTRING):LONGINT;
  2762.                           APIENTRY;             'PMWIN' index 781;
  2763. FUNCTION WinLoadMessage(ahab:HAB;hmod:HMODULE;id:ULONG;cchMax:LONG;
  2764.                         VAR pchBuffer):LONG;
  2765.                           APIENTRY;             'PMWIN' index 779;
  2766. FUNCTION WinSetActiveWindow(hwndDesktop,ahwnd:HWND):BOOL;
  2767.                           APIENTRY;             'PMWIN' index 851;
  2768. FUNCTION WinSubclassWindow(ahwnd:HWND;pfnwp:POINTER):POINTER;
  2769.                           APIENTRY;             'PMWIN' index 929;
  2770. FUNCTION WinQueryClassName(ahwnd:HWND;cchMax:LONG;VAR apch):LONG;
  2771.                           APIENTRY;             'PMWIN' index 805;
  2772. FUNCTION WinQueryClassInfo(ahab:HAB;pszClassName:CSTRING;
  2773.                            VAR pClassInfo:CLASSINFO):BOOL;
  2774.                           APIENTRY;             'PMWIN' index 925;
  2775. FUNCTION WinQueryActiveWindow(hwndDesktop:HWND):HWND;
  2776.                           APIENTRY;             'PMWIN' index 799;
  2777. FUNCTION WinIsThreadActive(ahab:HAB):BOOL;
  2778.                           APIENTRY;             'PMWIN' index 771;
  2779. FUNCTION WinQuerySysModalWindow(hwndDesktop:HWND):HWND;
  2780.                           APIENTRY;             'PMWIN' index 827;
  2781. FUNCTION WinSetSysModalWindow(hwndDesktop:HWND;ahwnd:HWND):BOOL;
  2782.                           APIENTRY;             'PMWIN' index 872;
  2783. FUNCTION WinQueryWindowUShort(ahwnd:HWND;index:LONG):USHORT;
  2784.                           APIENTRY;             'PMWIN' index 844;
  2785. FUNCTION WinSetWindowUShort(ahwnd:HWND;index:LONG;us:USHORT):BOOL;
  2786.                           APIENTRY;             'PMWIN' index 879;
  2787. FUNCTION WinQueryWindowUlong(ahwnd:HWND;index:LONG):ULONG;
  2788.                           APIENTRY;             'PMWIN' index 843;
  2789. FUNCTION WinSetWindowULong(ahwnd:HWND;index:LONG;ul:ULONG):BOOL;
  2790.                           APIENTRY;             'PMWIN' index 878;
  2791. FUNCTION WinQueryWindowPtr(ahwnd:HWND;index:LONG):POINTER;
  2792.                           APIENTRY;             'PMWIN' index 839;
  2793. FUNCTION WinSetWindowPtr(ahwnd:HWND;index:LONG;p:POINTER):BOOL;
  2794.                           APIENTRY;             'PMWIN' index 876;
  2795. FUNCTION WinSetWindowBits(ahwnd:HWND;index:LONG;flData,
  2796.                           flMask:ULONG):BOOL;
  2797.                           APIENTRY;             'PMWIN' index 874;
  2798. FUNCTION WinBeginEnumWindows(ahwnd:HWND):HENUM;
  2799.                           APIENTRY;             'PMWIN' index 702;
  2800. FUNCTION WinGetNextWindow(ahenum:HENUM):HWND;
  2801.                           APIENTRY;             'PMWIN' index 756;
  2802. FUNCTION WinEndEnumWindows(ahenum:HENUM):BOOL;
  2803.                           APIENTRY;             'PMWIN' index 737;
  2804. FUNCTION WinWindowFromPoint(ahwnd:HWND;VAR pptl:POINTL;
  2805.                             fChildren:BOOL):HWND;
  2806.                           APIENTRY;             'PMWIN' index 900;
  2807. FUNCTION WinMapWindowPoints(hwndFrom,hwndTo:HWND;VAR prgptl;
  2808.                             cwpt:LONG):BOOL;
  2809.                           APIENTRY;             'PMWIN' index 788;
  2810. FUNCTION WinValidateRect(ahwnd:HWND;CONST prcl:RECTL;
  2811.                          fIncludeChildren:BOOL):BOOL;
  2812.                           APIENTRY;             'PMWIN' index 895;
  2813. FUNCTION WinValidateRegion(ahwnd:HWND;ahrgn:HRGN;
  2814.                            fIncludeChildren:BOOL):BOOL;
  2815.                           APIENTRY;             'PMWIN' index 896;
  2816. FUNCTION WinWindowFromDC(ahdc:HDC):HWND;
  2817.                           APIENTRY;             'PMWIN' index 898;
  2818. FUNCTION WinQueryWindowDC(ahwnd:HWND):HDC;
  2819.                           APIENTRY;             'PMWIN' index 835;
  2820. FUNCTION WinGetScreenPS(hwndDesktop:HWND):HPS;
  2821.                           APIENTRY;             'PMWIN' index 759;
  2822. FUNCTION WinLockWindowUpdate(hwndDesktop,hwndLockUpdate:HWND):BOOL;
  2823.                           APIENTRY;             'PMWIN' index 784;
  2824. FUNCTION WinLockVisRegions(hwndDesktop:HWND;fLock:BOOL):BOOL;
  2825.                           APIENTRY;             'PMWIN' index 782;
  2826. FUNCTION WinQueryUpdateRect(ahwnd:HWND;VAR prcl:RECTL):BOOL;
  2827.                           APIENTRY;             'PMWIN' index 831;
  2828. FUNCTION WinQueryUpdateRegion(ahwnd:HWND;ahrgn:HRGN):LONG;
  2829.                           APIENTRY;             'PMWIN' index 832;
  2830. FUNCTION WinExcludeUpdateRegion(ahps:HPS;ahwnd:HWND):LONG;
  2831.                           APIENTRY;             'PMWIN' index 742;
  2832. FUNCTION WinSendMsg(ahwnd:HWND;msg:ULONG;mp1,mp2:MPARAM):ULONG;
  2833.                           APIENTRY;             'PMWIN' index 920;
  2834. FUNCTION WinQueryQueueInfo(ahmq:HMQ;VAR pmqi:MQINFO;cbCopy:ULONG):BOOL;
  2835.                           APIENTRY;             'PMWIN' index 824;
  2836. FUNCTION WinCancelShutdown(ahmq:HMQ;fCancelAlways:BOOL):BOOL;
  2837.                           APIENTRY;             'PMWIN' index 705;
  2838. FUNCTION WinGetMsg(ahab:HAB;VAR pqmsg:QMSG;hwndFilter:HWND;
  2839.                    msgFilterFirst,msgFilterLast:ULONG):BOOL;
  2840.                           APIENTRY;             'PMWIN' index 915;
  2841. FUNCTION WinPeekMsg(ahab:HAB;VAR pqmsg:QMSG;hwndFilter:HWND;
  2842.                     msgFilterFirst,msgFilterLast:ULONG;fl:ULONG):BOOL;
  2843.                           APIENTRY;             'PMWIN' index 918;
  2844. FUNCTION WinDispatchMsg(ahab:HAB;VAR pqmsg:QMSG):ULONG;
  2845.                           APIENTRY;             'PMWIN' index 912;
  2846. FUNCTION WinPostMsg(ahwnd:HWND;msg:ULONG;mp1,mp2:MPARAM):BOOL;
  2847.                           APIENTRY;             'PMWIN' index 919;
  2848. FUNCTION WinRegisterUserMsg(ahab:HAB;msgid:ULONG;
  2849.                             datatype1,dir1,datatype2,dir2,
  2850.                             datatyper:LONG):BOOL;
  2851.                           APIENTRY;             'PMWIN' index 846;
  2852. FUNCTION WinRegisterUserDatatype(ahab:HAB;datatype,count:LONG;
  2853.                                  VAR astypes):BOOL;
  2854.                           APIENTRY;             'PMWIN' index 845;
  2855. FUNCTION WinSetMsgMode(ahab:HAB;classname:CSTRING;control:LONG):BOOL;
  2856.                           APIENTRY;             'PMWIN' index 862;
  2857. FUNCTION WinSetSynchroMode(ahab:HAB;mode:LONG):BOOL;
  2858.                           APIENTRY;             'PMWIN' index 870;
  2859. FUNCTION WinInSendMsg(ahab:HAB):BOOL;
  2860.                           APIENTRY;             'PMWIN' index 761;
  2861. FUNCTION WinBroadcastMsg(ahwnd:HWND;msg:ULONG;mp1,mp2:MPARAM;rgf:ULONG):BOOL;
  2862.                     APIENTRY;             'PMWIN' index 901;
  2863. FUNCTION WinWaitMsg(ahab:HAB;msgFirst,msgLast:ULONG):BOOL;
  2864.                     APIENTRY;             'PMWIN' index 897;
  2865. FUNCTION WinQueryQueueStatus(hwndDesktop:HWND):ULONG;
  2866.                     APIENTRY;             'PMWIN' index 825;
  2867. FUNCTION WinQueryMsgPos(ahab:HAB;VAR pptl:POINTL):BOOL;
  2868.                     APIENTRY;             'PMWIN' index 818;
  2869. FUNCTION WinQueryMsgTime(ahab:HAB):ULONG;
  2870.                     APIENTRY;             'PMWIN' index 819;
  2871. FUNCTION WinWaitEventSem(ahev:HEV;ulTimeout:ULONG):APIRET;
  2872.                     APIENTRY;             'PMWIN' index 978;
  2873. FUNCTION WinRequestMutexSem(ahmtx:HMTX;ulTimeout:ULONG):APIRET;
  2874.                     APIENTRY;             'PMWIN' index 979;
  2875. FUNCTION WinWaitMuxWaitSem(ahmux:HMUX;ulTimeout:ULONG;
  2876.                            VAR pulUser:ULONG):APIRET;
  2877.                     APIENTRY;             'PMWIN' index 980;
  2878. FUNCTION WinPostQueueMsg(ahmq:HMQ;msg:ULONG;mp1,mp2:MPARAM):BOOL;
  2879.                     APIENTRY;             'PMWIN' index 902;
  2880. FUNCTION WinSetMsgInterest(ahwnd:HWND;msg_class:ULONG;control:LONG):BOOL;
  2881.                     APIENTRY;             'PMWIN' index 861;
  2882. FUNCTION WinSetClassMsgInterest(ahab:HAB;VAR pszClassName:CSTRING;msg_class:ULONG;
  2883.                                 control:LONG):BOOL;
  2884.                     APIENTRY;             'PMWIN' index 853;
  2885. FUNCTION WinSetFocus(hwndDesktop,hwndSetFocus:HWND):BOOL;
  2886.                     APIENTRY;             'PMWIN' index 860;
  2887. FUNCTION WinFocusChange(hwndDesktop,hwndSetFocus:HWND;
  2888.                         flFocusChange:ULONG):BOOL;
  2889.                     APIENTRY;             'PMWIN' index 746;
  2890. {FUNCTION WinLockupSystem(ahab:HAB):BOOL;
  2891.                     APIENTRY;             'PMWIN' index ???
  2892. FUNCTION WinUnlockSystem(ahab:HAB;VAR pszPassword:CSTRING):BOOL
  2893.                     APIENTRY;             'PMWIN' index ???}
  2894. FUNCTION WinSetCapture(hwndDesktop,ahwnd:HWND):BOOL;
  2895.                     APIENTRY;             'PMWIN' index 852;
  2896. FUNCTION WinQueryCapture(hwndDesktop:HWND):HWND;
  2897.                     APIENTRY;             'PMWIN' index 804;
  2898. FUNCTION WinCheckInput(ahab:HAB):BOOL;
  2899.                     APIENTRY;             'PMWIN' index 998;
  2900. FUNCTION WinQueryFocus(hwndDesktop:HWND):HWND;
  2901.                     APIENTRY;             'PMWIN' index 817;
  2902. FUNCTION WinGetKeyState(hwndDesktop:HWND;vkey:LONG):LONG;
  2903.                     APIENTRY;             'PMWIN' index 752;
  2904. FUNCTION WinGetPhysKeyState(hwndDesktop:HWND;sc:LONG):LONG;
  2905.                     APIENTRY;             'PMWIN' index 758;
  2906. FUNCTION WinEnablePhysInput(hwndDesktop:HWND;fEnable:BOOL):BOOL;
  2907.                     APIENTRY;             'PMWIN' index 734;
  2908. FUNCTION WinIsPhysInputEnabled(hwndDesktop:HWND):BOOL;
  2909.                     APIENTRY;             'PMWIN' index 769;
  2910. FUNCTION WinSetKeyboardStateTable(hwndDesktop:HWND;VAR pKeyStateTable;
  2911.                                   fSet:BOOL):BOOL;
  2912.                     APIENTRY;             'PMWIN' index 921;
  2913. FUNCTION WinGetDlgMsg(hwndDlg:HWND;VAR pqmsg:QMSG):BOOL;
  2914.                     APIENTRY;             'PMWIN' index 914;
  2915. FUNCTION WinLoadDlg(hwndParent,hwndOwner:HWND;pfnDlgProc:POINTER;
  2916.                     hmod:HMODULE;idDlg:ULONG;pCreateParams:POINTER):HWND;
  2917.                     APIENTRY;             'PMWIN' index 924;
  2918. FUNCTION WinDlgBox(hwndParent,hwndOwner:HWND;pfnDlgProc:POINTER;
  2919.                    hmod:HMODULE;idDlg:ULONG;pCreateParams:POINTER):ULONG;
  2920.                     APIENTRY;             'PMWIN' index 923;
  2921. FUNCTION WinDismissDlg(hwndDlg:HWND;usResult:ULONG):BOOL;
  2922.                     APIENTRY;             'PMWIN' index 729;
  2923. FUNCTION WinQueryDlgItemShort(hwndDlg:HWND;idItem:ULONG;VAR pResult:INTEGER;
  2924.                               fSigned:BOOL):BOOL;
  2925.                     APIENTRY;             'PMWIN' index 814;
  2926. FUNCTION WinSetDlgItemShort(hwndDlg:HWND;idItem:ULONG;usValue:USHORT;
  2927.                             fSigned:BOOL):BOOL;
  2928.                     APIENTRY;             'PMWIN' index 858;
  2929. FUNCTION WinSetDlgItemText(hwndDlg:HWND;idItem:ULONG;pszText:CSTRING):BOOL;
  2930.                     APIENTRY;             'PMWIN' index 859;
  2931. FUNCTION WinQueryDlgItemText(hwndDlg:HWND;idItem:ULONG;cchBufferMax:LONG;
  2932.                              VAR pszText:CSTRING):ULONG;
  2933.                     APIENTRY;             'PMWIN' index 815;
  2934. FUNCTION WinQueryDlgItemTextLength(hwndDlg:HWND;idItem:ULONG):LONG;
  2935.                     APIENTRY;             'PMWIN' index 816;
  2936. FUNCTION WinDefDlgProc(hwndDlg:HWND;msg:ULONG;mp1,mp2:MPARAM):MRESULT;
  2937.                     APIENTRY;             'PMWIN' index 910;
  2938. FUNCTION WinAlarm(hwndDesktop:HWND;rgfType:ULONG):BOOL;
  2939.                     APIENTRY;             'PMWIN' index 701;
  2940. FUNCTION WinMessageBox(hwndParent,hwndOwner:HWND;pszText,pszCaption:CSTRING;
  2941.                        idWindow,flStyle:ULONG):ULONG;
  2942.                     APIENTRY;             'PMWIN' index 789;
  2943. FUNCTION WinProcessDlg(hwndDlg:ULONG):ULONG;
  2944.                     APIENTRY;             'PMWIN' index 796;
  2945. FUNCTION WinSendDlgItemMsg(hwndDlg:HWND;idItem:ULONG;msg:ULONG;
  2946.                            mp1,mp2:MPARAM):ULONG;
  2947.                     APIENTRY;             'PMWIN' index 903;
  2948. FUNCTION WinMapDlgPoints(hwndDlg:HWND;VAR prgwptl:POINTL;cwpt:ULONG;
  2949.                          fCalcWindowCoords:BOOL):BOOL;
  2950.                     APIENTRY;             'PMWIN' index 787;
  2951. FUNCTION WinEnumDlgItem(hwndDlg,ahwnd:HWND;code:ULONG):HWND;
  2952.                     APIENTRY;             'PMWIN' index 740;
  2953. FUNCTION WinSubstituteStrings(ahwnd:HWND;VAR pszSrc:CSTRING;cchDstMax:LONG;
  2954.                               VAR pszDst:CSTRING):LONG;
  2955.                     APIENTRY;             'PMWIN' index 886;
  2956. FUNCTION WinCreateDlg(hwndParent,hwndOwner:HWND;pfnDlgProc:POINTER;
  2957.                       VAR pdlgt:DLGTEMPLATE;pCreateParams:POINTER):HWND;
  2958.                     APIENTRY;             'PMWIN' index 922;
  2959. FUNCTION WinLoadMenu(hwndFrame:HWND;hmod:HMODULE;idMenu:ULONG):HWND;
  2960.                     APIENTRY;             'PMWIN' index 778;
  2961. FUNCTION WinDdeInitiate(hwndClient:HWND;pszAppName,pszTopicName:CSTRING;
  2962.                         VAR pcctxt:CONVCONTEXT):BOOL;
  2963.                     APIENTRY;             'PMWIN' index 718;
  2964. FUNCTION WinDdeRespond(hwndClient,hwndServer:HWND;pszAppName,pszTopicName:CSTRING;
  2965.                        VAR pcctxt:CONVCONTEXT):ULONG;
  2966.                     APIENTRY;             'PMWIN' index 720;
  2967. FUNCTION WinDdePostMsg(hwndTo,hwndFrom:HWND;wm:ULONG;VAR pddest:DDESTRUCT;
  2968.                        flOptions:ULONG):BOOL;
  2969.                     APIENTRY;             'PMWIN' index 719;
  2970. FUNCTION WinDeleteProcedure(ahab:HAB;wndproc:POINTER):BOOL;
  2971.                     APIENTRY;             'PMWIN' index 604;
  2972. FUNCTION WinDeleteLibrary(ahab:HAB;libhandle:HLIB):BOOL;
  2973.                     APIENTRY;             'PMWIN' index 722;
  2974. FUNCTION WinLoadProcedure(ahab:HAB;libhandle:HLIB;VAR procname:CSTRING):POINTER;
  2975.                     APIENTRY;             'PMWIN' index 603;
  2976. FUNCTION WinLoadLibrary(ahab:HAB;VAR libname:CSTRING):HLIB;
  2977.                     APIENTRY;             'PMWIN' index 777;
  2978. FUNCTION WinSetDesktopBkgnd(hwndDesktop:HWND;VAR pdskNew:DESKTOP):HBITMAP;
  2979.                     APIENTRY;             'PMWIN' index 935;
  2980. FUNCTION WinQueryDesktopBkgnd(hwndDesktop:HWND;VAR pdsk:DESKTOP):BOOL;
  2981.                     APIENTRY;             'PMWIN' index 936;
  2982. FUNCTION WinRealizePalette(ahwnd:HWND;ahps:HPS;VAR pcclr:ULONG):LONG;
  2983.                     APIENTRY;             'PMWIN' index 941;
  2984. FUNCTION WinCreateMenu(hwndParent:HWND;VAR lpmt):HWND;
  2985.                     APIENTRY;             'PMWIN' index 907;
  2986. FUNCTION WinPopupMenu(hwndParent,hwndOwner,hwndMenu:HWND;x,y,idItem:LONG;
  2987.                       fs:ULONG):BOOL;
  2988.                     APIENTRY;             'PMWIN' index 937;
  2989. FUNCTION WinCreateStdWindow(hwndParent:HWND;flStyle:ULONG;
  2990.                             VAR pflCreateFlags:ULONG;
  2991.                             pszClientClass:CSTRING;pszTitle:CSTRING;
  2992.                             styleClient:ULONG;hmod:HMODULE;
  2993.                             idResources:ULONG;VAR phwndClient:HWND):HWND;
  2994.                     APIENTRY;             'PMWIN' index 908;
  2995. FUNCTION WinCreateWCStdWindow( hwndParent:HWND;flStyle:ULONG;
  2996.                                VAR pflCreateFlags:ULONG;
  2997.                                pszClientClass:ULONG;pszTitle:CSTRING;
  2998.                                styleClient:ULONG;hmod:HMODULE;
  2999.                                idResources:ULONG;VAR phwndClient:HWND):HWND;
  3000.                                APIENTRY; 'PMWIN' index 908;
  3001. FUNCTION WinFlashWindow(hwndFrame:HWND;fFlash:BOOL):BOOL;
  3002.                     APIENTRY;             'PMWIN' index 745;
  3003. FUNCTION WinCreateFrameControls(hwndFrame:HWND;VAR pfcdata:FRAMECDATA;
  3004.                                 pszTitle:CSTRING):BOOL;
  3005.                     APIENTRY;             'PMWIN' index 906;
  3006. FUNCTION WinCalcFrameRect(hwndFrame:HWND;VAR prcl:RECTL;fClient:BOOL):BOOL;
  3007.                     APIENTRY;             'PMWIN' index 704;
  3008. FUNCTION WinGetMinPosition(ahwnd:HWND;VAR pswp:SWP;VAR pptl:POINTL):BOOL;
  3009.                     APIENTRY;             'PMWIN' index 755;
  3010. FUNCTION WinGetMaxPosition(ahwnd:HWND;VAR pswp:SWP):BOOL;
  3011.                     APIENTRY;             'PMWIN' index 754;
  3012. FUNCTION WinSaveWindowPos(hsvwp:HSAVEWP;VAR pswp:SWP;cswp:ULONG):BOOL;
  3013.                     APIENTRY;             'PMWIN' index 943;
  3014. FUNCTION WinCopyRect(ahab:HAB;VAR prclDst,prclSrc:RECTL):BOOL;
  3015.                     APIENTRY;             'PMWIN' index 710;
  3016. FUNCTION WinSetRect(ahab:HAB;VAR prcl:RECTL;xLeft,yBottom,xRight,
  3017.                     yTop:LONG):BOOL;
  3018.                     APIENTRY;             'PMWIN' index 868;
  3019. FUNCTION WinIsRectEmpty(ahab:HAB;CONST prcl:RECTL):BOOL;
  3020.                     APIENTRY;             'PMWIN' index 770;
  3021. FUNCTION WinEqualRect(ahab:HAB;CONST prcl1,prcl2:RECTL):BOOL;
  3022.                     APIENTRY;             'PMWIN' index 741;
  3023. FUNCTION WinSetRectEmpty(ahab:HAB;VAR prcl:RECTL):BOOL;
  3024.                     APIENTRY;             'PMWIN' index 869;
  3025. FUNCTION WinOffsetRect(ahab:HAB;VAR prcl:RECTL;cx,cy:LONG):BOOL;
  3026.                     APIENTRY;             'PMWIN' index 792;
  3027. FUNCTION WinInflateRect(ahab:HAB;VAR prcl:RECTL;cx,cy:LONG):BOOL;
  3028.                     APIENTRY;             'PMWIN' index 762;
  3029. FUNCTION WinPtInRect(ahab:HAB;CONST prcl:RECTL;CONST pptl:POINTL):BOOL;
  3030.                     APIENTRY;             'PMWIN' index 797;
  3031. FUNCTION WinIntersectRect(ahab:HAB;VAR prclDst:RECTL;CONST prclSrc1,prclSrc2:RECTL):BOOL;
  3032.                     APIENTRY;             'PMWIN' index 764;
  3033. FUNCTION WinUnionRect(ahab:HAB;VAR prclDst:RECTL;CONST prclSrc1,prclSrc2:RECTL):BOOL;
  3034.                     APIENTRY;             'PMWIN' index 891;
  3035. FUNCTION WinSubtractRect(ahab:HAB;VAR prclDst:RECTL;CONST prclSrc1,prclSrc2:RECTL):BOOL;
  3036.                     APIENTRY;             'PMWIN' index 887;
  3037. FUNCTION WinMakeRect(ahab:HAB;VAR pwrc:WRECT):BOOL;
  3038.                     APIENTRY;             'PMWIN' index 786;
  3039. FUNCTION WinMakePoints(ahab:HAB;VAR pwpt:WPOINT;cwpt:ULONG):BOOL;
  3040.                     APIENTRY;             'PMWIN' index 785;
  3041. FUNCTION WinQuerySysValue(hwndDesktop:HWND;iSysValue:LONG):LONG;
  3042.                     APIENTRY;             'PMWIN' index 829;
  3043. FUNCTION WinSetSysValue(hwndDesktop:HWND;iSysValue,lValue:LONG):BOOL;
  3044.                     APIENTRY;             'PMWIN' index 873;
  3045. FUNCTION WinSetPresParam(ahwnd:HWND;id,cbParam:ULONG;VAR pbParam):BOOL;
  3046.                     APIENTRY;             'PMWIN' index 938;
  3047. FUNCTION WinQueryPresParam(ahwnd:HWND;id1,id2:ULONG;VAR pulId:ULONG;
  3048.                            cbBuf:ULONG;VAR pbBuf;fs:ULONG):ULONG;
  3049.                     APIENTRY;             'PMWIN' index 939;
  3050. FUNCTION WinRemovePresParam(ahwnd:HWND;id:ULONG):BOOL;
  3051.                     APIENTRY;             'PMWIN' index 940;
  3052. FUNCTION WinQuerySysColor(hwndDesktop:HWND;clr,lReserved:LONG):LONG;
  3053.                     APIENTRY;             'PMWIN' index 826;
  3054. FUNCTION WinSetSysColors(hwndDesktop:HWND;flOptions,flFormat:ULONG;
  3055.                          clrFirst:LONG;cclr:ULONG;VAR alTable):BOOL;
  3056.                     APIENTRY;             'PMWIN' index 871;
  3057. FUNCTION WinStartTimer(ahab:HAB;ahwnd:HWND;idTimer,dtTimeout:ULONG):ULONG;
  3058.                     APIENTRY;             'PMWIN' index 884;
  3059. FUNCTION WinStopTimer(ahab:HAB;ahwnd:HWND;idTimer:ULONG):BOOL;
  3060.                     APIENTRY;             'PMWIN' index 885;
  3061. FUNCTION WinGetCurrentTime(ahab:HAB):ULONG;
  3062.                     APIENTRY;             'PMWIN' index 750;
  3063. FUNCTION WinLoadAccelTable(ahab:HAB;hmod:HMODULE;idAccelTable:ULONG):HACCEL;
  3064.                     APIENTRY;             'PMWIN' index 776;
  3065. FUNCTION WinCopyAccelTable(ahaccel:HACCEL;VAR pAccelTable:ACCELTABLE;
  3066.                            cbCopyMax:ULONG):ULONG;
  3067.                     APIENTRY;             'PMWIN' index 709;
  3068. FUNCTION WinCreateAccelTable(ahab:HAB;VAR pAccelTable:ACCELTABLE):HACCEL;
  3069.                     APIENTRY;             'PMWIN' index 713;
  3070. FUNCTION WinDestroyAccelTable(ahaccel:HACCEL):BOOL;
  3071.                     APIENTRY;             'PMWIN' index 723;
  3072. FUNCTION WinTranslateAccel(ahab:HAB;ahwnd:HWND;ahaccel:HACCEL;
  3073.                            VAR pqmsg:QMSG):BOOL;
  3074.                     APIENTRY;             'PMWIN' index 904;
  3075. FUNCTION WinSetAccelTable(ahab:HAB;ahaccel:HACCEL;hwndFrame:HWND):BOOL;
  3076.                     APIENTRY;             'PMWIN' index 850;
  3077. FUNCTION WinQueryAccelTable(ahab:HAB;hwndFrame:HWND):HACCEL;
  3078.                     APIENTRY;             'PMWIN' index 798;
  3079. FUNCTION WinTrackRect(ahwnd:HWND;ahps:HPS;VAR pti:TRACKINFO):BOOL;
  3080.                     APIENTRY;             'PMWIN' index 890;
  3081. FUNCTION WinShowTrackRect(ahwnd:HWND;fShow:BOOL):BOOL;
  3082.                     APIENTRY;             'PMWIN' index 882;
  3083. FUNCTION WinSetClipbrdOwner(ahab:HAB;ahwnd:HWND):BOOL;
  3084.                     APIENTRY;             'PMWIN' index 855;
  3085. FUNCTION WinSetClipbrdData(ahab:HAB;ulData,fmt,rgfFmtInfo:ULONG):BOOL;
  3086.                     APIENTRY;             'PMWIN' index 854;
  3087. FUNCTION WinQueryClipbrdData(ahab:HAB;fmt:ULONG):ULONG;
  3088.                     APIENTRY;             'PMWIN' index 806;
  3089. FUNCTION WinQueryClipbrdFmtInfo(ahab:HAB;fmt:ULONG;
  3090.                                 VAR prgfFmtInfo:ULONG):BOOL;
  3091.                     APIENTRY;             'PMWIN' index 807;
  3092. FUNCTION WinSetClipbrdViewer(ahab:HAB;hwndNewClipViewer:HWND):BOOL;
  3093.                     APIENTRY;             'PMWIN' index 856;
  3094. FUNCTION WinEnumClipbrdFmts(ahab:HAB;fmt:ULONG):ULONG;
  3095.                     APIENTRY;             'PMWIN' index 739;
  3096. FUNCTION WinEmptyClipbrd(ahab:HAB):BOOL;
  3097.                     APIENTRY;             'PMWIN' index 733;
  3098. FUNCTION WinOpenClipbrd(ahab:HAB):BOOL;
  3099.                     APIENTRY;             'PMWIN' index 793;
  3100. FUNCTION WinCloseClipbrd(ahab:HAB):BOOL;
  3101.                     APIENTRY;             'PMWIN' index 707;
  3102. FUNCTION WinQueryClipbrdOwner(ahab:HAB):HWND;
  3103.                     APIENTRY;             'PMWIN' index 808;
  3104. FUNCTION WinQueryClipbrdViewer(ahab:HAB):HWND;
  3105.                     APIENTRY;             'PMWIN' index 809;
  3106. FUNCTION WinDestroyCursor(ahwnd:HWND):BOOL;
  3107.                     APIENTRY;             'PMWIN' index 725;
  3108. FUNCTION WinShowCursor(ahwnd:HWND;fShow:BOOL):BOOL;
  3109.                     APIENTRY;             'PMWIN' index 880;
  3110. FUNCTION WinCreateCursor(ahwnd:HWND;x,y,cx,cy:LONG;fs:ULONG;
  3111.                          VAR prclClip):BOOL;
  3112.                     APIENTRY;             'PMWIN' index 715;
  3113. FUNCTION WinQueryCursorInfo(hwndDesktop:HWND;
  3114.                             VAR pCursorInfo:CURSORINFO):BOOL;
  3115.                     APIENTRY;             'PMWIN' index 812;
  3116. FUNCTION WinSetPointer(hwndDesktop:HWND;hptrNew:HPOINTER):BOOL;
  3117.                     APIENTRY;             'PMWIN' index 866;
  3118. FUNCTION WinSetPointerOwner(hptr:HPOINTER;apid:PID;fDestroy:BOOL):BOOL;
  3119.                     APIENTRY;             'PMWIN' index 971;
  3120. FUNCTION WinShowPointer(hwndDesktop:HWND;fShow:BOOL):BOOL;
  3121.                     APIENTRY;             'PMWIN' index 881;
  3122. FUNCTION WinLockPointerUpdate(hwndDesktop:HWND;hptrNew:HPOINTER;
  3123.                               ulTimeInterval:ULONG):BOOL;
  3124.                     APIENTRY;             'PMWIN' index 639;
  3125. FUNCTION WinQuerySysPointer(hwndDesktop:HWND;iptr:LONG;fLoad:BOOL):HPOINTER;
  3126.                     APIENTRY;             'PMWIN' index 828;
  3127. {FUNCTION WinQuerySysPointerData(hwndDesktop:HWND;iptr:ULONG;
  3128.                                 VAR pIconInfo:ICONINFO):BOOL;
  3129.                     APIENTRY;             'PMWIN' index ???}
  3130. {FUNCTION WinSetSysPointerData(hwndDesktop:HWND;iptr:ULONG;
  3131.                               VAR pIconInfo:ICONINFO):BOOL;
  3132.                     APIENTRY;             'PMWIN' index ???}
  3133. FUNCTION WinLoadPointer(hwndDesktop:HWND;hmod:HMODULE;idres:ULONG):HPOINTER;
  3134.                     APIENTRY;             'PMWIN' index 780;
  3135. FUNCTION WinCreatePointer(hwndDesktop:HWND;hbmPointer:HBITMAP;
  3136.                           fPointer:BOOL;xHotspot,yHotspot:LONG):HPOINTER;
  3137.                     APIENTRY;             'PMWIN' index 717;
  3138. FUNCTION WinSetPointerPos(hwndDesktop:HWND;x,y:LONG):BOOL;
  3139.                     APIENTRY;             'PMWIN' index 867;
  3140. FUNCTION WinDestroyPointer(hptr:HPOINTER):BOOL;
  3141.                     APIENTRY;             'PMWIN' index 727;
  3142. FUNCTION WinQueryPointer(hwndDesktop:HWND):HPOINTER;
  3143.                     APIENTRY;             'PMWIN' index 821;
  3144. FUNCTION WinQueryPointerPos(hwndDesktop:HWND;VAR pptl:POINTL):BOOL;
  3145.                     APIENTRY;             'PMWIN' index 823;
  3146. FUNCTION WinCreatePointerIndirect(hwndDesktop:HWND;
  3147.                                   VAR pptri:POINTERINFO):HPOINTER;
  3148.                     APIENTRY;             'PMWIN' index 942;
  3149. FUNCTION WinQueryPointerInfo(hptr:HPOINTER;
  3150.                              VAR pPointerInfo:POINTERINFO):BOOL;
  3151.                     APIENTRY;             'PMWIN' index 822;
  3152. FUNCTION WinDrawPointer(ahps:HPS;x,y:LONG;hptr:HPOINTER;fs:ULONG):BOOL;
  3153.                     APIENTRY;             'PMWIN' index 732;
  3154. FUNCTION WinGetSysBitmap(hwndDesktop:HWND;ibm:ULONG):HBITMAP;
  3155.                     APIENTRY;             'PMWIN' index 760;
  3156. FUNCTION WinSetHook(ahab:HAB;ahmq:HMQ;iHook:LONG;pfnHook:POINTER;
  3157.                     hmod:HMODULE):BOOL;
  3158.                     APIENTRY;             'PMWIN' index 928;
  3159. FUNCTION WinReleaseHook(ahab:HAB;ahmq:HMQ;iHook:LONG;pfnHook:POINTER;
  3160.                         hmod:HMODULE):BOOL;
  3161.                     APIENTRY;             'PMWIN' index 927;
  3162. FUNCTION WinCallMsgFilter(ahab:HAB;VAR pqmsg:QMSG;msgf:ULONG):BOOL;
  3163.                     APIENTRY;             'PMWIN' index 905;
  3164. FUNCTION WinSetClassThunkProc(VAR pszClassname:CSTRING;pfnThunkProc:POINTER):BOOL;
  3165.                     APIENTRY;             'PMWIN' index 930;
  3166. FUNCTION WinQueryClassThunkProc(pszClassname:CSTRING):POINTER;
  3167.                     APIENTRY;             'PMWIN' index 931;
  3168. FUNCTION WinSetWindowThunkProc(ahwnd:HWND;pfnThunkProc:POINTER):BOOL;
  3169.                     APIENTRY;             'PMWIN' index 932;
  3170. FUNCTION WinQueryWindowThunkProc(ahwnd:HWND):POINTER;
  3171.                     APIENTRY;             'PMWIN' index 933;
  3172. FUNCTION WinQueryWindowModel(ahwnd:HWND):LONG;
  3173.                     APIENTRY;             'PMWIN' index 934;
  3174. FUNCTION WinQueryCp(ahmq:HMQ):ULONG;
  3175.                     APIENTRY;             'PMWIN' index 810;
  3176. FUNCTION WinSetCp(ahmq:HMQ;idCodePage:ULONG):BOOL;
  3177.                     APIENTRY;             'PMWIN' index 857;
  3178. FUNCTION WinQueryCpList(ahab:HAB;ccpMax:ULONG;VAR prgcp):ULONG;
  3179.                     APIENTRY;             'PMWIN' index 811;
  3180. FUNCTION WinCpTranslateString(ahab:HAB;cpSrc:ULONG;pszSrc:CSTRING;
  3181.                               cpDst,cchDestMax:ULONG;
  3182.                               VAR pchDest:CSTRING):BOOL;
  3183.                     APIENTRY;             'PMWIN' index 712;
  3184. FUNCTION WinCpTranslateChar(ahab:HAB;cpSrc:ULONG;chSrc:UCHAR;
  3185.                             cpDst:ULONG):UCHAR;
  3186.                     APIENTRY;             'PMWIN' index 711;
  3187. FUNCTION WinUpper(ahab:HAB;idcp,idcc:ULONG;VAR apsz:CSTRING):ULONG;
  3188.                     APIENTRY;             'PMWIN' index 893;
  3189. FUNCTION WinUpperChar(ahab:HAB;idcp,idcc,c:ULONG):ULONG;
  3190.                     APIENTRY;             'PMWIN' index 894;
  3191. FUNCTION WinNextChar(ahab:HAB;idcp,idcc:ULONG;VAR apsz:CSTRING):PChar;
  3192.                     APIENTRY;             'PMWIN' index 791;
  3193. FUNCTION WinPrevChar(ahab:HAB;idcp,idcc:ULONG;pszStart,apsz:CSTRING):PChar;
  3194.                     APIENTRY;             'PMWIN' index 795;
  3195. FUNCTION WinCompareStrings(ahab:HAB;idcp,idcc:ULONG;psz1,psz2:CSTRING;
  3196.                            reserved:ULONG):ULONG;
  3197.                     APIENTRY;             'PMWIN' index 708;
  3198. FUNCTION WinQuerySystemAtomTable:HATOMTBL;
  3199.                     APIENTRY;             'PMWIN' index 830;
  3200. FUNCTION WinCreateAtomTable(cbInitial,cBuckets:ULONG):HATOMTBL;
  3201.                     APIENTRY;             'PMWIN' index 714;
  3202. FUNCTION WinDestroyAtomTable(ahAtomTbl:HATOMTBL):HATOMTBL;
  3203.                     APIENTRY;             'PMWIN' index 724;
  3204. FUNCTION WinAddAtom(ahAtomTbl:HATOMTBL;pszAtomName:CSTRING):ATOM;
  3205.                     APIENTRY;             'PMWIN' index 700;
  3206. FUNCTION WinFindAtom(ahAtomTbl:HATOMTBL;pszAtomName:CSTRING):ATOM;
  3207.                     APIENTRY;             'PMWIN' index 744;
  3208. FUNCTION WinDeleteAtom(ahAtomTbl:HATOMTBL;aatom:ATOM):ATOM;
  3209.                     APIENTRY;             'PMWIN' index 721;
  3210. FUNCTION WinQueryAtomUsage(ahAtomTbl:HATOMTBL;aatom:ATOM):ULONG;
  3211.                     APIENTRY;             'PMWIN' index 803;
  3212. FUNCTION WinQueryAtomLength(ahAtomTbl:HATOMTBL;aatom:ATOM):ULONG;
  3213.                     APIENTRY;             'PMWIN' index 801;
  3214. FUNCTION WinQueryAtomName(ahAtomTbl:HATOMTBL;aatom:ATOM;VAR pszBuffer:CSTRING;
  3215.                           cchBufferMax:ULONG):ULONG;
  3216.                     APIENTRY;             'PMWIN' index 802;
  3217. FUNCTION WinGetLastError(ahab:HAB):ERRORID;
  3218.                     APIENTRY;             'PMWIN' index 753;
  3219. FUNCTION WinGetErrorInfo(ahab:HAB):PERRINFO;
  3220.                     APIENTRY;             'PMWIN' index 751;
  3221. FUNCTION WinFreeErrorInfo(VAR perrinfo:ERRINFO):BOOL;
  3222.                     APIENTRY;             'PMWIN' index 748;
  3223. FUNCTION WinLockInput(ahmq:HMQ;fLock:BOOL):BOOL;
  3224.                     APIENTRY;             'PMWIN' index 995;
  3225. FUNCTION WinQuerySendMsg(ahab:HAB;Sender:HMQ;Receiver:HMQ;VAR pqmsg:QMSG;
  3226.                          ahmq:HMQ):HMQ;
  3227.                     APIENTRY;             'PMWIN' index 990;
  3228. FUNCTION WinQueueFromId(ahab:HAB;idPid:PID;idTid:TID):HMQ;
  3229.                     APIENTRY;             'PMWIN' index 993;
  3230. FUNCTION WinReplyMsg(ahab:HAB;hmqSender,hmqReceiver:HMQ;mresReply:MRESULT):BOOL;
  3231.                     APIENTRY;             'PMWIN' index 991;
  3232. FUNCTION WinThreadAssocQueue(ahab:HAB;ahmq:HMQ):BOOL;
  3233.                     APIENTRY;             'PMWIN' index 994;
  3234. FUNCTION WinWakeThread(ahmq:HMQ):BOOL;
  3235.                     APIENTRY;             'PMWIN' index 992;
  3236.  
  3237. END;  {IMPORTS}
  3238.  
  3239. FUNCTION MPFROMP(p:POINTER):MPARAM;
  3240. FUNCTION MPFROMHWND(ahwnd:HWND):MPARAM;
  3241. FUNCTION MPFROMCHAR(ch:USHORT):MPARAM;
  3242. FUNCTION MPFROM2CH(s:USHORT;uch1,uch2:BYTE):MPARAM;
  3243. FUNCTION MPFROMLONG(l:ULONG):MPARAM;
  3244. FUNCTION SHORT1FROMMP(p:MPARAM):WORD;
  3245. FUNCTION SHORT2FROMMP(p:MPARAM):WORD;
  3246. FUNCTION MPFrom2Short(s1,s2:WORD):MPARAM;
  3247. FUNCTION MPFromShort(s:Word):MPARAM;
  3248.  
  3249. FUNCTION PVOIDFROMMP(mp:MPARAM):POINTER;
  3250. FUNCTION HWNDFROMMP(mp:MPARAM):HWND;
  3251. FUNCTION CHAR1FROMMP(mp:MPARAM):BYTE;
  3252. FUNCTION CHAR2FROMMP(mp:MPARAM):BYTE;
  3253. FUNCTION CHAR3FROMMP(mp:MPARAM):BYTE;
  3254. FUNCTION CHAR4FROMMP(mp:MPARAM):BYTE;
  3255. FUNCTION LONGFROMMP(mp:MPARAM):ULONG;
  3256.  
  3257. FUNCTION MRFROMP(p:MPARAM):ULONG;
  3258. FUNCTION MRFROMSHORT(s:USHORT):ULONG;
  3259. FUNCTION MRFROM2SHORT(s1,s2:USHORT):ULONG;
  3260. FUNCTION MRFROMLONG(l:ULONG):ULONG;
  3261.  
  3262. FUNCTION PVOIDFROMMR(mr:MRESULT):POINTER;
  3263. FUNCTION SHORT1FROMMR(mr:MRESULT):USHORT;
  3264. FUNCTION SHORT2FROMMR(mr:MRESULT):USHORT;
  3265. FUNCTION LONGFROMMR(mr:MRESULT):ULONG;
  3266.  
  3267. FUNCTION WinCheckButton(hwndDlg:HWND;id,uscheckState:USHORT):ULONG;
  3268. FUNCTION WinQueryButtonCheckState(hwndDlg:HWND;id:USHORT):ULONG;
  3269. FUNCTION WinEnableControl(hwndDlg:HWND;id:USHORT;fEnable:BOOL):BOOL;
  3270. FUNCTION WinIsControlEnabled(hwndDlg:HWND;id:USHORT):BOOL;
  3271.  
  3272. FUNCTION WinDeleteLBoxItem(hwndLBox:HWND;index:LONG):LONG;
  3273. FUNCTION WinInsertLBoxItem(hwndLBox:HWND;index:LONG;apsz:CSTRING):LONG;
  3274. FUNCTION WinQueryLBoxCount(hwndLBox:HWND):LONG;
  3275. FUNCTION WinQueryLBoxItemText(hwndLBox:HWND;index:LONG;VAR apsz:CSTRING;
  3276.                               cchMax:SHORT):LONG;
  3277. FUNCTION WinQueryLboxItemTextLength(hwndLbox:HWND;index:LONG):LONG;
  3278.  
  3279. FUNCTION WinSetLboxItemText(hwndLbox:HWND;index:LONG;apsz:CSTRING):BOOL;
  3280. FUNCTION WinQueryLboxSelectedItem(hwndLbox:HWND):LONG;
  3281.  
  3282. FUNCTION WinCheckMenuItem(hwndMenu:HWND;id:ULONG;fcheck:BOOL):BOOL;
  3283. FUNCTION WinIsMenuItemChecked(hwndMenu:HWND;id:ULONG):BOOL;
  3284. FUNCTION WinEnableMenuItem(hwndMenu:HWND;id:ULONG;fenable:BOOL):BOOL;
  3285. FUNCTION WinIsMenuItemEnabled(hwndMenu:HWND;id:ULONG):BOOL;
  3286. FUNCTION WinSetMenuItemText(hwndMenu:HWND;id:ULONG;apsz:CSTRING):BOOL;
  3287. FUNCTION WinIsMenuItemValid(hwndMenu:HWND;id:ULONG):BOOL;
  3288.  
  3289. FUNCTION DDES_PSZITEMNAME(pddes:PDDESTRUCT):PChar;
  3290. FUNCTION DDES_PABDATA(pddes:PDDESTRUCT):PBYTE;
  3291. FUNCTION DDEI_PCONVCONTEXT(pddei:PDDEINIT):PCONVCONTEXT;
  3292.  
  3293.  
  3294.  
  3295. IMPLEMENTATION
  3296.  
  3297.  
  3298.  
  3299. { Macros to make an MPARAM from standard type.}
  3300.  
  3301. FUNCTION SHORT1FROMMP(p:MPARAM):WORD;ASSEMBLER;
  3302.      ASM
  3303.         MOV AX,p
  3304.         MOV Result,AX
  3305.      END;
  3306.  
  3307. FUNCTION SHORT2FROMMP(p:MPARAM):WORD;ASSEMBLER;
  3308.      ASM
  3309.         MOV AX,p+2
  3310.         MOV Result,AX
  3311.      END;
  3312.  
  3313. FUNCTION MPFrom2Short(s1,s2:WORD):MPARAM;ASSEMBLER;
  3314.      ASM
  3315.         MOV AX,s2
  3316.         PUSH AX
  3317.         MOV AX,s1
  3318.         PUSH AX
  3319.         POP EAX
  3320.         MOV Result,EAX
  3321.      END;
  3322.  
  3323. FUNCTION MPFromShort(s:Word):MPARAM;ASSEMBLER;
  3324.      ASM
  3325.         MOV AX,s
  3326.         MOVZX EAX,AX
  3327.         MOV result,EAX
  3328.      END;
  3329.  
  3330. FUNCTION MPFROMP(p:POINTER):MPARAM;
  3331. BEGIN
  3332.      MPFROMP:=MPARAM(p);
  3333. END;
  3334.  
  3335. FUNCTION MPFROMHWND(ahwnd:HWND):MPARAM;
  3336. BEGIN
  3337.      MPFROMHWND:=ahwnd;
  3338. END;
  3339.  
  3340. FUNCTION MPFROMCHAR(ch:USHORT):MPARAM;
  3341. BEGIN
  3342.      MPFROMCHAR:=ch;
  3343. END;
  3344.  
  3345.  
  3346. FUNCTION MPFROM2CH(s:USHORT;uch1,uch2:BYTE):MPARAM;
  3347. VAR w:USHORT;
  3348. BEGIN
  3349.      w:=MAKESHORT(uch1,uch2);
  3350.      MPFROM2CH:=MAKELONG(s,w);
  3351. END;
  3352.  
  3353.  
  3354. FUNCTION MPFROMLONG(l:ULONG):MPARAM;
  3355. BEGIN
  3356.      MPFROMLONG:=l;
  3357. END;
  3358.  
  3359.  
  3360. { Macros to extract standard types from an MPARAM }
  3361.  
  3362.  
  3363. FUNCTION PVOIDFROMMP(mp:MPARAM):POINTER;
  3364. BEGIN
  3365.      PVOIDFROMMP:=POINTER(mp);
  3366. END;
  3367.  
  3368. FUNCTION HWNDFROMMP(mp:MPARAM):HWND;
  3369. BEGIN
  3370.      HWNDFROMMP:=HWND(mp);
  3371. END;
  3372.  
  3373. FUNCTION CHAR1FROMMP(mp:MPARAM):BYTE;
  3374. BEGIN
  3375.      CHAR1FROMMP:=ULONG(mp);
  3376. END;
  3377.  
  3378. FUNCTION CHAR2FROMMP(mp:MPARAM):BYTE;
  3379. BEGIN
  3380.      CHAR2FROMMP:=ULONG(mp) SHR 8;
  3381. END;
  3382.  
  3383. FUNCTION CHAR3FROMMP(mp:MPARAM):BYTE;
  3384. BEGIN
  3385.      CHAR3FROMMP:=ULONG(mp) SHR 16;
  3386. END;
  3387.  
  3388. FUNCTION CHAR4FROMMP(mp:MPARAM):BYTE;
  3389. BEGIN
  3390.      CHAR4FROMMP:=ULONG(mp) SHR 24;
  3391. END;
  3392.  
  3393.  
  3394. FUNCTION LONGFROMMP(mp:MPARAM):ULONG;
  3395. BEGIN
  3396.      LONGFROMMP:=ULONG(mp);
  3397. END;
  3398.  
  3399.  
  3400. { Macros to make an MRESULT from standard types. }
  3401.  
  3402. FUNCTION MRFROMP(p:MPARAM):ULONG;
  3403. BEGIN
  3404.      MRFROMP:=ULONG(p);
  3405. END;
  3406.  
  3407. FUNCTION MRFROMSHORT(s:USHORT):ULONG;
  3408. BEGIN
  3409.      MRFROMSHORT:=s;
  3410. END;
  3411.  
  3412. FUNCTION MRFROM2SHORT(s1,s2:USHORT):ULONG;
  3413. BEGIN
  3414.      MRFROM2SHORT:=MAKELONG(s1,s2);
  3415. END;
  3416.  
  3417. FUNCTION MRFROMLONG(l:ULONG):ULONG;
  3418. BEGIN
  3419.      MRFROMLONG:=l;
  3420. END;
  3421.  
  3422.  
  3423. { Macros to extract standard types from an MRESULT }
  3424.  
  3425.  
  3426. FUNCTION PVOIDFROMMR(mr:MRESULT):POINTER;
  3427. BEGIN
  3428.      PVOIDFROMMR:=POINTER(mr);
  3429. END;
  3430.  
  3431. FUNCTION SHORT1FROMMR(mr:MRESULT):USHORT;
  3432. BEGIN
  3433.      SHORT1FROMMR:=ULONG(mr);
  3434. END;
  3435.  
  3436. FUNCTION SHORT2FROMMR(mr:MRESULT):USHORT;
  3437. BEGIN
  3438.      SHORT2FROMMR:=ULONG(mr) SHR 16;
  3439. END;
  3440.  
  3441. FUNCTION LONGFROMMR(mr:MRESULT):ULONG;
  3442. BEGIN
  3443.      LONGFROMMR:=ULONG(mr);
  3444. END;
  3445.  
  3446. { Useful macros }
  3447.  
  3448.  
  3449. { sets the check state of button #id.
  3450.   returns the previous check state.}
  3451. FUNCTION WinCheckButton(hwndDlg:HWND;id,usCheckState:USHORT):ULONG;
  3452. BEGIN
  3453.      WinCheckButton:=WinSendDlgItemMsg(hwndDlg,id,BM_SETCHECK,
  3454.                                   MPFROMSHORT(usCheckState),0);
  3455. END;
  3456.  
  3457.  
  3458. { returns the check state of buttin #id. }
  3459. FUNCTION WinQueryButtonCheckState(hwndDlg:HWND;id:USHORT):ULONG;
  3460. BEGIN
  3461.      WinQueryButtonCheckState:=WinSendDlgItemMsg(hwndDlg,id,BM_QUERYCHECK,
  3462.                                                  0,0);
  3463. END;
  3464.  
  3465. { sets the enable state of button #id.
  3466.   returns fSuccess. }
  3467. FUNCTION WinEnableControl(hwndDlg:HWND;id:USHORT;fEnable:BOOL):BOOL;
  3468. VAR Win:HWND;
  3469. BEGIN
  3470.      Win:=WinWindowFromID(hwndDlg,id);
  3471.      WinEnableControl:=WinEnableWindow(Win,fEnable);
  3472. END;
  3473.  
  3474. { returns the enable state of control #id. }
  3475. FUNCTION WinIsControlEnabled(hwndDlg:HWND;id:USHORT):BOOL;
  3476. BEGIN
  3477.      WinIsControlEnabled:=WinIsWindowEnabled(WinWindowFromID(hwndDlg,id));
  3478. END;
  3479.  
  3480.  
  3481. { Dialog Manager COMMON subsection }
  3482.  
  3483.  
  3484. { deletes item index from the listbox.
  3485.   returns the number of items left. }
  3486. FUNCTION WinDeleteLBoxItem(hwndLBox:HWND;index:LONG):LONG;
  3487. BEGIN
  3488.      WinDeleteLBoxItem:=WinSendMsg(hwndLBox,LM_DELETEITEM,MPFROMLONG(index),
  3489.                                    0);
  3490. END;
  3491.  
  3492. { inserts psz into a listbox at index.  Index may be an LIT_ constant.
  3493.   returns the actual index where it was inserted. }
  3494. FUNCTION WinInsertLBoxItem(hwndLBox:HWND;index:LONG;apsz:CSTRING):LONG;
  3495. BEGIN
  3496.      WinInsertLBoxItem:=WinSendMsg(hwndLBox,LM_INSERTITEM,MPFROMLONG(index),
  3497.                                    ULONG(@apsz));
  3498. END;
  3499.  
  3500. { returns the number of items in the listbox. }
  3501. FUNCTION WinQueryLBoxCount(hwndLBox:HWND):LONG;
  3502. BEGIN
  3503.      WinQueryLBoxCount:=WinSendMsg(hwndLBox,LM_QUERYITEMCOUNT,0,0);
  3504. END;
  3505.  
  3506.  
  3507. FUNCTION WinQueryLBoxItemText(hwndLBox:HWND;index:LONG;VAR apsz:CSTRING;
  3508.                               cchMax:SHORT):LONG;
  3509. BEGIN
  3510.      WinQueryLBoxItemText:=WinSendMsg(hwndLBox,LM_QUERYITEMTEXT,
  3511.                              MPFROM2SHORT(index,cchMax),ULONG(@apsz));
  3512. END;
  3513.  
  3514. { returns the length of item index. }
  3515. FUNCTION WinQueryLboxItemTextLength(hwndLbox:HWND;index:LONG):LONG;
  3516. BEGIN
  3517.      WinQueryLBoxItemTextLength:=WinSendMsg(hwndLBox,LM_QUERYITEMTEXTLENGTH,
  3518.                                             MPFROMSHORT(index),0);
  3519. END;
  3520.  
  3521.  
  3522. { sets the text of item index to psz.
  3523.   returns fSuccess. }
  3524. FUNCTION WinSetLboxItemText(hwndLbox:HWND;index:LONG;apsz:CSTRING):BOOL;
  3525. BEGIN
  3526.      WinSetLBoxItemText:=BOOL(WinSendMsg(hwndLBox,LM_SETITEMTEXT,
  3527.                            MPFROMLONG(index),ULONG(@apsz)));
  3528. END;
  3529.  
  3530. { returns the item index selected. (for single selection only) }
  3531. FUNCTION WinQueryLboxSelectedItem(hwndLbox:HWND):LONG;
  3532. BEGIN
  3533.      WinQueryLBoxSelectedItem:=WinSendMsg(hwndLBox,LM_QUERYSELECTION,
  3534.                                  MPFROMLONG(LIT_FIRST),0);
  3535. END;
  3536.  
  3537. { Useful macros }
  3538.  
  3539.  
  3540. { Sets the check state of menuitem #id to fcheck.
  3541.   returns fSuccess. }
  3542. FUNCTION WinCheckMenuItem(hwndMenu:HWND;id:ULONG;fcheck:BOOL):BOOL;
  3543. VAR w:USHORT;
  3544. BEGIN
  3545.      IF fCheck THEN w:=MIA_CHECKED
  3546.      ELSE w:=0;
  3547.      WinCheckMenuItem:=BOOL(WinSendMsg(hwndMenu,MM_SETITEMATTR,
  3548.                        MPFROM2SHORT(id,1),MPFROM2SHORT(MIA_CHECKED,w)));
  3549. END;
  3550.  
  3551. FUNCTION WinIsMenuItemChecked(hwndMenu:HWND;id:ULONG):BOOL;
  3552. BEGIN
  3553.      WinIsMenuItemChecked:=BOOL(WinSendMsg(hwndMenu,MM_QUERYITEMATTR,
  3554.                              MPFROM2SHORT(id,1),MPFROMLONG(MIA_CHECKED)));
  3555. END;
  3556.  
  3557. { sets the enable state of menuitem #id to fenable.
  3558.   returns fSuccess. }
  3559. FUNCTION WinEnableMenuItem(hwndMenu:HWND;id:ULONG;fenable:BOOL):BOOL;
  3560. VAR w:USHORT;
  3561. BEGIN
  3562.      IF fEnable THEN w:=0
  3563.      ELSE w:=MIA_DISABLED;
  3564.      WinEnableMenuItem:=BOOL(WinSendMsg(hwndMenu,MM_SETITEMATTR,
  3565.                          MPFROM2SHORT(id,1),MPFROM2SHORT(MIA_DISABLED,w)));
  3566. END;
  3567.  
  3568. { returns the enable state of menuitem #id. }
  3569. FUNCTION WinIsMenuItemEnabled(hwndMenu:HWND;id:ULONG):BOOL;
  3570. VAR l:ULONG;
  3571. BEGIN
  3572.      l:=WinSendMsg(hwndMenu,MM_QUERYITEMATTR,MPFROM2SHORT(id,1),
  3573.                    MPFROMLONG(MIA_DISABLED));
  3574.      IF l<>0 THEN WinIsMenuItemEnabled:=FALSE
  3575.      ELSE WinIsMenuItemEnabled:=TRUE;
  3576. END;
  3577.  
  3578.  
  3579. { sets the text of menuitem #id.
  3580.   returns fSuccess.  }
  3581. FUNCTION WinSetMenuItemText(hwndMenu:HWND;id:ULONG;apsz:CSTRING):BOOL;
  3582. BEGIN
  3583.      WinSetMenuItemText:=BOOLEAN(WinSendMsg(hwndMenu,MM_SETITEMTEXT,
  3584.                            MPFROMLONG(id),ULONG(@apsz)));
  3585. END;
  3586.  
  3587. { Returns TRUE if the specified item is a valid choice. }
  3588. FUNCTION WinIsMenuItemValid(hwndMenu:HWND;id:ULONG):BOOL;
  3589. BEGIN
  3590.      WinIsMenuItemValid:=BOOLEAN(WinSendMsg(hwndMenu,MM_ISITEMVALID,
  3591.                             MPFROM2SHORT(id,1),MPFROMLONG(0)));
  3592. END;
  3593.  
  3594.  
  3595. { DDE helper macros }
  3596.  
  3597.  
  3598. FUNCTION DDES_PSZITEMNAME(pddes:PDDESTRUCT):PChar;
  3599. BEGIN
  3600.      inc(pddes,pddes^.offszItemName);
  3601.      DDES_PSZITEMNAME:=POINTER(pddes);
  3602. END;
  3603.  
  3604.  
  3605. FUNCTION DDES_PABDATA(pddes:PDDESTRUCT):PBYTE;
  3606. BEGIN
  3607.      inc(pddes,pddes^.offabData);
  3608.      DDES_PABDATA:=POINTER(pddes);
  3609. END;
  3610.  
  3611. FUNCTION DDEI_PCONVCONTEXT(pddei:PDDEINIT):PCONVCONTEXT;
  3612. BEGIN
  3613.      inc(pddei,pddei^.offConvContext);
  3614.      DDEI_PCONVCONTEXT:=POINTER(pddei);
  3615. END;
  3616.  
  3617. BEGIN
  3618. END.
  3619.  
  3620.