home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v1.zip / DDKX86 / H / OS2DEF.H < prev    next >
C/C++ Source or Header  |  1995-04-14  |  20KB  |  630 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  4. /*                                                                           */
  5. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  6. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  7. /*    drivers. You may use this code in accordance with the IBM License      */
  8. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  9. /*    Copyright statement may not be removed.                                */
  10. /*                                                                           */
  11. /*****************************************************************************/
  12. /****************************** Module Header ******************************\
  13. *
  14. * Module Name: OS2DEF.H
  15. *
  16. * OS/2 Common Definitions file
  17. *
  18. *
  19. * ===========================================================================
  20. *
  21. * Comments at the end of each typedef line give the name tags used in
  22. * the assembler include version of this file.
  23. *
  24. * The assembler include version of this file excludes lines between NOINC
  25. * and INC comments.
  26. *
  27. #ifndef __IBMC__
  28.    * The public version of this file (as shipped with the OS/2 Toolkit
  29.    * product) excludes all non 32-bit material marked in this file
  30.    * as well as any areas specifically marked with __IBMC__ conditional
  31.    * sections - including this paragraph. The H2IBMH rexx command file
  32.    * removes these sections.
  33. #endif
  34. \***************************************************************************/
  35.  
  36. #ifdef __IBMC__
  37.    #pragma checkout( suspend )
  38.       #ifndef __CHKHDR__
  39.          #pragma checkout( suspend )
  40.       #endif
  41.    #pragma checkout( resume )
  42. #endif
  43.  
  44. #define OS2DEF_INCLUDED
  45.  
  46. #ifndef INCL_32         /* If neither INCL_32 or INCL_16 set already */
  47.    #ifndef INCL_16      /* find out from compiler if 32-bit or not.  */
  48.      #ifdef M_I386
  49.         #define INCL_32 /* Compiling for 32-bit */
  50.      #else
  51.         #define INCL_16 /* Compiling for 16-bit */
  52.      #endif
  53.   #endif
  54. #endif
  55.  
  56. #ifdef INCL_32
  57.    #ifndef __IBMC__
  58.    /*****************************************************************/
  59.    /* This #ifdef brackets the rest of this entire file.  It is     */
  60.    /* used to include either the 32-bit or 16-bit base definitions. */
  61.    /* No definitions (other than 16/32-bit determination) must be   */
  62.    /* placed above this.                                            */
  63.    /*****************************************************************/
  64.    #endif
  65.  
  66.    /* NOINC */
  67.    #ifdef INCL_16
  68.       #error message ("Using 32 bit definitions when compiling 16 bit code")
  69.    #endif /* INCL_16 */
  70.    #ifdef __IBMC__
  71.       #define FAR         /* this will be deleted shortly */
  72.       #define NEAR        /* this will be deleted shortly */
  73.  
  74.       #define APIENTRY    _System
  75.       #define EXPENTRY    _System
  76.  
  77.       #define APIENTRY16  _Far16 _Pascal
  78.       #define PASCAL16    _Far16 _Pascal
  79.       #define CDECL16     _Far16 _Cdecl
  80.    #else
  81.       #define FAR         /* nothing */
  82.       #define NEAR        /* nothing */
  83.  
  84.       #define APIENTRY    _syscall
  85.       #define EXPENTRY    _syscall
  86.  
  87.       #define PASCAL      /* nothing */
  88.    #endif
  89.  
  90.    #define VOID        void
  91.    /* INC */
  92.  
  93.    typedef unsigned long  APIRET;
  94.    typedef unsigned short APIRET16;
  95.    typedef unsigned long  APIRET32;
  96.  
  97.    #ifndef FALSE
  98.       #define FALSE   0
  99.    #endif
  100.  
  101.    #ifndef TRUE
  102.       #define TRUE    1
  103.    #endif
  104.  
  105.    #ifndef NULL
  106.       #ifdef __IBMC__
  107.          #define NULL ((void *)0)
  108.       #else
  109.          #define NULL 0
  110.       #endif
  111.    #endif
  112.  
  113.    #ifdef __IBMC__
  114.       typedef unsigned short   SHANDLE;
  115.    #else
  116.       /* TEMP      - David Kerr, this will change to short when the    */
  117.       /*             rest of the BSExxx.H files are changed to LHANDLE */
  118.       typedef unsigned long   SHANDLE;
  119.    #endif
  120.    typedef unsigned long    LHANDLE;
  121.  
  122.    #define NULLHANDLE    ( (LHANDLE) 0)
  123.    #define NULLSHANDLE   ( (SHANDLE) 0)
  124.  
  125.    /* NOINC */
  126.    #define CHAR    char            /* ch  */
  127.    #define SHORT   short           /* s   */
  128.    #define LONG    long            /* l   */
  129.  
  130.    #ifndef INCL_SAADEFS
  131.       #define INT  int             /* i   */
  132.    #endif /* !INCL_SAADEFS */
  133.    /* INC */
  134.  
  135.    typedef unsigned char  UCHAR;   /* uch */
  136.    typedef unsigned short USHORT;  /* us  */
  137.    typedef unsigned long  ULONG;   /* ul  */
  138.  
  139.    #ifndef INCL_SAADEFS
  140.       typedef unsigned int UINT;   /* ui  */
  141.    #endif /* !INCL_SAADEFS */
  142.  
  143.    #ifdef __IBMC__
  144.       typedef UCHAR     * _Seg16 PUCHAR16;
  145.       typedef CHAR      * _Seg16 PCHAR16;
  146.    #endif
  147.  
  148.    typedef unsigned char BYTE;     /* b   */
  149.  
  150.    typedef unsigned char FAR  *PSZ;
  151.    typedef unsigned char NEAR *NPSZ;
  152.  
  153.    typedef unsigned char FAR  *PCH;
  154.    typedef unsigned char NEAR *NPCH;
  155.  
  156.    #ifdef __IBMC__
  157.       typedef int (* APIENTRY PFN)  ();
  158.       typedef int (* APIENTRY NPFN) ();
  159.    #else
  160.       typedef int   (PASCAL FAR  *PFN)();
  161.       typedef int   (PASCAL NEAR *NPFN)();
  162.    #endif
  163.  
  164.    typedef BYTE   FAR  *PBYTE;
  165.    typedef BYTE   NEAR *NPBYTE;
  166.  
  167.    typedef CHAR   FAR *PCHAR;
  168.    typedef SHORT  FAR *PSHORT;
  169.    typedef LONG   FAR *PLONG;
  170.  
  171.    #ifndef INCL_SAADEFS
  172.       typedef INT    FAR *PINT;
  173.    #endif /* !INCL_SAADEFS */
  174.  
  175.    typedef UCHAR  FAR *PUCHAR;
  176.    typedef USHORT FAR *PUSHORT;
  177.    typedef ULONG  FAR *PULONG;
  178.  
  179.    #ifndef INCL_SAADEFS
  180.       typedef UINT FAR *PUINT;
  181.    #endif /* !INCL_SAADEFS */
  182.  
  183.    typedef VOID   FAR *PVOID;
  184.    typedef PVOID  FAR *PPVOID;
  185.  
  186.    typedef unsigned long BOOL;     /* f   */
  187.    typedef BOOL FAR *PBOOL;
  188.  
  189.    typedef unsigned short  BOOL16;
  190.    #ifdef __IBMC__
  191.       typedef BOOL16     * _Seg16 PBOOL16;
  192.    #else
  193.       typedef BOOL16 FAR *PBOOL16;
  194.    #endif
  195.  
  196.    /* NOINC */
  197.    #define BOOL32    BOOL
  198.    #define PBOOL32   PBOOL
  199.    /* INC */
  200.  
  201.    /* NOINC */
  202.    /* Quad-word */
  203.    typedef struct _QWORD {        /* qword */
  204.       ULONG   ulLo;
  205.       ULONG   ulHi;
  206.    } QWORD;
  207.    typedef QWORD FAR *PQWORD;
  208.    /* INC */
  209.  
  210.    #ifndef INCL_SAADEFS
  211.       typedef unsigned short SEL;     /* sel */
  212.       typedef SEL FAR *PSEL;
  213.  
  214.       /*** Useful Helper Macros */
  215.  
  216.       /* Create untyped far pointer from selector and offset */
  217.       #ifdef __IBMC__
  218.          #define MAKEP(sel,off) ((void * _Seg16)((((sel)&0xfff8)<<13)|(off)))
  219.       #else
  220.          #define MAKEP(sel, off)     ((PVOID)MAKEULONG(off, sel))
  221.       #endif
  222.  
  223.       /* Extract selector or offset from far pointer */
  224.       #ifdef __IBMC__
  225.          #define SELECTOROF(ptr)     ((((ULONG)(ptr))>>13)|7)
  226.       #else
  227.          #define SELECTOROF(p)       (((PUSHORT)&(p))[1])
  228.       #endif
  229.       #define OFFSETOF(p)         (((PUSHORT)&(p))[0])
  230.    #endif  /* !INCL_SAADEFS */
  231.  
  232.    /* Cast any variable to an instance of the specified type. */
  233.    #define MAKETYPE(v, type)   (*((type FAR *)&v))
  234.  
  235.    /* Calculate the byte offset of a field in a structure of type type. */
  236.    #define FIELDOFFSET(type, field)    ((SHORT)&(((type *)0)->field))
  237.  
  238.    /* Combine l & h to form a 32 bit quantity. */
  239.    #define MAKEULONG(l, h)  ((ULONG)(((USHORT)(l)) | ((ULONG)((USHORT)(h))) << 16))
  240.    #define MAKELONG(l, h)   ((LONG)MAKEULONG(l, h))
  241.  
  242.    /* Combine l & h to form a 16 bit quantity. */
  243.    #define MAKEUSHORT(l, h) (((USHORT)(l)) | ((USHORT)(h)) << 8)
  244.    #define MAKESHORT(l, h)  ((SHORT)MAKEUSHORT(l, h))
  245.  
  246.    /* Extract high and low order parts of 16 and 32 bit quantity */
  247.    #define LOBYTE(w)       LOUCHAR(w)
  248.    #define HIBYTE(w)       HIUCHAR(w)
  249.    #define LOUCHAR(w)      ((UCHAR)(w))
  250.    #define HIUCHAR(w)      ((UCHAR)(((USHORT)(w) >> 8) & 0xff))
  251.    #define LOUSHORT(l)     ((USHORT)((ULONG)l))
  252.    #define HIUSHORT(l)     ((USHORT)(((ULONG)(l) >> 16) & 0xffff))
  253.  
  254.    /*** Common Error definitions ****/
  255.  
  256.    typedef ULONG ERRORID;  /* errid */
  257.    typedef ERRORID FAR *PERRORID;
  258.  
  259.    /* Combine severity and error code to produce ERRORID */
  260.    #define MAKEERRORID(sev, error) (ERRORID)(MAKEULONG((error), (sev)))
  261.  
  262.    /* Extract error number from an errorid */
  263.    #define ERRORIDERROR(errid)            (LOUSHORT(errid))
  264.  
  265.    /* Extract severity from an errorid */
  266.    #define ERRORIDSEV(errid)              (HIUSHORT(errid))
  267.  
  268.    /* Severity codes */
  269.    #define SEVERITY_NOERROR                    0x0000
  270.    #define SEVERITY_WARNING                    0x0004
  271.    #define SEVERITY_ERROR                      0x0008
  272.    #define SEVERITY_SEVERE                     0x000C
  273.    #define SEVERITY_UNRECOVERABLE              0x0010
  274.  
  275.    /* Base component error values */
  276.  
  277.    #define WINERR_BASE     0x1000  /* Window Manager                  */
  278.    #define GPIERR_BASE     0x2000  /* Graphics Presentation Interface */
  279.    #define DEVERR_BASE     0x3000  /* Device Manager                  */
  280.    #define SPLERR_BASE     0x4000  /* Spooler                         */
  281.  
  282.    /*** Common types used across components */
  283.  
  284.    /*** Common DOS types */
  285.  
  286.    typedef LHANDLE HMODULE;        /* hmod */
  287.    typedef LHANDLE PID;            /* pid  */
  288.    typedef LHANDLE TID;            /* tid  */
  289.  
  290.    #ifndef INCL_SAADEFS
  291.       typedef USHORT  SGID;        /* sgid */
  292.    #endif  /* !INCL_SAADEFS */
  293.  
  294.    typedef HMODULE FAR *PHMODULE;
  295.    typedef PID FAR *PPID;
  296.    typedef TID FAR *PTID;
  297.  
  298.    #ifndef INCL_SAADEFS
  299.       typedef VOID FAR *HSEM;      /* hsem */
  300.       typedef HSEM FAR *PHSEM;
  301.    #endif  /* !INCL_SAADEFS */
  302.  
  303.    /*** Common SUP types */
  304.  
  305.    typedef LHANDLE   HAB;         /* hab  */
  306.    typedef HAB FAR *PHAB;
  307.  
  308.    /*** Common GPI/DEV types */
  309.  
  310.    typedef LHANDLE   HPS;         /* hps  */
  311.    typedef HPS FAR *PHPS;
  312.  
  313.    typedef LHANDLE   HDC;         /* hdc  */
  314.    typedef HDC FAR *PHDC;
  315.  
  316.    typedef LHANDLE   HRGN;        /* hrgn */
  317.    typedef HRGN FAR *PHRGN;
  318.  
  319.    typedef LHANDLE   HBITMAP;     /* hbm  */
  320.    typedef HBITMAP FAR *PHBITMAP;
  321.  
  322.    typedef LHANDLE   HMF;         /* hmf  */
  323.    typedef HMF FAR *PHMF;
  324.  
  325.    typedef LHANDLE   HPAL;        /* hpal */
  326.    typedef HPAL FAR *PHPAL;
  327.  
  328.    typedef LONG     COLOR;        /* clr  */
  329.    typedef COLOR FAR *PCOLOR;
  330.  
  331.    typedef struct _POINTL  {      /* ptl  */
  332.       LONG  x;
  333.       LONG  y;
  334.    } POINTL;
  335.    typedef POINTL  FAR  *PPOINTL;
  336.    typedef POINTL  NEAR *NPPOINTL;
  337.  
  338.    typedef struct _POINTS {       /* pts */
  339.       SHORT x;
  340.       SHORT y;
  341.    } POINTS;
  342.    typedef POINTS FAR *PPOINTS;
  343.  
  344.    typedef struct _RECTL {        /* rcl */
  345.       LONG  xLeft;
  346.       LONG  yBottom;
  347.       LONG  xRight;
  348.       LONG  yTop;
  349.    } RECTL;
  350.    typedef RECTL FAR  *PRECTL;
  351.    typedef RECTL NEAR *NPRECTL;
  352.  
  353.    typedef CHAR STR8[8];          /* str8 */
  354.    typedef STR8 FAR *PSTR8;
  355.  
  356.    /*** common DEV/SPL types */
  357.  
  358.    /* structure for Device Driver data */
  359.  
  360.    typedef struct _DRIVDATA {     /* driv */
  361.       LONG    cb;
  362.       LONG    lVersion;
  363.       CHAR    szDeviceName[32];
  364.       CHAR    abGeneralData[1];
  365.    } DRIVDATA;
  366.    typedef DRIVDATA FAR *PDRIVDATA;
  367.  
  368.    /* pointer data for DevOpenDC */
  369.  
  370.    typedef PSZ FAR *PDEVOPENDATA;
  371.  
  372.    /* array indices for array parameter for DevOpenDC, SplQmOpen or SplQpOpen */
  373.  
  374.    #define ADDRESS          0
  375.    #ifndef INCL_SAADEFS
  376.       #define DRIVER_NAME      1
  377.       #define DRIVER_DATA      2
  378.       #define DATA_TYPE        3
  379.       #define COMMENT          4
  380.       #define PROC_NAME        5
  381.       #define PROC_PARAMS      6
  382.       #define SPL_PARAMS       7
  383.       #define NETWORK_PARAMS   8
  384.  
  385.       /* structure definition as an alternative of the array parameter */
  386.  
  387.       typedef struct _DEVOPENSTRUC {    /* dop */
  388.          PSZ        pszLogAddress;
  389.          PSZ        pszDriverName;
  390.          PDRIVDATA  pdriv;
  391.          PSZ        pszDataType;
  392.          PSZ        pszComment;
  393.          PSZ        pszQueueProcName;
  394.          PSZ        pszQueueProcParams;
  395.          PSZ        pszSpoolerParams;
  396.          PSZ        pszNetworkParams;
  397.       } DEVOPENSTRUC;
  398.       typedef DEVOPENSTRUC FAR *PDEVOPENSTRUC;
  399.    #endif  /* !INCL_SAADEFS */
  400.  
  401.    /* common PMWP object and PMSTDDLG drag data */
  402.  
  403.    typedef struct _PRINTDEST {   /* prntdst */
  404.       ULONG        cb;
  405.       LONG         lType;
  406.       PSZ          pszToken;
  407.       LONG         lCount;
  408.       PDEVOPENDATA pdopData;
  409.       ULONG        fl;
  410.       PSZ          pszPrinter;
  411.    } PRINTDEST;
  412.    typedef PRINTDEST FAR *PPRINTDEST;
  413.  
  414.    #define PD_JOB_PROPERTY   0x0001      /* Flags for .fl field           */
  415.  
  416.    /*** common AVIO/GPI types */
  417.  
  418.    /* values of fsSelection field of FATTRS structure */
  419.    #define FATTR_SEL_ITALIC        0x0001
  420.    #define FATTR_SEL_UNDERSCORE    0x0002
  421.    #define FATTR_SEL_OUTLINE       0x0008
  422.    #define FATTR_SEL_STRIKEOUT     0x0010
  423.    #define FATTR_SEL_BOLD          0x0020
  424.  
  425.    /* values of fsType field of FATTRS structure */
  426.    #define FATTR_TYPE_KERNING      0x0004
  427.    #define FATTR_TYPE_MBCS         0x0008
  428.    #define FATTR_TYPE_DBCS         0x0010
  429.    #define FATTR_TYPE_ANTIALIASED  0x0020
  430.  
  431.    /* values of fsFontUse field of FATTRS structure */
  432.    #define FATTR_FONTUSE_NOMIX         0x0002
  433.    #define FATTR_FONTUSE_OUTLINE       0x0004
  434.    #define FATTR_FONTUSE_TRANSFORMABLE 0x0008
  435.    /* size for fields in the font structures */
  436.  
  437.    #define FACESIZE 32
  438.  
  439.    /* font struct for Vio/GpiCreateLogFont */
  440.  
  441.    typedef struct _FATTRS {          /* fat */
  442.       USHORT  usRecordLength;
  443.       USHORT  fsSelection;
  444.       LONG    lMatch;
  445.       CHAR    szFacename[FACESIZE];
  446.       USHORT  idRegistry;
  447.       USHORT  usCodePage;
  448.       LONG    lMaxBaselineExt;
  449.       LONG    lAveCharWidth;
  450.       USHORT  fsType;
  451.       USHORT  fsFontUse;
  452.    } FATTRS;
  453.    typedef FATTRS FAR *PFATTRS;
  454.  
  455.    /* values of fsType field of FONTMETRICS structure */
  456.    #define FM_TYPE_FIXED           0x0001
  457.    #define FM_TYPE_LICENSED        0x0002
  458.    #define FM_TYPE_KERNING         0x0004
  459.    #define FM_TYPE_DBCS            0x0010
  460.    #define FM_TYPE_MBCS            0x0018
  461.    #define FM_TYPE_64K             0x8000
  462.    #define FM_TYPE_ATOMS           0x4000
  463.    #define FM_TYPE_FAMTRUNC        0x2000
  464.    #define FM_TYPE_FACETRUNC       0x1000
  465.  
  466.    /* values of fsDefn field of FONTMETRICS structure */
  467.    #define FM_DEFN_OUTLINE         0x0001
  468.    #define FM_DEFN_IFI             0x0002
  469.    #define FM_DEFN_WIN             0x0004
  470.    #define FM_DEFN_GENERIC         0x8000
  471.  
  472.    /* values of fsSelection field of FONTMETRICS structure */
  473.    #define FM_SEL_ITALIC           0x0001
  474.    #define FM_SEL_UNDERSCORE       0x0002
  475.    #define FM_SEL_NEGATIVE         0x0004
  476.    #define FM_SEL_OUTLINE          0x0008          /* Hollow Outline Font */
  477.    #define FM_SEL_STRIKEOUT        0x0010
  478.    #define FM_SEL_BOLD             0x0020
  479.    #define FM_SEL_ISO9241_TESTED   0x0040
  480.  
  481.    /* ISO 9241 is an international standard covering health and safety      */
  482.    /* in the work place for users of visual display terminals. Part 3 of    */
  483.    /* this standard covers clarity and legibility of text displayed on      */
  484.    /* computer screens, it places requirements on minimum sizes and         */
  485.    /* luminance contrast. The presence of FM_SEL_ISO9241_TESTED flag in the */
  486.    /* font metrics indicates that the font has been tested for compliance   */
  487.    /* to the standard. The FM_ISO_XXX flags indicate the results of the     */
  488.    /* test on the IBM 9515, 9517 and 9518 color displays at the supported   */
  489.    /* dimensions of 640x480 and 1024x768. To ensure compliance the          */
  490.    /* sXDeviceRes and sYDeviceRes must also match the target display        */
  491.    /* resolution.                                                           */
  492.  
  493.    /* values of fbPassed/FailedISO field in the PANOSE structure */
  494.    #define FM_ISO_9518_640        0x01
  495.    #define FM_ISO_9515_640        0x02
  496.    #define FM_ISO_9515_1024       0x04
  497.    #define FM_ISO_9517_640        0x08
  498.    #define FM_ISO_9517_1024       0x10
  499.  
  500.    /* values of fsCapabilities field of FONTMETRICS structure */
  501.    #define FM_CAP_NOMIX            0x0001
  502.  
  503.    /* font metrics returned by GpiQueryFonts and others */
  504.  
  505.    typedef struct _PANOSE { /* panose */
  506.       BYTE    bFamilyType;
  507.       BYTE    bSerifStyle;
  508.       BYTE    bWeight;
  509.       BYTE    bProportion;
  510.       BYTE    bContrast;
  511.       BYTE    bStrokeVariation;
  512.       BYTE    bArmStyle;
  513.       BYTE    bLetterform;
  514.       BYTE    bMidline;
  515.       BYTE    bXHeight;
  516.       BYTE    fbPassedISO;
  517.       BYTE    fbFailedISO;
  518.    } PANOSE;
  519.  
  520.    typedef struct _FONTMETRICS {   /* fm */
  521.       CHAR    szFamilyname[FACESIZE];
  522.       CHAR    szFacename[FACESIZE];
  523.       USHORT  idRegistry;
  524.       USHORT  usCodePage;
  525.       LONG    lEmHeight;
  526.       LONG    lXHeight;
  527.       LONG    lMaxAscender;
  528.       LONG    lMaxDescender;
  529.       LONG    lLowerCaseAscent;
  530.       LONG    lLowerCaseDescent;
  531.       LONG    lInternalLeading;
  532.       LONG    lExternalLeading;
  533.       LONG    lAveCharWidth;
  534.       LONG    lMaxCharInc;
  535.       LONG    lEmInc;
  536.       LONG    lMaxBaselineExt;
  537.       SHORT   sCharSlope;
  538.       SHORT   sInlineDir;
  539.       SHORT   sCharRot;
  540.       USHORT  usWeightClass;
  541.       USHORT  usWidthClass;
  542.       SHORT   sXDeviceRes;
  543.       SHORT   sYDeviceRes;
  544.       SHORT   sFirstChar;
  545.       SHORT   sLastChar;
  546.       SHORT   sDefaultChar;
  547.       SHORT   sBreakChar;
  548.       SHORT   sNominalPointSize;
  549.       SHORT   sMinimumPointSize;
  550.       SHORT   sMaximumPointSize;
  551.       USHORT  fsType;
  552.       USHORT  fsDefn;
  553.       USHORT  fsSelection;
  554.       USHORT  fsCapabilities;
  555.       LONG    lSubscriptXSize;
  556.       LONG    lSubscriptYSize;
  557.       LONG    lSubscriptXOffset;
  558.       LONG    lSubscriptYOffset;
  559.       LONG    lSuperscriptXSize;
  560.       LONG    lSuperscriptYSize;
  561.       LONG    lSuperscriptXOffset;
  562.       LONG    lSuperscriptYOffset;
  563.       LONG    lUnderscoreSize;
  564.       LONG    lUnderscorePosition;
  565.       LONG    lStrikeoutSize;
  566.       LONG    lStrikeoutPosition;
  567.       SHORT   sKerningPairs;
  568.       SHORT   sFamilyClass;
  569.       LONG    lMatch;
  570.       LONG    FamilyNameAtom;
  571.       LONG    FaceNameAtom;
  572.       PANOSE  panose;
  573.    } FONTMETRICS;
  574.    typedef FONTMETRICS FAR *PFONTMETRICS;
  575.  
  576.    /*** Common WIN types */
  577.  
  578.    typedef LHANDLE HWND;      /* hwnd */
  579.    typedef HWND FAR *PHWND;
  580.  
  581.    typedef LHANDLE HMQ;       /* hmq */
  582.    typedef LHANDLE FAR *PHMQ;
  583.  
  584.    /* NOINC */
  585.    #define WRECT RECTL
  586.    #define PWRECT PRECTL
  587.    #define NPWRECT NPRECTL
  588.  
  589.    #define WPOINT POINTL
  590.    #define PWPOINT PPOINTL
  591.    #define NPWPOINT NPPOINTL
  592.    /* INC */
  593.  
  594.    typedef struct _ICONINFO {  /* icninf */
  595.       ULONG   cb;                  /* size of ICONINFO structure */
  596.       ULONG   fFormat;
  597.       PSZ     pszFileName;         /* use when fFormat = ICON_FILE */
  598.       HMODULE hmod;                /* use when fFormat = ICON_RESOURCE */
  599.       ULONG   resid;               /* use when fFormat = ICON_RESOURCE */
  600.       ULONG   cbIconData;          /* use when fFormat = ICON_DATA     */
  601.       PVOID   pIconData;           /* use when fFormat = ICON_DATA     */
  602.    } ICONINFO;
  603.    typedef ICONINFO FAR *PICONINFO;
  604.  
  605.    #define ICON_FILE     1         /* flags for fFormat */
  606.    #define ICON_RESOURCE 2
  607.    #define ICON_DATA     3
  608.    #define ICON_CLEAR    4
  609.  
  610. #else /* not INCL_32 */
  611.    /* The previous #else/#endif corresponds to a #if near the top of this  */
  612.    /* file.  The next three lines include the 16-bit version of this file, */
  613.    /* hence these lines MUST be the last lines in this include file.       */
  614.  
  615.    #ifdef INCL_16
  616.       #include <os2def16.h>
  617.    #endif /* INCL_16 */
  618.  
  619. #endif /* INCL_32 */
  620.  
  621. #ifdef __IBMC__
  622.    #pragma checkout( suspend )
  623.       #ifndef __CHKHDR__
  624.          #pragma checkout( resume )
  625.       #endif
  626.    #pragma checkout( resume )
  627. #endif
  628.  
  629. /**************************** end of file **********************************/
  630.