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