Annotation of os232sdk/toolkt20/c/os2h/pmwin.h, revision 1.1

1.1     ! root        1: /*static char *SCCSID = "@(#)pmwin.h   13.40 90/05/01";*/
        !             2: /***************************************************************************\
        !             3: *
        !             4: * Module Name: PMWIN.H
        !             5: *
        !             6: * OS/2 Presentation Manager Window Manager include file
        !             7: *
        !             8: * Copyright (c) International Business Machines Corporation 1981, 1988, 1989
        !             9: * Copyright (c) Microsoft Corporation 1981, 1988, 1989
        !            10: *
        !            11: * =======================================================================
        !            12: *
        !            13: * The folowing symbols are used in this file for conditional sections.
        !            14: *
        !            15: * If INCL_WIN is defined, all subcomponents are included.
        !            16: *
        !            17: * Subcomponents marked with "+" are partially included by default:
        !            18: *
        !            19: *   #define:               To include:
        !            20: *
        !            21: * + INCL_WINWINDOWMGR      General window management
        !            22: * + INCL_WINMESSAGEMGR     Message management
        !            23: * + INCL_WININPUT          Mouse and keyboard input
        !            24: * + INCL_WINDIALOGS        Dialog boxes
        !            25: * + INCL_WINSTATICS        Static controls
        !            26: * + INCL_WINBUTTONS        Button controls
        !            27: * + INCL_WINENTRYFIELDS            Entry Fields
        !            28: *   INCL_WINMLE                    Multiple Line Entry Fields
        !            29: * + INCL_WINLISTBOXES      List box controls
        !            30: * + INCL_WINMENUS          Menu controls
        !            31: * + INCL_WINSCROLLBARS     Scroll bar controls
        !            32: * + INCL_WINFRAMEMGR       Frame manager
        !            33: *   INCL_WINFRAMECTLS      Frame controls (title bars & size border)
        !            34: *   INCL_WINRECTANGLES     Rectangle routines
        !            35: *   INCL_WINSYS                    System values (and colors)
        !            36: *   INCL_WINTIMER          Timer routines
        !            37: * + INCL_WINACCELERATORS    Keyboard accelerators
        !            38: *   INCL_WINTRACKRECT      WinTrackRect() function
        !            39: *   INCL_WINCLIPBOARD      Clipboard manager
        !            40: * + INCL_WINCURSORS        Text cursors
        !            41: * + INCL_WINPOINTERS       Mouse pointers
        !            42: *   INCL_WINHOOKS          Hook manager
        !            43: * + INCL_WINSWITCHLIST     Shell Switch List API
        !            44: *   INCL_WINPROGRAMLIST            Shell Program List API
        !            45: *   INCL_WINSHELLDATA      Shell Data (?)
        !            46: *   INCL_WINCOUNTRY        Country support
        !            47: *   INCL_WINHEAP           Heap Manager
        !            48: *   INCL_WINATOM           Atom Manager
        !            49: *   INCL_WINCATCHTHROW     WinCatch/WinThrow support
        !            50: *   INCL_WINERRORS         Error code definitions
        !            51: *   INCL_NLS               DBCS window manager definition
        !            52: * + INCL_WINHELP           Help Manager definitions
        !            53: *   INCL_WINSEI                    Set Error Info API
        !            54: *   INCL_WINLOAD           Load/Delete Library/Procedure
        !            55: *   INCL_WINTYPES          Definitions for Datatypes
        !            56: *   INCL_WINTHUNKAPI   Thunk Procedure API
        !            57: *   INCL_WINDESKTOP    Desktop API
        !            58: *
        !            59: *
        !            60: \***************************************************************************/
        !            61: 
        !            62: #define INCL_WININCLUDED
        !            63: 
        !            64: 
        !            65: #ifndef INCL_PMINCLUDED
        !            66: #if !(defined(INCL_32) || defined(INCL_16))
        !            67: #ifdef M_I386
        !            68:     #define INCL_32
        !            69: #else /* not M_I386 */
        !            70:     #define INCL_16
        !            71: #endif /* M_I386 */
        !            72: #endif /* INCL_32 || INCL_16 */
        !            73: #endif /* INCL_PMINCLUDED */
        !            74: 
        !            75: /* XLATOFF */
        !            76: #ifdef INCL_16
        !            77:   #include <pmwin16.h>
        !            78: #endif /* INCL_16 */
        !            79: /* XLATON */
        !            80: 
        !            81: 
        !            82: #ifdef INCL_WIN
        !            83: 
        !            84: #define INCL_WINWINDOWMGR
        !            85: #define INCL_WINMESSAGEMGR
        !            86: #define INCL_WININPUT
        !            87: #define INCL_WINDIALOGS
        !            88: #define INCL_WINSTATICS
        !            89: #define INCL_WINBUTTONS
        !            90: #define INCL_WINENTRYFIELDS
        !            91: #define INCL_WINMLE
        !            92: #define INCL_WINLISTBOXES
        !            93: #define INCL_WINMENUS
        !            94: #define INCL_WINSCROLLBARS
        !            95: #define INCL_WINFRAMEMGR
        !            96: #define INCL_WINFRAMECTLS
        !            97: #define INCL_WINRECTANGLES
        !            98: #define INCL_WINSYS
        !            99: #define INCL_WINTIMER
        !           100: #define INCL_WINACCELERATORS
        !           101: #define INCL_WINTRACKRECT
        !           102: #define INCL_WINCLIPBOARD
        !           103: #define INCL_WINCURSORS
        !           104: #define INCL_WINPOINTERS
        !           105: #define INCL_WINHOOKS
        !           106: #define INCL_WINSWITCHLIST
        !           107: #define INCL_WINPROGRAMLIST
        !           108: #define INCL_WINSHELLDATA
        !           109: #define INCL_WINCOUNTRY
        !           110: #define INCL_WINHEAP
        !           111: #define INCL_WINATOM
        !           112: #define INCL_WINCATCHTHROW
        !           113: #define INCL_WINERRORS
        !           114: #define INCL_WINDDE
        !           115: #define INCL_WINHELP
        !           116: #define INCL_WINSEI
        !           117: #define INCL_WINLOAD
        !           118: #define INCL_WINTYPES
        !           119: #define INCL_WINDESKTOP
        !           120: #define INCL_WINPALETTE
        !           121: #define INCL_WINTHUNKAPI
        !           122: 
        !           123: #else /* INCL_WIN */
        !           124: 
        !           125: #ifdef RC_INVOKED
        !           126: #define INCL_WININPUT
        !           127: #define INCL_WINDIALOGS
        !           128: #define INCL_WINSTATICS
        !           129: #define INCL_WINBUTTONS
        !           130: #define INCL_WINENTRYFIELDS
        !           131: #define INCL_WINLISTBOXES
        !           132: #define INCL_WINMENUS
        !           133: #define INCL_WINSCROLLBARS
        !           134: #define INCL_WINFRAMEMGR
        !           135: #define INCL_WINFRAMECTLS
        !           136: #define INCL_WINACCELERATORS
        !           137: #define INCL_WINPOINTERS
        !           138: #define INCL_WINMESSAGEMGR
        !           139: #define INCL_WINMLE
        !           140: #define INCL_WINHELP
        !           141: #endif /* RC_INVOKED */
        !           142: 
        !           143: #endif /* INCL_WIN */
        !           144: 
        !           145: /* ensure standard entry field defintions if MLE is defined */
        !           146: #ifdef INCL_WINMLE
        !           147: #ifndef INCL_WINENTRYFIELDS
        !           148: #define INCL_WINENTRYFIELDS
        !           149: #endif /* INCL_WINENTRYFIELDS */
        !           150: #endif /* INCL_WINMLE */
        !           151: 
        !           152: /* INCL_WINCOMMON compatability */
        !           153: #ifdef INCL_WINCOMMON
        !           154: #define INCL_WINWINDOWMGR
        !           155: #endif /* INCL_WINCOMMON */
        !           156: 
        !           157: #ifdef INCL_ERRORS
        !           158: #define INCL_WINERRORS
        !           159: #endif /* INCL_ERRORS */
        !           160: 
        !           161: /***************************************************************************/
        !           162: /***       General Window Management types, constants and macros        ***/
        !           163: 
        !           164: typedef VOID FAR *MPARAM;      /* mp   */
        !           165: typedef MPARAM FAR *PMPARAM;   /* pmp  */
        !           166: typedef VOID FAR *MRESULT;     /* mres */
        !           167: typedef MRESULT FAR *PMRESULT; /* pmres */
        !           168: 
        !           169: /* Macros to make an MPARAM from standard types. */
        !           170: #define MPVOID                    ((MPARAM)0L)
        !           171: #define MPFROMP(p)                ((MPARAM)(VOID FAR *)(p))
        !           172: #define MPFROMHWND(hwnd)          ((MPARAM)(HWND)(hwnd))
        !           173: #define MPFROMCHAR(ch)            ((MPARAM)(USHORT)(ch))
        !           174: #define MPFROMSHORT(s)            ((MPARAM)(USHORT)(s))
        !           175: #define MPFROM2SHORT(s1, s2)      ((MPARAM)MAKELONG(s1, s2))
        !           176: #define MPFROMSH2CH(s, uch1, uch2) ((MPARAM)MAKELONG(s, MAKESHORT(uch1, uch2)))
        !           177: #define MPFROMLONG(l)             ((MPARAM)(ULONG)(l))
        !           178: 
        !           179: /* Macros to extract standard types from an MPARAM */
        !           180: #define PVOIDFROMMP(mp)                   ((VOID FAR *)(mp))
        !           181: #define HWNDFROMMP(mp)            ((HWND)(mp))
        !           182: #define CHAR1FROMMP(mp)                   ((UCHAR)(mp))
        !           183: #define CHAR2FROMMP(mp)                   ((UCHAR)((ULONG)mp >> 8))
        !           184: #define CHAR3FROMMP(mp)                   ((UCHAR)((ULONG)mp >> 16))
        !           185: #define CHAR4FROMMP(mp)                   ((UCHAR)((ULONG)mp >> 24))
        !           186: #define SHORT1FROMMP(mp)          ((USHORT)(ULONG)(mp))
        !           187: #define SHORT2FROMMP(mp)          ((USHORT)((ULONG)mp >> 16))
        !           188: #define LONGFROMMP(mp)            ((ULONG)(mp))
        !           189: 
        !           190: /* Macros to make an MRESULT from standard types. */
        !           191: #define MRFROMP(p)                ((MRESULT)(VOID FAR *)(p))
        !           192: #define MRFROMSHORT(s)            ((MRESULT)(USHORT)(s))
        !           193: #define MRFROM2SHORT(s1, s2)      ((MRESULT)MAKELONG(s1, s2))
        !           194: #define MRFROMLONG(l)             ((MRESULT)(ULONG)(l))
        !           195: 
        !           196: /* Macros to extract standard types from an MRESULT */
        !           197: #define PVOIDFROMMR(mr)                   ((VOID FAR *)(mr))
        !           198: #define SHORT1FROMMR(mr)          ((USHORT)((ULONG)mr))
        !           199: #define SHORT2FROMMR(mr)          ((USHORT)((ULONG)mr >> 16))
        !           200: #define LONGFROMMR(mr)            ((ULONG)(mr))
        !           201: 
        !           202: #ifdef INCL_32
        !           203: typedef MRESULT (EXPENTRY *PFNWP)(HWND, USHORT, MPARAM, MPARAM);
        !           204: #else
        !           205: typedef MRESULT (PASCAL FAR *PFNWP)(HWND, USHORT, MPARAM, MPARAM);
        !           206: #endif
        !           207: 
        !           208: 
        !           209: #ifndef INCL_SAADEFS
        !           210: #define HWND_DESKTOP              (HWND)1
        !           211: #define HWND_OBJECT               (HWND)2
        !           212: #endif /* !INCL_SAADEFS */
        !           213: 
        !           214: #define HWND_TOP                  (HWND)3
        !           215: #define HWND_BOTTOM               (HWND)4
        !           216: 
        !           217: #ifndef INCL_SAADEFS
        !           218: #define HWND_THREADCAPTURE        (HWND)5
        !           219: #endif /* !INCL_SAADEFS */
        !           220: 
        !           221: 
        !           222: /* Standard Window Styles */
        !           223: 
        !           224: #define WS_VISIBLE                0x80000000L
        !           225: #define WS_DISABLED               0x40000000L
        !           226: #define WS_CLIPCHILDREN                   0x20000000L
        !           227: #define WS_CLIPSIBLINGS                   0x10000000L
        !           228: #define WS_PARENTCLIP             0x08000000L
        !           229: #define WS_SAVEBITS               0x04000000L
        !           230: #define WS_SYNCPAINT              0x02000000L
        !           231: #define WS_MINIMIZED              0x01000000L
        !           232: #define WS_MAXIMIZED              0x00800000L
        !           233: 
        !           234: /* Dialog manager styles */
        !           235: 
        !           236: #define WS_GROUP                  0x00010000L
        !           237: #define WS_TABSTOP                0x00020000L
        !           238: #define WS_MULTISELECT            0x00040000L
        !           239: 
        !           240: 
        !           241: /* Class styles */
        !           242: 
        !           243: #define CS_MOVENOTIFY             0x00000001L
        !           244: #define CS_SIZEREDRAW             0x00000004L
        !           245: #define CS_HITTEST                0x00000008L
        !           246: #define CS_PUBLIC                 0x00000010L
        !           247: #define CS_FRAME                  0x00000020L
        !           248: #define CS_CLIPCHILDREN                   0x20000000L
        !           249: #define CS_CLIPSIBLINGS                   0x10000000L
        !           250: #define CS_PARENTCLIP             0x08000000L
        !           251: #define CS_SAVEBITS               0x04000000L
        !           252: #define CS_SYNCPAINT              0x02000000L
        !           253: 
        !           254: /***************************************************************************/
        !           255: /****      Window Manager Subsection part 1                            ****/
        !           256: #if (defined(INCL_WINWINDOWMGR) || !defined(INCL_NOCOMMON))
        !           257: 
        !           258: BOOL   APIENTRY WinRegisterClass(HAB hab, PSZ pszClassName, PFNWP pfnWndProc,
        !           259:                                  ULONG flStyle, USHORT cbWindowData);
        !           260: 
        !           261: MRESULT APIENTRY WinDefWindowProc(HWND hwnd, USHORT msg, MPARAM mp1,
        !           262:                                  MPARAM mp2);
        !           263: BOOL   APIENTRY WinDestroyWindow(HWND hwnd);
        !           264: BOOL   APIENTRY WinShowWindow(HWND hwnd, BOOL fShow);
        !           265: BOOL   APIENTRY WinQueryWindowRect(HWND hwnd, PRECTL prclDest);
        !           266: 
        !           267: HPS   APIENTRY WinGetPS(HWND hwnd);
        !           268: BOOL  APIENTRY WinReleasePS(HPS hps);
        !           269: BOOL  APIENTRY WinEndPaint(HPS hps);
        !           270: #ifndef INCL_SAADEFS
        !           271: HPS   APIENTRY WinGetClipPS(HWND hwnd, HWND hwndClip, USHORT fs);
        !           272: BOOL  APIENTRY WinIsWindowShowing(HWND hwnd);
        !           273: #endif /* !INCL_SAADEFS */
        !           274: 
        !           275: HPS   APIENTRY WinBeginPaint(HWND hwnd, HPS hps, PRECTL prclPaint);
        !           276: HDC   APIENTRY WinOpenWindowDC(HWND hwnd);
        !           277: 
        !           278: SHORT APIENTRY WinScrollWindow(HWND hwnd, SHORT dx, SHORT dy,
        !           279:                               PRECTL prclScroll, PRECTL prclClip,
        !           280:                               HRGN hrgnUpdate, PRECTL prclUpdate,
        !           281:                               USHORT rgfsw);
        !           282: 
        !           283: /* WinGetClipPS() flags */
        !           284: 
        !           285: #ifndef INCL_SAADEFS
        !           286: #define PSF_LOCKWINDOWUPDATE      0x0001
        !           287: #define PSF_CLIPUPWARDS                   0x0002
        !           288: #define PSF_CLIPDOWNWARDS         0x0004
        !           289: #define PSF_CLIPSIBLINGS          0x0008
        !           290: #define PSF_CLIPCHILDREN          0x0010
        !           291: #define PSF_PARENTCLIP            0x0020
        !           292: 
        !           293: #endif /* !INCL_SAADEFS */
        !           294: 
        !           295: /* WinScrollWindow() flags */
        !           296: 
        !           297: #define SW_SCROLLCHILDREN         0x0001
        !           298: #define SW_INVALIDATERGN          0x0002
        !           299: 
        !           300: BOOL  APIENTRY WinFillRect(HPS hps, PRECTL prcl, LONG lColor);
        !           301: 
        !           302: /* WinInitialize/WinTerminate Interface declarations */
        !           303: 
        !           304: typedef struct _QVERSDATA { /* qver */
        !           305:     USHORT   environment;
        !           306:     USHORT   version;
        !           307: } QVERSDATA;
        !           308: typedef QVERSDATA FAR *PQVERSDATA;
        !           309: 
        !           310: #define QV_OS2                    0x0000
        !           311: #define QV_CMS                    0x0001
        !           312: #define QV_TSO                    0x0002
        !           313: #define QV_TSOBATCH               0x0003
        !           314: #define QV_OS400                  0x0004
        !           315: 
        !           316: 
        !           317: ULONG  APIENTRY WinQueryVersion(HAB hab);
        !           318: HAB    APIENTRY WinInitialize(USHORT fsOptions);
        !           319: BOOL   APIENTRY WinTerminate(HAB hab);
        !           320: 
        !           321: HAB    APIENTRY WinQueryAnchorBlock(HWND hwnd);
        !           322: 
        !           323: #endif /* INCL_WINWINDOWMGR | !INCL_NOCOMMON */
        !           324: /******************  End of Window Manager COMMON section ******************/
        !           325: 
        !           326: 
        !           327: HWND   APIENTRY WinCreateWindow(HWND hwndParent, PSZ pszClass, PSZ pszName,
        !           328:                                 ULONG flStyle, SHORT x, SHORT y, SHORT cx,
        !           329:                                 SHORT cy, HWND hwndOwner,
        !           330:                                 HWND hwndInsertBehind, USHORT id,
        !           331:                                 PVOID pCtlData, PVOID pPresParams);
        !           332: BOOL   APIENTRY WinEnableWindow(HWND hwnd, BOOL fEnable);
        !           333: BOOL   APIENTRY WinIsWindowEnabled(HWND hwnd);
        !           334: BOOL   APIENTRY WinEnableWindowUpdate(HWND hwnd, BOOL fEnable);
        !           335: BOOL   APIENTRY WinIsWindowVisible(HWND hwnd);
        !           336: SHORT  APIENTRY WinQueryWindowText(HWND hwnd, SHORT cchBufferMax,
        !           337:                                    PCH pchBuffer);
        !           338: BOOL   APIENTRY WinSetWindowText(HWND hwnd, PSZ pszText);
        !           339: SHORT  APIENTRY WinQueryWindowTextLength(HWND hwnd);
        !           340: HWND   APIENTRY WinWindowFromID(HWND hwndParent, USHORT id);
        !           341: 
        !           342: BOOL   APIENTRY WinIsWindow(HAB hab, HWND hwnd);
        !           343: HWND   APIENTRY WinQueryWindow(HWND hwnd, SHORT cmd, BOOL fLock);
        !           344: SHORT  APIENTRY WinMultWindowFromIDs(HWND hwndParent, PHWND prghwnd,
        !           345:                                      USHORT idFirst, USHORT idLast);
        !           346: 
        !           347: /* WinQueryWindow() codes */
        !           348: 
        !           349: #define QW_NEXT                0
        !           350: #define QW_PREV                1
        !           351: #define QW_TOP         2
        !           352: #define QW_BOTTOM      3
        !           353: #define QW_OWNER       4
        !           354: #define QW_PARENT      5
        !           355: #define QW_NEXTTOP     6
        !           356: #define QW_PREVTOP     7
        !           357: #define QW_FRAMEOWNER  8
        !           358: 
        !           359: 
        !           360: BOOL   APIENTRY WinSetParent(HWND hwnd, HWND hwndNewParent, BOOL fRedraw);
        !           361: 
        !           362: BOOL   APIENTRY WinIsChild(HWND hwnd, HWND hwndParent);
        !           363: BOOL   APIENTRY WinSetOwner(HWND hwnd, HWND hwndNewOwner);
        !           364: #ifndef INCL_SAADEFS
        !           365: BOOL   APIENTRY WinQueryWindowProcess(HWND hwnd, PPID ppid, PTID ptid);
        !           366: #endif /* !INCL_SAADEFS */
        !           367: 
        !           368: HWND   APIENTRY WinQueryObjectWindow(HWND hwndDesktop);
        !           369: HWND   APIENTRY WinQueryDesktopWindow(HAB hab, HDC hdc);
        !           370: 
        !           371: /*** Window positioning functions */
        !           372: 
        !           373: /* WinSetMultWindowPos() structure */
        !           374: 
        !           375: #ifdef INCL_32
        !           376: typedef struct _SWP { /* swp */
        !           377:     ULONG   fl;
        !           378:     SHORT   cy;
        !           379:     SHORT   cx;
        !           380:     SHORT   y;
        !           381:     SHORT   x;
        !           382:     HWND    hwndInsertBehind;
        !           383:     HWND    hwnd;
        !           384:     ULONG   ulReserved1;
        !           385:     ULONG   ulReserved2;
        !           386: } SWP;
        !           387: #else
        !           388: typedef struct _SWP { /* swp */
        !           389:     USHORT  fs;
        !           390:     SHORT   cy;
        !           391:     SHORT   cx;
        !           392:     SHORT   y;
        !           393:     SHORT   x;
        !           394:     HWND    hwndInsertBehind;
        !           395:     HWND    hwnd;
        !           396: } SWP;
        !           397: #endif
        !           398: typedef SWP FAR *PSWP;
        !           399: 
        !           400: #ifdef INCL_32
        !           401: BOOL   APIENTRY WinSetWindowPos(HWND hwnd, HWND hwndInsertBehind, SHORT x,
        !           402:                                SHORT y, SHORT cx, SHORT cy, ULONG fl);
        !           403: #else
        !           404: BOOL   APIENTRY WinSetWindowPos(HWND hwnd, HWND hwndInsertBehind, SHORT x,
        !           405:                                SHORT y, SHORT cx, SHORT cy, USHORT fs);
        !           406: #endif
        !           407: BOOL   APIENTRY WinQueryWindowPos(HWND hwnd, PSWP pswp);
        !           408: BOOL   APIENTRY WinSetMultWindowPos(HAB hab, PSWP pswp, USHORT cswp);
        !           409: 
        !           410: /* Values returned from WM_ADJUSTWINDOWPOS and passed to WM_WINDOWPOSCHANGED */
        !           411: 
        !           412: #define AWP_MINIMIZED             0x00010000L
        !           413: #define AWP_MAXIMIZED             0x00020000L
        !           414: #define AWP_RESTORED              0x00040000L
        !           415: #define AWP_ACTIVATE              0x00080000L
        !           416: #define AWP_DEACTIVATE            0x00100000L
        !           417: 
        !           418: /* WinSetWindowPos() flags */
        !           419: 
        !           420: #define SWP_SIZE                  0x0001
        !           421: #define SWP_MOVE                  0x0002
        !           422: #define SWP_ZORDER                0x0004
        !           423: #define SWP_SHOW                  0x0008
        !           424: #define SWP_HIDE                  0x0010
        !           425: #define SWP_NOREDRAW              0x0020
        !           426: #define SWP_NOADJUST              0x0040
        !           427: #define SWP_ACTIVATE              0x0080
        !           428: #define SWP_DEACTIVATE            0x0100
        !           429: #define SWP_EXTSTATECHANGE        0x0200
        !           430: #define SWP_MINIMIZE              0x0400
        !           431: #define SWP_MAXIMIZE              0x0800
        !           432: #define SWP_RESTORE               0x1000
        !           433: #define SWP_FOCUSACTIVATE         0x2000
        !           434: #define SWP_FOCUSDEACTIVATE       0x4000
        !           435: 
        !           436: /* Window painting */
        !           437: 
        !           438: BOOL  APIENTRY WinUpdateWindow(HWND hwnd);
        !           439: 
        !           440: BOOL  APIENTRY WinInvalidateRect(HWND hwnd, PRECTL pwrc, BOOL fIncludeChildren);
        !           441: BOOL  APIENTRY WinInvalidateRegion(HWND hwnd, HRGN hrgn,
        !           442:                                   BOOL fIncludeChildren);
        !           443: 
        !           444: 
        !           445: /* Drawing helpers */
        !           446: 
        !           447: BOOL  APIENTRY WinInvertRect(HPS hps, PRECTL prcl);
        !           448: BOOL  APIENTRY WinDrawBitmap(HPS hpsDst, HBITMAP hbm, PRECTL pwrcSrc,
        !           449:                             PPOINTL pptlDst, LONG clrFore, LONG clrBack,
        !           450:                             USHORT fs);
        !           451: 
        !           452: /* WinDrawBitmap() flags */
        !           453: 
        !           454: #define DBM_NORMAL                0x0000
        !           455: #define DBM_INVERT                0x0001
        !           456: #define DBM_HALFTONE              0x0002
        !           457: #define DBM_STRETCH               0x0004
        !           458: #define DBM_IMAGEATTRS            0x0008
        !           459: 
        !           460: 
        !           461: #ifdef INCL_32
        !           462: 
        !           463: SHORT APIENTRY WinDrawText(HPS hps, SHORT cchText, PCH lpchText, PRECTL prcl,
        !           464:                           LONG clrFore, LONG clrBack, ULONG flCmd);
        !           465: 
        !           466: #else /* not INCL_32 */
        !           467: 
        !           468: SHORT APIENTRY WinDrawText(HPS hps, SHORT cchText, PCH lpchText, PRECTL prcl,
        !           469:                           LONG clrFore, LONG clrBack, USHORT fsCmd);
        !           470: 
        !           471: #endif /* INCL_32 */
        !           472: 
        !           473: /*
        !           474:  * WinDrawText() codes:
        !           475:  * From DT_LEFT to DT_EXTERNALLEADING, the codes are designed to be OR'ed with
        !           476:  * SS_TEXT to create variations of the basic text static item.
        !           477:  */
        !           478: #define DT_LEFT                           0x0000
        !           479: #define DT_QUERYEXTENT            0x0002
        !           480: #define DT_UNDERSCORE             0x0010
        !           481: #define DT_STRIKEOUT              0x0020
        !           482: #define DT_TEXTATTRS              0x0040
        !           483: #define DT_EXTERNALLEADING        0x0080
        !           484: #define DT_CENTER                 0x0100
        !           485: #define DT_RIGHT                  0x0200
        !           486: #define DT_TOP                    0x0000
        !           487: #define DT_VCENTER                0x0400
        !           488: #define DT_BOTTOM                 0x0800
        !           489: #define DT_HALFTONE               0x1000
        !           490: #define DT_MNEMONIC               0x2000
        !           491: #define DT_WORDBREAK              0x4000
        !           492: #define DT_ERASERECT              0x8000
        !           493: 
        !           494: 
        !           495: #ifdef INCL_32
        !           496: 
        !           497: BOOL APIENTRY WinDrawBorder(HPS hps, PRECTL prcl, SHORT cx, SHORT cy,
        !           498:                            LONG clrFore, LONG clrBack, ULONG flCmd);
        !           499: 
        !           500: #else /* not INCL_32 */
        !           501: 
        !           502: BOOL APIENTRY WinDrawBorder(HPS hps, PRECTL prcl, SHORT cx, SHORT cy,
        !           503:                            LONG clrFore, LONG clrBack, USHORT fsCmd);
        !           504: 
        !           505: #endif /* INCL_32 */
        !           506: 
        !           507: /* WinDrawBorder() flags */
        !           508: 
        !           509: #define DB_PATCOPY                0x0000
        !           510: #define DB_PATINVERT              0x0001
        !           511: #define DB_DESTINVERT             0x0002
        !           512: #define DB_AREAMIXMODE            0x0003
        !           513: 
        !           514: #define DB_ROP                    0x0007
        !           515: #define DB_INTERIOR               0x0008
        !           516: #define DB_AREAATTRS              0x0010
        !           517: #define DB_STANDARD               0x0100
        !           518: #define DB_DLGBORDER              0x0200
        !           519: 
        !           520: 
        !           521: 
        !           522: /** Resource loading functions */
        !           523: 
        !           524: SHORT  APIENTRY WinLoadString(HAB hab, HMODULE hmod, USHORT id, SHORT cchMax,
        !           525:                               PSZ pchBuffer);
        !           526: #ifndef INCL_SAADEFS
        !           527: SHORT  APIENTRY WinLoadMessage(HAB hab, HMODULE hmod, USHORT id, SHORT cchMax,
        !           528:                                PSZ pchBuffer);
        !           529: 
        !           530: 
        !           531: #endif /* !INCL_SAADEFS */
        !           532: 
        !           533: /***************************************************************************/
        !           534: /****                Window Manager Subsection part 2                  ****/
        !           535: #if (defined(INCL_WINWINDOWMGR) || !defined(INCL_NOCOMMON))
        !           536: 
        !           537: BOOL APIENTRY WinSetActiveWindow(HWND hwndDesktop, HWND hwnd);
        !           538: 
        !           539: #endif /* Window Manager COMMON subsection */
        !           540: 
        !           541: #ifdef INCL_WINWINDOWMGR
        !           542: /* WM_CREATE structure */
        !           543: 
        !           544: typedef struct _CREATESTRUCT { /* crst */
        !           545:     PVOID   pPresParams;
        !           546:     PVOID   pCtlData;
        !           547:     USHORT  id;
        !           548:     HWND    hwndInsertBehind;
        !           549:     HWND    hwndOwner;
        !           550:     SHORT   cy;
        !           551:     SHORT   cx;
        !           552:     SHORT   y;
        !           553:     SHORT   x;
        !           554:     ULONG   flStyle;
        !           555:     PSZ            pszText;
        !           556:     PSZ            pszClass;
        !           557:     HWND    hwndParent;
        !           558: } CREATESTRUCT;
        !           559: typedef CREATESTRUCT FAR *PCREATESTRUCT;
        !           560: 
        !           561: /* WinQueryClassInfo() structure */
        !           562: 
        !           563: typedef struct _CLASSINFO { /* clsi */
        !           564:     ULONG   flClassStyle;
        !           565:     PFNWP   pfnWindowProc;
        !           566:     USHORT  cbWindowData;
        !           567: } CLASSINFO;
        !           568: typedef CLASSINFO FAR *PCLASSINFO;
        !           569: 
        !           570: #ifndef INCL_SAADEFS
        !           571: PFNWP  APIENTRY WinSubclassWindow(HWND hwnd, PFNWP pfnwp);
        !           572: #endif /* !INCL_SAADEFS */
        !           573: 
        !           574: SHORT  APIENTRY WinQueryClassName(HWND hwnd, SHORT cchMax, PCH pch);
        !           575: BOOL   APIENTRY WinQueryClassInfo(HAB hab, PSZ pszClassName,
        !           576:                                  PCLASSINFO pClassInfo);
        !           577: 
        !           578: HWND   APIENTRY WinQueryActiveWindow(HWND hwndDesktop, BOOL fLock);
        !           579: 
        !           580: #ifndef INCL_SAADEFS
        !           581: BOOL   APIENTRY WinIsThreadActive(HAB hab);
        !           582: #endif /* !INCL_SAADEFS */
        !           583: HWND   APIENTRY WinQuerySysModalWindow(HWND hwndDesktop, BOOL fLock);
        !           584: 
        !           585: HWND   APIENTRY WinLockWindow(HWND hwnd, BOOL fLock);
        !           586: #ifndef INCL_SAADEFS
        !           587: BOOL   APIENTRY WinRegisterWindowDestroy(HWND hwnd, BOOL fRegister);
        !           588: #endif /* !INCL_SAADEFS */
        !           589: BOOL   APIENTRY WinSetSysModalWindow(HWND hwndDesktop, HWND hwnd);
        !           590: 
        !           591: SHORT  APIENTRY WinQueryWindowLockCount(HWND hwnd);
        !           592: 
        !           593: #ifndef INCL_SAADEFS
        !           594: USHORT APIENTRY WinQueryWindowUShort(HWND hwnd, SHORT index);
        !           595: BOOL   APIENTRY WinSetWindowUShort(HWND hwnd, SHORT index, USHORT us);
        !           596: ULONG  APIENTRY WinQueryWindowULong(HWND hwnd, SHORT index);
        !           597: BOOL   APIENTRY WinSetWindowULong(HWND hwnd, SHORT index, ULONG ul);
        !           598: PVOID  APIENTRY WinQueryWindowPtr(HWND hwnd, SHORT index);
        !           599: BOOL   APIENTRY WinSetWindowPtr(HWND hwnd, SHORT index, PVOID p);
        !           600: BOOL   APIENTRY WinSetWindowBits(HWND hwnd, SHORT index, ULONG flData,
        !           601:                                 ULONG flMask);
        !           602: 
        !           603: /* Standard WinQueryWindowUShort/ULong() indices */
        !           604: 
        !           605: #define QWS_USER                  0
        !           606: #define QWS_ID                    (-1)
        !           607: #define QWS_MIN                           (-1)
        !           608: 
        !           609: #define QWL_USER                  0
        !           610: #define QWL_STYLE                 (-2)
        !           611: #define QWP_PFNWP                 (-3)
        !           612: #define QWL_HMQ                           (-4)
        !           613: #define QWL_RESERVED              (-5)
        !           614: #define QWL_MIN                           (-5)
        !           615: 
        !           616: /* WC_FRAME WinQueryWindowUShort/ULong() indices */
        !           617: 
        !           618: #define QWL_HHEAP                 0x0004
        !           619: #define QWL_HWNDFOCUSSAVE         0x0018
        !           620: #define QWL_DEFBUTTON   0x0040
        !           621: 
        !           622: #define QWS_FLAGS                 0x0008
        !           623: #define QWS_RESULT                0x000a
        !           624: #define QWS_XRESTORE              0x000c
        !           625: #define QWS_YRESTORE              0x000e
        !           626: #define QWS_CXRESTORE             0x0010
        !           627: #define QWS_CYRESTORE             0x0012
        !           628: #define QWS_XMINIMIZE             0x0014
        !           629: #define QWS_YMINIMIZE             0x0016
        !           630: 
        !           631: 
        !           632: /* Window enumeration */
        !           633: 
        !           634: typedef LHANDLE HENUM; /* henum */
        !           635: 
        !           636: HENUM APIENTRY WinBeginEnumWindows(HWND hwnd);
        !           637: HWND  APIENTRY WinGetNextWindow(HENUM henum);
        !           638: BOOL  APIENTRY WinEndEnumWindows(HENUM henum);
        !           639: 
        !           640: #endif /* !INCL_SAADEFS */
        !           641: 
        !           642: HWND  APIENTRY WinWindowFromPoint(HWND hwnd, PPOINTL pptl, BOOL fChildren,
        !           643:                                  BOOL fLock);
        !           644: BOOL  APIENTRY WinMapWindowPoints(HWND hwndFrom, HWND hwndTo, PPOINTL prgptl,
        !           645:                                  SHORT cwpt);
        !           646: 
        !           647: /* More window painting functions */
        !           648: 
        !           649: BOOL  APIENTRY WinValidateRect(HWND hwnd, PRECTL prcl, BOOL fIncludeChildren);
        !           650: BOOL  APIENTRY WinValidateRegion(HWND hwnd, HRGN hrgn, BOOL fIncludeChildren);
        !           651: #ifndef INCL_SAADEFS
        !           652: HWND  APIENTRY WinWindowFromDC(HDC hdc);
        !           653: HDC   APIENTRY WinQueryWindowDC(HWND hwnd);
        !           654: HPS   APIENTRY WinGetScreenPS(HWND hwndDesktop);
        !           655: BOOL  APIENTRY WinLockWindowUpdate(HWND hwndDesktop, HWND hwndLockUpdate);
        !           656: BOOL  APIENTRY WinLockVisRegions(HWND hwndDesktop, BOOL fLock);
        !           657: #endif /* !INCL_SAADEFS */
        !           658: BOOL  APIENTRY WinQueryUpdateRect(HWND hwnd, PRECTL prcl);
        !           659: SHORT APIENTRY WinQueryUpdateRegion(HWND hwnd, HRGN hrgn);
        !           660: SHORT APIENTRY WinExcludeUpdateRegion(HPS hps, HWND hwnd);
        !           661: 
        !           662: #endif /* INCL_WINWINDOWMGR */
        !           663: 
        !           664: #if (defined(INCL_WINMESSAGEMGR) || !defined(INCL_NOCOMMON))
        !           665: 
        !           666: /* QMSG structure */
        !           667: 
        !           668: typedef struct _QMSG { /* qmsg */
        !           669:     HWND    hwnd;
        !           670:     USHORT  msg;
        !           671:     MPARAM  mp1;
        !           672:     MPARAM  mp2;
        !           673:     ULONG   time;
        !           674:     POINTL  ptl;
        !           675: } QMSG;
        !           676: typedef QMSG FAR *PQMSG;
        !           677: 
        !           678: typedef LHANDLE HMQ;   /* hmq */
        !           679: 
        !           680: /*
        !           681: ** This is the standard function definition for window procedures.
        !           682: ** Typically they are names like "XxxxxxxxWndProc", where the prefix
        !           683: ** "Xxxxxxxxx" is replaced by some name descriptive of the window procedure
        !           684: ** being declared.  Window procedures must be EXPORTED in the definitions
        !           685: ** file used by the linker.
        !           686: **
        !           687: ** MRESULT EXPENTRY MyclassWndProc(HWND hwnd,  ** window handle        **
        !           688: **                                USHORT msg,  ** message number       **
        !           689: **                                MPARAM mp1,  ** 1st (packed) parms   **
        !           690: **                                MPARAM mp2); ** 2nd (packed) parms   **
        !           691: */
        !           692: 
        !           693: /* Standard Window Messages */
        !           694: 
        !           695: #define WM_NULL                           0x0000
        !           696: #define WM_CREATE                 0x0001
        !           697: #define WM_DESTROY                0x0002
        !           698: 
        !           699: #ifndef INCL_SAADEFS
        !           700: #define WM_OTHERWINDOWDESTROYED           0x0003
        !           701: #endif /* !INCL_SAADEFS */
        !           702: 
        !           703: #define WM_ENABLE                 0x0004
        !           704: #define WM_SHOW                           0x0005
        !           705: #define WM_MOVE                           0x0006
        !           706: #define WM_SIZE                           0x0007
        !           707: #define WM_ADJUSTWINDOWPOS        0x0008
        !           708: 
        !           709: #define WM_CALCVALIDRECTS         0x0009
        !           710: 
        !           711: #define WM_SETWINDOWPARAMS        0x000a
        !           712: #define WM_QUERYWINDOWPARAMS      0x000b
        !           713: #define WM_HITTEST                0x000c
        !           714: #define WM_ACTIVATE               0x000d
        !           715: #define WM_SETFOCUS               0x000f
        !           716: #define WM_SETSELECTION                   0x0010
        !           717: 
        !           718: /* language support Winproc */
        !           719: #define WM_PPAINT                 0x0011
        !           720: #define WM_PSETFOCUS              0x0012
        !           721: #define WM_PSYSCOLORCHANGE        0x0013
        !           722: #define WM_PSIZE                  0x0014
        !           723: #define WM_PACTIVATE              0x0015
        !           724: #define WM_PCONTROL               0x0016
        !           725: 
        !           726: 
        !           727: #define WM_COMMAND                0x0020
        !           728: #define WM_SYSCOMMAND             0x0021
        !           729: #define WM_HELP                           0x0022
        !           730: #define WM_PAINT                  0x0023
        !           731: 
        !           732: #ifndef INCL_SAADEFS
        !           733: #define WM_TIMER                  0x0024
        !           734: #define WM_SEM1                           0x0025
        !           735: #define WM_SEM2                           0x0026
        !           736: #define WM_SEM3                           0x0027
        !           737: #define WM_SEM4                           0x0028
        !           738: #endif /* !INCL_SAADEFS */
        !           739: 
        !           740: #define WM_CLOSE                  0x0029
        !           741: #define WM_QUIT                           0x002a
        !           742: #define WM_SYSCOLORCHANGE         0x002b
        !           743: #define WM_SYSVALUECHANGED        0x002d
        !           744: #define WM_APPTERMINATENOTIFY     0x002e
        !           745: #define WM_PRESPARAMCHANGED       0x002f
        !           746: 
        !           747: /* Control notification messages */
        !           748: 
        !           749: #define WM_CONTROL                0x0030
        !           750: #define WM_VSCROLL                0x0031
        !           751: #define WM_HSCROLL                0x0032
        !           752: #define WM_INITMENU               0x0033
        !           753: #define WM_MENUSELECT             0x0034
        !           754: #define WM_MENUEND                0x0035
        !           755: #define WM_DRAWITEM               0x0036
        !           756: #define WM_MEASUREITEM            0x0037
        !           757: #define WM_CONTROLPOINTER         0x0038
        !           758: #define WM_QUERYDLGCODE                   0x003a
        !           759: #define WM_INITDLG                0x003b
        !           760: #define WM_SUBSTITUTESTRING       0x003c
        !           761: #define WM_MATCHMNEMONIC          0x003d
        !           762: #define WM_SAVEAPPLICATION        0x003e
        !           763: 
        !           764: /* XLATOFF */
        !           765: #ifdef INCL_16
        !           766: #define WM_CONTROLHEAP            0x0039
        !           767: #endif /* INCL_16 */
        !           768: /* XLATON */
        !           769: 
        !           770: /* Reserve a range of messages for help manager.  This range includes  */
        !           771: /* public messages, defined below, and private ones, which need to be  */
        !           772: /* reserved here to prevent clashing with application messages        */
        !           773: 
        !           774: #define WM_HELPBASE               0x0F00 /* Start of msgs for help manager   */
        !           775: #define WM_HELPTOP                0x0FFF /* End of msgs for help manager     */
        !           776: 
        !           777: #define WM_USER                           0x1000
        !           778: 
        !           779: /* WM_COMMAND msg source codes */
        !           780: 
        !           781: #define CMDSRC_PUSHBUTTON         1
        !           782: #define CMDSRC_MENU               2
        !           783: #define CMDSRC_ACCELERATOR        3
        !           784: #define CMDSRC_OTHER              0
        !           785: 
        !           786: #ifndef INCL_32
        !           787: /*
        !           788:  * The following structure and macro are used to access the
        !           789:  * WM_COMMAND, WM_HELP, and WM_SYSCOMMAND message parameters:
        !           790:  */
        !           791: typedef struct _COMMANDMSG { /* commandmsg */
        !           792:     USHORT  source;         /* mp2 */
        !           793:     BOOL    fMouse;
        !           794:     USHORT  cmd;            /* mp1 */
        !           795:     USHORT  unused;
        !           796: } CMDMSG;
        !           797: 
        !           798: #define COMMANDMSG(pmsg) \
        !           799:        ((struct _COMMANDMSG FAR *)((PBYTE)pmsg - sizeof(MPARAM) * 2))
        !           800: #endif /* INCL_32 */
        !           801: 
        !           802: /*
        !           803:  * The following structure is used by the WinQueryQueueInfo() routine
        !           804:  */
        !           805: #ifdef INCL_32
        !           806: typedef struct _MQINFO { /* mqi */
        !           807:     USHORT  cb;
        !           808:     PID            pid;
        !           809:     TID            tid;
        !           810:     USHORT  cmsgs;
        !           811:     PVOID   pReserved;
        !           812: } MQINFO;
        !           813: typedef MQINFO FAR *PMQINFO;
        !           814: #else /* not INCL_32 */
        !           815: typedef struct _MQINFO {    /* mqi */
        !           816:     USHORT  cb;
        !           817:     USHORT  pid;
        !           818:     USHORT  tid;
        !           819:     USHORT  cmsgs;
        !           820:     PVOID   pReserved;
        !           821: } MQINFO;
        !           822: typedef MQINFO FAR *PMQINFO;
        !           823: #endif /* INCL_32 */
        !           824: 
        !           825: 
        !           826: MRESULT APIENTRY WinSendMsg(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2);
        !           827: HMQ    APIENTRY WinCreateMsgQueue(HAB hab, SHORT cmsg);
        !           828: BOOL   APIENTRY WinDestroyMsgQueue(HMQ hmq);
        !           829: BOOL   APIENTRY WinQueryQueueInfo(HMQ hmq, PMQINFO pmqi, USHORT cbCopy);
        !           830: 
        !           831: #ifndef INCL_SAADEFS
        !           832: BOOL   APIENTRY WinCancelShutdown(HMQ hmq, BOOL fCancelAlways);
        !           833: #endif /* INCL_SAADEFS */
        !           834: 
        !           835: BOOL   APIENTRY WinGetMsg(HAB hab, PQMSG pqmsg, HWND hwndFilter,
        !           836:                           USHORT msgFilterFirst, USHORT msgFilterLast);
        !           837: BOOL   APIENTRY WinPeekMsg(HAB hab, PQMSG pqmsg, HWND hwndFilter,
        !           838:                            USHORT msgFilterFirst, USHORT msgFilterLast,
        !           839:                            USHORT fs);
        !           840: 
        !           841: MRESULT APIENTRY WinDispatchMsg(HAB hab, PQMSG pqmsg);
        !           842: 
        !           843: BOOL   APIENTRY WinPostMsg(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2);
        !           844: BOOL   APIENTRY WinRegisterUserMsg(HAB hab, USHORT msgid, SHORT datatype1,
        !           845:                                    SHORT dir1, SHORT datatype2, SHORT dir2,
        !           846:                                    SHORT datatyper);
        !           847: BOOL   APIENTRY WinRegisterUserDatatype(HAB hab, SHORT datatype,
        !           848:                                         SHORT count, PSHORT types);
        !           849: BOOL   APIENTRY WinSetMsgMode(HAB hab, PSZ classname,
        !           850:                               SHORT control);
        !           851: BOOL   APIENTRY WinSetSynchroMode(HAB hab, SHORT mode);
        !           852: 
        !           853: /* WinPeekMsg() constants */
        !           854: 
        !           855: #define PM_REMOVE                 0x0001
        !           856: #define PM_NOREMOVE               0x0000
        !           857: 
        !           858: /* WinRegisterUserDatatype datatypes defined in separate file */
        !           859: #ifdef INCL_WINTYPES
        !           860:   #include <pmtypes.h>
        !           861: #endif /*INCL_WINTYPES*/
        !           862: 
        !           863: /* WinRegisterUserMsg direction codes */
        !           864: 
        !           865: #define RUM_IN                    1
        !           866: #define RUM_OUT                           2
        !           867: #define RUM_INOUT                 3
        !           868: 
        !           869: /* WinSetMsgMode constants */
        !           870: 
        !           871: #define SMD_DELAYED               0x0001
        !           872: #define SMD_IMMEDIATE             0x0002
        !           873: 
        !           874: /* WinSetSynchroMode constants */
        !           875: 
        !           876: #define SSM_SYNCHRONOUS                   0x0001
        !           877: #define SSM_ASYNCHRONOUS          0x0002
        !           878: #define SSM_MIXED                 0x0003
        !           879: 
        !           880: #endif /* WINMESSAGEMGR || !INCL_NOCOMMON      */
        !           881: 
        !           882: #ifdef INCL_WINMESSAGEMGR
        !           883: 
        !           884: /* WM_CALCVALIDRECTS return flags */
        !           885: 
        !           886: #define CVR_ALIGNLEFT              0x0001
        !           887: #define CVR_ALIGNBOTTOM                    0x0002
        !           888: #define CVR_ALIGNRIGHT             0x0004
        !           889: #define CVR_ALIGNTOP               0x0008
        !           890: #define CVR_REDRAW                 0x0010
        !           891: 
        !           892: 
        !           893: /* WM_HITTEST return codes */
        !           894: 
        !           895: #define HT_NORMAL                  0
        !           896: #define HT_TRANSPARENT             (-1)
        !           897: #define HT_DISCARD                 (-2)
        !           898: #define HT_ERROR                   (-3)
        !           899: 
        !           900: 
        !           901: /* WM_SET/QUERYWINDOWPARAMS structures and flags */
        !           902: 
        !           903: typedef struct _WNDPARAMS { /* wprm */
        !           904:     USHORT  fsStatus;
        !           905:     USHORT  cchText;
        !           906:     PSZ            pszText;
        !           907:     USHORT  cbPresParams;
        !           908:     PVOID   pPresParams;
        !           909:     USHORT  cbCtlData;
        !           910:     PVOID   pCtlData;
        !           911: } WNDPARAMS;
        !           912: typedef WNDPARAMS FAR *PWNDPARAMS;
        !           913: 
        !           914: /* Flags used by WM_SET/QUERYWINDOWPARAMS */
        !           915: 
        !           916: #define WPM_TEXT                  0x0001
        !           917: #define WPM_CTLDATA               0x0002
        !           918: #define WPM_PRESPARAMS            0x0004
        !           919: #define WPM_CCHTEXT               0x0008
        !           920: #define WPM_CBCTLDATA             0x0010
        !           921: #define WPM_CBPRESPARAMS          0x0020
        !           922: 
        !           923: #ifndef INCL_SAADEFS
        !           924: BOOL   APIENTRY WinInSendMsg(HAB hab);
        !           925: 
        !           926: #endif /* INCL_SAADEFS */
        !           927: 
        !           928: BOOL   APIENTRY WinBroadcastMsg(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2,
        !           929:                                 USHORT rgf);
        !           930: 
        !           931: /* WinBroadcastMsg codes */
        !           932: 
        !           933: #define BMSG_POST                 0x0000
        !           934: #define BMSG_SEND                 0x0001
        !           935: #define BMSG_POSTQUEUE            0x0002
        !           936: #define BMSG_DESCENDANTS          0x0004
        !           937: #define BMSG_FRAMEONLY            0x0008
        !           938: 
        !           939: 
        !           940: 
        !           941: BOOL  APIENTRY WinWaitMsg(HAB hab, USHORT msgFirst, USHORT msgLast);
        !           942: 
        !           943: #ifndef INCL_SAADEFS
        !           944: ULONG APIENTRY WinQueryQueueStatus(HWND hwndDesktop);
        !           945: 
        !           946: /* WinQueryQueueStatus() constants */
        !           947: 
        !           948: #define QS_KEY                    0x0001
        !           949: #define QS_MOUSEBUTTON            0x0002
        !           950: #define QS_MOUSEMOVE              0x0004
        !           951: #define QS_MOUSE                  0x0006   /* QS_MOUSEMOVE|QS_MOUSEBUTTON */
        !           952: #define QS_TIMER                  0x0008
        !           953: #define QS_PAINT                  0x0010
        !           954: #define QS_POSTMSG                0x0020
        !           955: #define QS_SEM1                           0x0040
        !           956: #define QS_SEM2                           0x0080
        !           957: #define QS_SEM3                           0x0100
        !           958: #define QS_SEM4                           0x0200
        !           959: #define QS_SENDMSG                0x0400
        !           960: 
        !           961: 
        !           962: BOOL  APIENTRY WinQueryMsgPos(HAB hab, PPOINTL pptl);
        !           963: ULONG APIENTRY WinQueryMsgTime(HAB hab);
        !           964: 
        !           965: USHORT APIENTRY WinMsgSemWait(HSEM hsem, LONG dtTimeout);
        !           966: USHORT APIENTRY WinMsgMuxSemWait(PUSHORT pisemCleared, PVOID pmxsl,
        !           967:                                 LONG dtTimeout);
        !           968: 
        !           969: #if defined(INCL_32)
        !           970: #if !defined(DEFINEMUXSEMLIST)
        !           971: 
        !           972: /* These definitions are also in bsedos16.h.  They need to be here     */
        !           973: /* in case the user is converting an application that uses             */
        !           974: /* WinMsgMuxSemWait, as bsedos.h (32-bit version) does not define it.  */
        !           975: 
        !           976: typedef struct _MUXSEM {       /* mxs */
        !           977:     USHORT  zero;
        !           978:     HSEM    hsem;
        !           979: } MUXSEM;
        !           980: typedef MUXSEM FAR *PMUXSEM;
        !           981: 
        !           982: typedef struct _MUXSEMLIST {   /* mxsl */
        !           983:     USHORT  cmxs;
        !           984:     MUXSEM  amxs[16];
        !           985: } MUXSEMLIST;
        !           986: typedef MUXSEMLIST FAR *PMUXSEMLIST;
        !           987: 
        !           988: /*
        !           989:  * Since a MUXSEMLIST structure is actually a variable length
        !           990:  * structure, the following macro may be used to define a MUXSEMLIST
        !           991:  * structure having size elements, named "name".
        !           992:  */
        !           993: #define DEFINEMUXSEMLIST(name, size) \
        !           994:     struct {                        \
        !           995:        USHORT cmxs;                 \
        !           996:        MUXSEM amxs[size];           \
        !           997:     } name;
        !           998: 
        !           999: #endif /* !defined(DEFINEMUXSEMLIST) */
        !          1000: #endif /* defined(INCL_32) */
        !          1001: 
        !          1002: #endif /* !INCL_SAADEFS */
        !          1003: BOOL  APIENTRY WinPostQueueMsg(HMQ hmq, USHORT msg, MPARAM mp1, MPARAM mp2);
        !          1004: 
        !          1005: 
        !          1006: /* WinSetMsgInterest()/WinSetClassMsgInterest() constants */
        !          1007: #define SMIM_ALL                  0x0EFF
        !          1008: #define SMI_NOINTEREST            0x0001
        !          1009: #define SMI_INTEREST              0x0002
        !          1010: #define SMI_RESET                 0x0004
        !          1011: #define SMI_AUTODISPATCH          0x0008
        !          1012: 
        !          1013: BOOL  APIENTRY WinSetMsgInterest(HWND hwnd, USHORT msg_class, SHORT control);
        !          1014: BOOL  APIENTRY WinSetClassMsgInterest(HAB hab, PSZ pszClassName,
        !          1015:                                      USHORT msg_class, SHORT control);
        !          1016: 
        !          1017: #endif /* INCL_WINMESSAGEMGR */
        !          1018: 
        !          1019: /*** Keyboard and mouse */
        !          1020: 
        !          1021: #if (defined(INCL_WININPUT) || !defined(INCL_NOCOMMON))
        !          1022: 
        !          1023: /*** Keyboard and mouse input COMMON subsection */
        !          1024: BOOL  APIENTRY WinSetFocus(HWND hwndDesktop, HWND hwndSetFocus);
        !          1025: BOOL  APIENTRY WinFocusChange(HWND hwndDesktop, HWND hwndSetFocus,
        !          1026:                              USHORT fsFocusChange);
        !          1027: 
        !          1028: #define FC_NOSETFOCUS             0x0001
        !          1029: #define FC_NOBRINGTOTOP                   FC_NOSETFOCUS
        !          1030: #define FC_NOLOSEFOCUS            0x0002
        !          1031: #define FC_NOBRINGTOPFIRSTWINDOW   FC_NOLOSEFOCUS
        !          1032: #define FC_NOSETACTIVEFOCUS       0x0003
        !          1033: #define FC_NOSETACTIVE            0x0004
        !          1034: #define FC_NOLOSEACTIVE                   0x0008
        !          1035: #define FC_NOSETSELECTION         0x0010
        !          1036: #define FC_NOLOSESELECTION        0x0020
        !          1037: 
        !          1038: #define QFC_NEXTINCHAIN                   0x0001
        !          1039: #define QFC_ACTIVE                0x0002
        !          1040: #define QFC_FRAME                 0x0003
        !          1041: #define QFC_SELECTACTIVE          0x0004
        !          1042: #define QFC_PARTOFCHAIN                   0x0005
        !          1043: 
        !          1044: #endif /* Keyboard and mouse input COMMON subsection */
        !          1045: 
        !          1046: #ifdef INCL_WININPUT
        !          1047: 
        !          1048: #ifndef INCL_SAADEFS
        !          1049: BOOL  APIENTRY WinSetCapture(HWND hwndDesktop, HWND hwnd);
        !          1050: #endif /* !INCL_SAADEFS */
        !          1051: HWND  APIENTRY WinQueryCapture(HWND hwndDesktop, BOOL fLock);
        !          1052: 
        !          1053: /* Mouse input messages */
        !          1054: 
        !          1055: #ifndef INCL_SAADEFS
        !          1056: #define WM_MOUSEFIRST             0x0070
        !          1057: #define WM_MOUSELAST              0x0079
        !          1058: #define WM_BUTTONCLICKFIRST       0x0071
        !          1059: #define WM_BUTTONCLICKLAST        0x0079
        !          1060: #endif /* !INCL_SAADEFS */
        !          1061: #define WM_MOUSEMOVE              0x0070
        !          1062: 
        !          1063: #define WM_BUTTON1DOWN            0x0071
        !          1064: 
        !          1065: #define WM_BUTTON1UP              0x0072
        !          1066: #define WM_BUTTON1DBLCLK          0x0073
        !          1067: #define WM_BUTTON2DOWN            0x0074
        !          1068: #define WM_BUTTON2UP              0x0075
        !          1069: #define WM_BUTTON2DBLCLK          0x0076
        !          1070: #ifndef INCL_SAADEFS
        !          1071: #define WM_BUTTON3DOWN            0x0077
        !          1072: #define WM_BUTTON3UP              0x0078
        !          1073: #define WM_BUTTON3DBLCLK          0x0079
        !          1074: #endif /* !INCL_SAADEFS */
        !          1075: 
        !          1076: HWND  APIENTRY WinQueryFocus(HWND hwndDesktop, BOOL fLock);
        !          1077: 
        !          1078: 
        !          1079: /* Key/Character input messages */
        !          1080: 
        !          1081: #define WM_CHAR                           0x007a
        !          1082: #define WM_VIOCHAR                0x007b
        !          1083: 
        !          1084: /* WM_CHAR fs field bits */
        !          1085: 
        !          1086: #define KC_CHAR                           0x0001
        !          1087: #define KC_VIRTUALKEY             0x0002
        !          1088: #define KC_SCANCODE               0x0004
        !          1089: 
        !          1090: #define KC_SHIFT                  0x0008
        !          1091: #define KC_CTRL                           0x0010
        !          1092: #define KC_ALT                    0x0020
        !          1093: #define KC_KEYUP                  0x0040
        !          1094: #define KC_PREVDOWN               0x0080
        !          1095: #define KC_LONEKEY                0x0100
        !          1096: #define KC_DEADKEY                0x0200
        !          1097: #define KC_COMPOSITE              0x0400
        !          1098: #define KC_INVALIDCOMP            0x0800
        !          1099: 
        !          1100: #ifndef INCL_SAADEFS
        !          1101: #define KC_TOGGLE                 0x1000
        !          1102: #define KC_INVALIDCHAR            0x2000
        !          1103: #define KC_DBCSRSRVD1             0x4000
        !          1104: #define KC_DBCSRSRVD2             0x8000
        !          1105: #endif /* !INCL_SAADEFS */
        !          1106: 
        !          1107: #ifndef INCL_32
        !          1108: /*
        !          1109:  * The following structure and macro are used to access the
        !          1110:  * WM_MOUSEMOVE, and WM_BUTTON message parameters
        !          1111:  */
        !          1112: typedef struct _MOUSEMSG { /* mousemsg */
        !          1113:     USHORT  codeHitTest;   /* mp2      */
        !          1114:     USHORT  unused;
        !          1115:     SHORT   x;            /* mp1      */
        !          1116:     SHORT   y;
        !          1117: } MSEMSG;
        !          1118: 
        !          1119: #define MOUSEMSG(pmsg) \
        !          1120:        ((struct _MOUSEMSG FAR *)((PBYTE)pmsg - sizeof(MPARAM) * 2))
        !          1121: 
        !          1122: /*
        !          1123:  * The following structure and macro are used to access the
        !          1124:  * WM_CHAR message parameters.
        !          1125:  */
        !          1126: typedef struct _CHARMSG { /* charmsg */
        !          1127:     USHORT  chr;         /* mp2     */
        !          1128:     USHORT  vkey;
        !          1129:     USHORT  fs;                  /* mp1     */
        !          1130:     UCHAR   cRepeat;
        !          1131:     UCHAR   scancode;
        !          1132: } CHRMSG;
        !          1133: 
        !          1134: #define CHARMSG(pmsg) \
        !          1135:        ((struct _CHARMSG FAR *)((PBYTE)pmsg - sizeof(MPARAM) * 2))
        !          1136: #endif /* INCL_32 */
        !          1137: 
        !          1138: /*** Virtual key values */
        !          1139: 
        !          1140: #define VK_BUTTON1                0x01
        !          1141: #define VK_BUTTON2                0x02
        !          1142: #define VK_BUTTON3                0x03
        !          1143: #define VK_BREAK                  0x04
        !          1144: #define VK_BACKSPACE              0x05
        !          1145: #define VK_TAB                    0x06
        !          1146: #define VK_BACKTAB                0x07
        !          1147: #define VK_NEWLINE                0x08
        !          1148: #define VK_SHIFT                  0x09
        !          1149: #define VK_CTRL                           0x0A
        !          1150: #define VK_ALT                    0x0B
        !          1151: #define VK_ALTGRAF                0x0C
        !          1152: #define VK_PAUSE                  0x0D
        !          1153: #define VK_CAPSLOCK               0x0E
        !          1154: #define VK_ESC                    0x0F
        !          1155: #define VK_SPACE                  0x10
        !          1156: #define VK_PAGEUP                 0x11
        !          1157: #define VK_PAGEDOWN               0x12
        !          1158: #define VK_END                    0x13
        !          1159: #define VK_HOME                           0x14
        !          1160: #define VK_LEFT                           0x15
        !          1161: #define VK_UP                     0x16
        !          1162: #define VK_RIGHT                  0x17
        !          1163: #define VK_DOWN                           0x18
        !          1164: #define VK_PRINTSCRN              0x19
        !          1165: #define VK_INSERT                 0x1A
        !          1166: #define VK_DELETE                 0x1B
        !          1167: #define VK_SCRLLOCK               0x1C
        !          1168: #define VK_NUMLOCK                0x1D
        !          1169: #define VK_ENTER                  0x1E
        !          1170: #define VK_SYSRQ                  0x1F
        !          1171: #define VK_F1                     0x20
        !          1172: #define VK_F2                     0x21
        !          1173: #define VK_F3                     0x22
        !          1174: #define VK_F4                     0x23
        !          1175: #define VK_F5                     0x24
        !          1176: #define VK_F6                     0x25
        !          1177: #define VK_F7                     0x26
        !          1178: #define VK_F8                     0x27
        !          1179: #define VK_F9                     0x28
        !          1180: #define VK_F10                    0x29
        !          1181: #define VK_F11                    0x2A
        !          1182: #define VK_F12                    0x2B
        !          1183: #define VK_F13                    0x2C
        !          1184: #define VK_F14                    0x2D
        !          1185: #define VK_F15                    0x2E
        !          1186: #define VK_F16                    0x2F
        !          1187: #define VK_F17                    0x30
        !          1188: #define VK_F18                    0x31
        !          1189: #define VK_F19                    0x32
        !          1190: #define VK_F20                    0x33
        !          1191: #define VK_F21                    0x34
        !          1192: #define VK_F22                    0x35
        !          1193: #define VK_F23                    0x36
        !          1194: #define VK_F24                    0x37
        !          1195: 
        !          1196: 
        !          1197: #define VK_MENU                           VK_F10
        !          1198: #ifdef INCL_NLS
        !          1199: #define VK_DBCSFIRST              0x0080
        !          1200: #define VK_DBCSLAST               0x00ff
        !          1201: #endif /* INCL_NLS */
        !          1202: 
        !          1203: #define VK_USERFIRST              0x0100
        !          1204: #define VK_USERLAST               0x01ff
        !          1205: 
        !          1206: #ifndef INCL_SAADEFS
        !          1207: 
        !          1208: SHORT APIENTRY WinGetKeyState(HWND hwndDesktop, SHORT vkey);
        !          1209: SHORT APIENTRY WinGetPhysKeyState(HWND hwndDesktop, SHORT sc);
        !          1210: BOOL  APIENTRY WinEnablePhysInput(HWND hwndDesktop, BOOL fEnable);
        !          1211: BOOL  APIENTRY WinIsPhysInputEnabled(HWND hwndDesktop);
        !          1212: BOOL  APIENTRY WinSetKeyboardStateTable(HWND hwndDesktop,
        !          1213:                                        PBYTE pKeyStateTable, BOOL fSet);
        !          1214: 
        !          1215: 
        !          1216: /* Journal Notification messages  */
        !          1217: #define WM_JOURNALNOTIFY          0x007c
        !          1218: 
        !          1219: /*** Define the valid commands (lParm1) for journal notify message */
        !          1220: #define JRN_QUEUESTATUS                   0x00000001L
        !          1221: #define JRN_PHYSKEYSTATE          0x00000002L
        !          1222: 
        !          1223: #endif /* !INCL_SAADEFS */
        !          1224: #endif /* INCL_WININPUT */
        !          1225: 
        !          1226: 
        !          1227: /**** Dialog Manager */
        !          1228: 
        !          1229: #if (defined(INCL_WINDIALOGS) || !defined(INCL_NOCOMMON))
        !          1230: /**** Dialog Manager COMMON subsection */
        !          1231: 
        !          1232: /*
        !          1233: ** This is the standard function definition for dialog procedures.
        !          1234: ** Typically they are names like "XxxxxxxxDlgProc", where the prefix
        !          1235: ** "Xxxxxxxxx" is replaced by some name descriptive of the dialog procedure
        !          1236: ** being declared.  Dialog procedures must be EXPORTED in the definitions
        !          1237: ** file used by the linker.  The dialog procedure declaration is identical
        !          1238: ** to that for window procedures.
        !          1239: **
        !          1240: ** MRESULT EXPENTRY MydialogDlgProc(HWND hwnd,  ** window handle        **
        !          1241: **                                 USHORT msg,  ** message number       **
        !          1242: **                                 MPARAM mp1,  ** 1st (packed) parms   **
        !          1243: **                                 MPARAM mp2); ** 2nd (packed) parms   **
        !          1244: */
        !          1245: 
        !          1246: BOOL   APIENTRY WinGetDlgMsg(HWND hwndDlg, PQMSG pqmsg);
        !          1247: 
        !          1248: 
        !          1249: HWND   APIENTRY WinLoadDlg(HWND hwndParent, HWND hwndOwner, PFNWP pfnDlgProc,
        !          1250:                            HMODULE hmod, USHORT idDlg, PVOID pCreateParams);
        !          1251: USHORT APIENTRY WinDlgBox(HWND hwndParent, HWND hwndOwner, PFNWP pfnDlgProc,
        !          1252:                           HMODULE hmod, USHORT idDlg, PVOID pCreateParams);
        !          1253: 
        !          1254: BOOL   APIENTRY WinDismissDlg(HWND hwndDlg, USHORT usResult);
        !          1255: 
        !          1256: BOOL   APIENTRY WinQueryDlgItemShort(HWND hwndDlg, USHORT idItem,
        !          1257:                                      PSHORT pResult, BOOL fSigned);
        !          1258: BOOL   APIENTRY WinSetDlgItemShort(HWND hwndDlg, USHORT idItem,
        !          1259:                                    USHORT usValue, BOOL fSigned);
        !          1260: BOOL   APIENTRY WinSetDlgItemText(HWND hwndDlg, USHORT idItem, PSZ pszText);
        !          1261: USHORT APIENTRY WinQueryDlgItemText(HWND hwndDlg, USHORT idItem,
        !          1262:                                     SHORT cchBufferMax, PSZ pchBuffer);
        !          1263: SHORT  APIENTRY WinQueryDlgItemTextLength(HWND hwndDlg, USHORT idItem);
        !          1264: 
        !          1265: MRESULT APIENTRY WinDefDlgProc(HWND hwndDlg, USHORT msg, MPARAM mp1,
        !          1266:                               MPARAM mp2);
        !          1267: 
        !          1268: /* Special item IDs */
        !          1269: 
        !          1270: #ifndef INCL_SAADEFS
        !          1271: #define DID_OK     1
        !          1272: #define DID_CANCEL  2
        !          1273: #define DID_ERROR   0xffff
        !          1274: #endif /* !INCL_SAADEFS */
        !          1275: 
        !          1276: BOOL APIENTRY WinAlarm(HWND hwndDesktop, USHORT rgfType);
        !          1277: 
        !          1278: /* WinAlarm Codes */
        !          1279: 
        !          1280: #define WA_WARNING                0
        !          1281: #define WA_NOTE                           1
        !          1282: #define WA_ERROR                  2
        !          1283: #define WA_CWINALARMS             3
        !          1284: 
        !          1285: #ifdef INCL_32
        !          1286: 
        !          1287: USHORT APIENTRY WinMessageBox(HWND hwndParent, HWND hwndOwner, PSZ pszText,
        !          1288:                              PSZ pszCaption, USHORT idWindow, ULONG flStyle);
        !          1289: 
        !          1290: #else /* not INCL_32 */
        !          1291: 
        !          1292: USHORT APIENTRY WinMessageBox(HWND hwndParent, HWND hwndOwner, PSZ pszText,
        !          1293:                              PSZ pszCaption, USHORT idWindow, USHORT fsStyle);
        !          1294: 
        !          1295: #endif /* INCL_32 */
        !          1296: 
        !          1297: /* Message box types */
        !          1298: 
        !          1299: #define MB_OK                     0x0000
        !          1300: #define MB_OKCANCEL               0x0001
        !          1301: #define MB_RETRYCANCEL            0x0002
        !          1302: #define MB_ABORTRETRYIGNORE       0x0003
        !          1303: #define MB_YESNO                  0x0004
        !          1304: #define MB_YESNOCANCEL            0x0005
        !          1305: #define MB_CANCEL                 0x0006
        !          1306: #define MB_ENTER                  0x0007
        !          1307: #define MB_ENTERCANCEL            0x0008
        !          1308: 
        !          1309: #define MB_NOICON                 0x0000
        !          1310: #define MB_CUANOTIFICATION        0x0000
        !          1311: #define MB_ICONQUESTION                   0x0010
        !          1312: #define MB_ICONEXCLAMATION        0x0020
        !          1313: #define MB_CUAWARNING             0x0020
        !          1314: #define MB_ICONASTERISK                   0x0030
        !          1315: #define MB_ICONHAND               0x0040
        !          1316: #define MB_CUACRITICAL            0x0040
        !          1317: #define MB_QUERY                  MB_ICONQUESTION
        !          1318: #define MB_WARNING                MB_CUAWARNING
        !          1319: #define MB_INFORMATION            MB_ICONASTERISK
        !          1320: #define MB_CRITICAL               MB_CUACRITICAL
        !          1321: #define MB_ERROR                  MB_CRITICAL
        !          1322: 
        !          1323: #define MB_DEFBUTTON1             0x0000
        !          1324: #define MB_DEFBUTTON2             0x0100
        !          1325: #define MB_DEFBUTTON3             0x0200
        !          1326: 
        !          1327: #define MB_APPLMODAL              0x0000
        !          1328: #define MB_SYSTEMMODAL            0x1000
        !          1329: #define MB_HELP                           0x2000
        !          1330: #define MB_MOVEABLE               0x4000
        !          1331: 
        !          1332: 
        !          1333: /* Message box return codes */
        !          1334: 
        !          1335: #define MBID_OK                           1
        !          1336: #define MBID_CANCEL               2
        !          1337: #define MBID_ABORT                3
        !          1338: #define MBID_RETRY                4
        !          1339: #define MBID_IGNORE               5
        !          1340: #define MBID_YES                  6
        !          1341: #define MBID_NO                           7
        !          1342: #define MBID_HELP                 8
        !          1343: #define MBID_ENTER                9
        !          1344: #define MBID_ERROR                0xffff
        !          1345: 
        !          1346: 
        !          1347: /* Useful macros */
        !          1348: 
        !          1349: /***************************************************************************
        !          1350: * USHORT WinCheckButton(HWND hwndDlg, USHORT id, USHORT checkState)
        !          1351: *    sets the check state of button #id.
        !          1352: *    returns the previous check state.
        !          1353: \**************************************************************************/
        !          1354: #define WinCheckButton(hwndDlg, id, usCheckState) \
        !          1355:     ((USHORT)WinSendDlgItemMsg(hwndDlg, id, BM_SETCHECK, \
        !          1356:            MPFROMSHORT(usCheckState), (MPARAM)NULL))
        !          1357: 
        !          1358: /***************************************************************************
        !          1359: * USHORT WinQueryButtonCheckstate(HWND hwndDlg, USHORT id)
        !          1360: *    returns the check state of buttin #id.
        !          1361: *
        !          1362: \**************************************************************************/
        !          1363: #define WinQueryButtonCheckstate(hwndDlg, id) \
        !          1364:     ((USHORT)WinSendDlgItemMsg(hwndDlg, id, BM_QUERYCHECK, \
        !          1365:            (MPARAM)NULL, (MPARAM)NULL))
        !          1366: 
        !          1367: /***************************************************************************
        !          1368: * BOOL WinEnableControl(HWND hwndDlg, USHORT id, BOOL fEnable)
        !          1369: *    sets the enable state of button #id.
        !          1370: *    returns fSuccess.
        !          1371: \**************************************************************************/
        !          1372: #define WinEnableControl(hwndDlg, id, fEnable) \
        !          1373:     WinEnableWindow(WinWindowFromID(hwndDlg, id), fEnable)
        !          1374: 
        !          1375: /***************************************************************************
        !          1376: * BOOL WinIsControlEnabled(HWND hwndDlg, USHORT id)
        !          1377: *    returns the enable state of control #id.
        !          1378: *
        !          1379: \**************************************************************************/
        !          1380: #define WinIsControlEnabled(hwndDlg, id) \
        !          1381:     ((BOOL)WinIsWindowEnabled(WinWindowFromID(hwndDlg, id)))
        !          1382: 
        !          1383: #endif /* Dialog Manager COMMON subsection */
        !          1384: 
        !          1385: 
        !          1386: #ifdef INCL_WINDIALOGS
        !          1387: 
        !          1388: /* Dialog codes: returned by WM_QUERYDLGCODE msg     */
        !          1389: 
        !          1390: #define DLGC_ENTRYFIELD           0x0001  /* Entry field item understands EM_SETSEL) */
        !          1391: #define DLGC_BUTTON       0x0002  /* Button item                             */
        !          1392: #define DLGC_RADIOBUTTON   0x0004  /* Radio button                           */
        !          1393: #define DLGC_STATIC       0x0008  /* Static item                             */
        !          1394: #define DLGC_DEFAULT      0x0010  /* Default push button                     */
        !          1395: #define DLGC_PUSHBUTTON           0x0020  /* Normal (Non-default) push button        */
        !          1396: #define DLGC_CHECKBOX     0x0040  /* Check box button control                */
        !          1397: #define DLGC_SCROLLBAR    0x0080  /* Scroll bar                              */
        !          1398: #define DLGC_MENU         0x0100  /* Menu                                    */
        !          1399: #define DLGC_TABONCLICK           0x0200
        !          1400: #define DLGC_MLE          0x0400  /* Multiple Line Entry                     */
        !          1401: 
        !          1402: 
        !          1403: USHORT APIENTRY WinProcessDlg(HWND hwndDlg);
        !          1404: MRESULT APIENTRY WinSendDlgItemMsg(HWND hwndDlg, USHORT idItem, USHORT msg,
        !          1405:                                   MPARAM mp1, MPARAM mp2);
        !          1406: BOOL   APIENTRY WinMapDlgPoints(HWND hwndDlg, PPOINTL prgwptl, USHORT cwpt,
        !          1407:                                 BOOL fCalcWindowCoords);
        !          1408: HWND   APIENTRY WinEnumDlgItem(HWND hwndDlg, HWND hwnd, USHORT code,
        !          1409:                                BOOL fLock);
        !          1410: SHORT  APIENTRY WinSubstituteStrings(HWND hwnd, PSZ pszSrc, SHORT cchDstMax,
        !          1411:                                      PSZ pszDst);
        !          1412: 
        !          1413: /* WinEnumDlgItem() constants
        !          1414:  *
        !          1415:  * In OS/2 1.2, WinEnumDlgItem() can enumerate a window such that the
        !          1416:  * selection cursor may be moved  according to CUA (Common User Access)
        !          1417:  * rules.
        !          1418:  */
        !          1419: 
        !          1420: #define EDI_FIRSTTABITEM          0
        !          1421: #define EDI_LASTTABITEM                   1
        !          1422: #define EDI_NEXTTABITEM                   2
        !          1423: #define EDI_PREVTABITEM                   3
        !          1424: #define EDI_FIRSTGROUPITEM        4
        !          1425: #define EDI_LASTGROUPITEM         5
        !          1426: #define EDI_NEXTGROUPITEM         6
        !          1427: #define EDI_PREVGROUPITEM         7
        !          1428: 
        !          1429: /*** Dialog template definitions */
        !          1430: 
        !          1431: /* Variable-sized dialog template items: */
        !          1432: 
        !          1433: 
        !          1434: /*
        !          1435:  *  We pack the structures _DLGTITEM and _DLGTEMPLATE so that the structures
        !          1436:  *  are identical in the 32bit and 16bit worlds. We have to do this because
        !          1437:  *  is has been documented that one can pass a pointer to 'the binary resource
        !          1438:  *  format' when calling WinCreateDlg.
        !          1439:  *
        !          1440:  */
        !          1441: 
        !          1442: /* XLATOFF */
        !          1443: #pragma pack(2)             /* pack on wordboundary */
        !          1444: /* XLATON */
        !          1445: 
        !          1446: typedef struct _DLGTITEM { /* dlgti */
        !          1447:     USHORT  fsItemStatus;
        !          1448:     USHORT  cChildren;
        !          1449:     USHORT  cchClassName;
        !          1450:     USHORT  offClassName;
        !          1451:     USHORT  cchText;
        !          1452:     USHORT  offText;
        !          1453:     ULONG   flStyle;
        !          1454:     SHORT   x;
        !          1455:     SHORT   y;
        !          1456:     SHORT   cx;
        !          1457:     SHORT   cy;
        !          1458:     USHORT  id;
        !          1459:     USHORT  offPresParams;
        !          1460:     USHORT  offCtlData;
        !          1461: } DLGTITEM;
        !          1462: typedef DLGTITEM FAR *PDLGTITEM;
        !          1463: 
        !          1464: /* Dialog Template structure */
        !          1465: 
        !          1466: typedef struct _DLGTEMPLATE { /* dlgt */
        !          1467:     USHORT   cbTemplate;
        !          1468:     USHORT   type;
        !          1469:     USHORT   codepage;
        !          1470:     USHORT   offadlgti;
        !          1471:     USHORT   fsTemplateStatus;
        !          1472:     USHORT   iItemFocus;
        !          1473:     USHORT   coffPresParams;
        !          1474:     DLGTITEM adlgti[1];
        !          1475: } DLGTEMPLATE;
        !          1476: typedef DLGTEMPLATE FAR *PDLGTEMPLATE;
        !          1477: /* XLATOFF */
        !          1478: #pragma pack()   /* reset to default packing */
        !          1479: /* XLATON */
        !          1480: 
        !          1481: HWND   APIENTRY WinCreateDlg(HWND hwndParent, HWND hwndOwner, PFNWP pfnDlgProc,
        !          1482:                             PDLGTEMPLATE pdlgt, PVOID pCreateParams);
        !          1483: 
        !          1484: 
        !          1485: #endif /* INCL_WINDIALOGS */
        !          1486: 
        !          1487: 
        !          1488: #ifdef INCL_WINSTATICS
        !          1489: 
        !          1490: /*** Static Control Manager */
        !          1491: 
        !          1492: /* Static control styles:
        !          1493:  *
        !          1494:  * NOTE: the top 9 bits of the LOWORD of the window flStyle are used for
        !          1495:  * DT_* flags.  The lower 7 bits are for SS_* styles.  This gives us up
        !          1496:  * to 128 distinct static control types (we currently use 11 of them).
        !          1497:  */
        !          1498: #define SS_TEXT                           0x0001L
        !          1499: #define SS_GROUPBOX               0x0002L
        !          1500: 
        !          1501: #ifndef INCL_SAADEFS
        !          1502: #define SS_ICON                           0x0003L
        !          1503: #define SS_BITMAP                 0x0004L
        !          1504: #endif /* !INCL_SAADEFS */
        !          1505: #define SS_FGNDRECT               0x0005L
        !          1506: #ifndef INCL_SAADEFS
        !          1507: #define SS_HALFTONERECT                   0x0006L
        !          1508: #endif /* !INCL_SAADEFS */
        !          1509: #define SS_BKGNDRECT              0x0007L
        !          1510: #define SS_FGNDFRAME              0x0008L
        !          1511: #ifndef INCL_SAADEFS
        !          1512: #define SS_HALFTONEFRAME          0x0009L
        !          1513: #endif /* !INCL_SAADEFS */
        !          1514: #define SS_BKGNDFRAME             0x000aL
        !          1515: #define SS_SYSICON                0x000bL
        !          1516: 
        !          1517: #ifdef DCR_AUTOSIZE
        !          1518: #define SS_AUTOSIZE        0x0040L
        !          1519: #endif
        !          1520: 
        !          1521: /* Static control class name */
        !          1522: 
        !          1523: #define WC_STATIC           ((PSZ)0xffff0005L)
        !          1524: 
        !          1525: /* Static control messages */
        !          1526: 
        !          1527: #define SM_SETHANDLE              0x0100
        !          1528: #define SM_QUERYHANDLE            0x0101
        !          1529: 
        !          1530: #endif /* INCL_WINSTATICS */
        !          1531: 
        !          1532: 
        !          1533: #ifdef INCL_WINBUTTONS
        !          1534: /**** Button Controls Subsection */
        !          1535: 
        !          1536: /* Button control styles */
        !          1537: 
        !          1538: #define BS_PUSHBUTTON             0L
        !          1539: #define BS_CHECKBOX               1L
        !          1540: #define BS_AUTOCHECKBOX                   2L
        !          1541: #define BS_RADIOBUTTON            3L
        !          1542: #define BS_AUTORADIOBUTTON        4L
        !          1543: #define BS_3STATE                 5L
        !          1544: #define BS_AUTO3STATE             6L
        !          1545: 
        !          1546: #ifndef INCL_SAADEFS
        !          1547: #define BS_USERBUTTON             7L
        !          1548: #endif /* !INCL_SAADEFS */
        !          1549: 
        !          1550: #define BS_HELP                           0x0100L
        !          1551: #define BS_SYSCOMMAND             0x0200L
        !          1552: #define BS_DEFAULT                0x0400L
        !          1553: #define BS_NOPOINTERFOCUS         0x0800L
        !          1554: #define BS_NOBORDER               0x1000L
        !          1555: #define BS_NOCURSORSELECT         0x2000L
        !          1556: #ifdef DCR_AUTOSIZE
        !          1557: #define BS_AUTOSIZE        0x4000L
        !          1558: #define BS_OWNERDRAW       0x8000L
        !          1559: #endif
        !          1560: 
        !          1561: 
        !          1562: /* Button class name */
        !          1563: 
        !          1564: #define WC_BUTTON      ((PSZ)0xffff0003L)
        !          1565: 
        !          1566: 
        !          1567: #ifndef INCL_SAADEFS
        !          1568: typedef struct _BTNCDATA { /* btncd */
        !          1569:     USHORT  cb;
        !          1570:     USHORT  fsCheckState;
        !          1571:     USHORT  fsHiliteState;
        !          1572: } BTNCDATA;
        !          1573: typedef BTNCDATA FAR *PBTNCDATA;
        !          1574: #endif /* !INCL_SAADEFS */
        !          1575: 
        !          1576: /* User button structure (passed in WM_CONTROL msg) */
        !          1577: 
        !          1578: #ifndef INCL_SAADEFS
        !          1579: typedef struct _USERBUTTON { /* ubtn */
        !          1580:     HWND    hwnd;
        !          1581:     HPS            hps;
        !          1582:     USHORT  fsState;
        !          1583:     USHORT  fsStateOld;
        !          1584: } USERBUTTON;
        !          1585: typedef USERBUTTON FAR *PUSERBUTTON;
        !          1586: #endif /* !INCL_SAADEFS */
        !          1587: 
        !          1588: /* Button control messages */
        !          1589: 
        !          1590: #define BM_CLICK                  0x0120
        !          1591: #define BM_QUERYCHECKINDEX        0x0121
        !          1592: #define BM_QUERYHILITE            0x0122
        !          1593: #define BM_SETHILITE              0x0123
        !          1594: #define BM_QUERYCHECK             0x0124
        !          1595: #define BM_SETCHECK               0x0125
        !          1596: #define BM_SETDEFAULT             0x0126
        !          1597: 
        !          1598: /* Button notification codes */
        !          1599: 
        !          1600: #define BN_CLICKED                1
        !          1601: #define BN_DBLCLICKED             2
        !          1602: #define BN_PAINT                  3
        !          1603: 
        !          1604: /* BN_PAINT button draw state codes (must be in high byte) */
        !          1605: 
        !          1606: #ifndef INCL_SAADEFS
        !          1607: #define BDS_HILITED               0x0100
        !          1608: #define BDS_DISABLED              0x0200
        !          1609: #define BDS_DEFAULT               0x0400
        !          1610: 
        !          1611: #endif /* !INCL_SAADEFS */
        !          1612: 
        !          1613: #endif /* INCL_WINBUTTONS */
        !          1614: 
        !          1615: 
        !          1616: #ifdef INCL_WINENTRYFIELDS
        !          1617: /**** Entryfield controls Subsection */
        !          1618: 
        !          1619: /* Entry field styles */
        !          1620: 
        !          1621: #define ES_LEFT                           0x00000000L
        !          1622: #define ES_CENTER                 0x00000001L
        !          1623: #define ES_RIGHT                  0x00000002L
        !          1624: 
        !          1625: #ifndef INCL_SAADEFS
        !          1626: #define ES_AUTOSCROLL             0x00000004L
        !          1627: #endif /* !INCL_SAADEFS */
        !          1628: 
        !          1629: #define ES_MARGIN                 0x00000008L
        !          1630: #define ES_AUTOTAB                0x00000010L
        !          1631: #define ES_READONLY               0x00000020L
        !          1632: #define ES_COMMAND                0x00000040L
        !          1633: #define ES_UNREADABLE             0x00000080L
        !          1634: #define ES_PICTUREMASK            0x00000100L
        !          1635: #ifdef DCR_AUTOSIZE
        !          1636: #define ES_AUTOSIZE               0x00000200L
        !          1637: #endif
        !          1638: 
        !          1639: #ifdef INCL_NLS
        !          1640: #define ES_ANY                    0x00000000L
        !          1641: #define ES_SBCS                           0x00001000L
        !          1642: #define ES_DBCS                           0x00002000L
        !          1643: #define ES_MIXED                  0x00003000L
        !          1644: #endif /* INCL_NLS */
        !          1645: 
        !          1646: #define WC_COMBOBOX         ((PSZ)0xffff0002L)
        !          1647: 
        !          1648: /*
        !          1649:  * combo box styles
        !          1650:  */
        !          1651: #define CBS_SIMPLE                0x0001L
        !          1652: #define CBS_DROPDOWN              0x0002L
        !          1653: #define CBS_DROPDOWNLIST          0x0004L
        !          1654: /*
        !          1655:  *The foolowing edit and listbox styles may be used in conjunction
        !          1656:  *with CBS_ styles
        !          1657:  *ES_AUTOTAB ES_ANY ES_SBCS ES_DBCS ES_MIXED LS_HORZSCROLL
        !          1658: */
        !          1659: 
        !          1660: /*
        !          1661:  *IDs of combobox entry field and listbox.
        !          1662:  */
        !          1663: #define CBID_LIST                 0x029A
        !          1664: #define CBID_EDIT                 0x029B
        !          1665: 
        !          1666: #define CBM_SHOWLIST              0x0170L
        !          1667: #define CBM_HILITE                0x0171L
        !          1668: #define CBM_ISLISTSHOWING         0x0172L
        !          1669: 
        !          1670: #define CBN_EFCHANGE              1
        !          1671: #define CBN_EFSCROLL              2
        !          1672: #define CBN_MEMERROR              3
        !          1673: #define CBN_LBSELECT              4
        !          1674: #define CBN_LBSCROLL              5
        !          1675: #define CBN_SHOWLIST              6
        !          1676: #define CBN_ENTER                 7
        !          1677: 
        !          1678: #define WC_ENTRYFIELD       ((PSZ)0xffff0006L)
        !          1679: 
        !          1680: #ifndef INCL_SAADEFS
        !          1681: typedef struct _ENTRYFDATA { /* efd */
        !          1682:     USHORT  cb;
        !          1683:     USHORT  cchEditLimit;
        !          1684:     USHORT  ichMinSel;
        !          1685:     USHORT  ichMaxSel;
        !          1686: } ENTRYFDATA;
        !          1687: typedef ENTRYFDATA FAR *PENTRYFDATA;
        !          1688: 
        !          1689: #endif /* !INCL_SAADEFS */
        !          1690: 
        !          1691: /* Entry Field messages */
        !          1692: 
        !          1693: #define EM_QUERYCHANGED                   0x0140
        !          1694: #define EM_QUERYSEL               0x0141
        !          1695: #define EM_SETSEL                 0x0142
        !          1696: #define EM_SETTEXTLIMIT                   0x0143
        !          1697: 
        !          1698: #ifndef INCL_SAADEFS
        !          1699: #define EM_CUT                    0x0144
        !          1700: #define EM_COPY                           0x0145
        !          1701: #endif /* !INCL_SAADEFS */
        !          1702: #define EM_CLEAR                  0x0146
        !          1703: #ifndef INCL_SAADEFS
        !          1704: #define EM_PASTE                  0x0147
        !          1705: #endif /* !INCL_SAADEFS */
        !          1706: #define EM_QUERYFIRSTCHAR         0x0148
        !          1707: #define EM_SETFIRSTCHAR                   0x0149
        !          1708: #ifndef INCL_SAADEFS
        !          1709: #define EM_QUERYREADONLY          0x014a
        !          1710: #define EM_SETREADONLY            0x014b
        !          1711: #define EM_SETINSERTMODE          0x014c
        !          1712: #endif /* !INCL_SAADEFS */
        !          1713: 
        !          1714: /* Entry Field notification messages */
        !          1715: 
        !          1716: #define EN_SETFOCUS               0x0001
        !          1717: #define EN_KILLFOCUS              0x0002
        !          1718: #define EN_CHANGE                 0x0004
        !          1719: #define EN_SCROLL                 0x0008
        !          1720: #ifndef INCL_SAADEFS
        !          1721: #define EN_MEMERROR               0x0010
        !          1722: #define EN_OVERFLOW               0x0020
        !          1723: #define EN_INSERTMODETOGGLE       0x0040
        !          1724: #endif /* !INCL_SAADEFS */
        !          1725: 
        !          1726: #endif /* INCL_WINENTRYFIELDS */
        !          1727: 
        !          1728: 
        !          1729: /*  Multiple Line Entrys */
        !          1730: #ifdef INCL_WINMLE
        !          1731: #define WC_MLE    ((PSZ)0xffff000aL)
        !          1732: #include <pmmle.h>
        !          1733: #endif /* !INCL_WINMLE */
        !          1734: #ifdef INCL_WINLISTBOXES
        !          1735: 
        !          1736: /**** Listboxes */
        !          1737: 
        !          1738: /* List box styles */
        !          1739: 
        !          1740: #define LS_MULTIPLESEL            0x00000001L
        !          1741: 
        !          1742: #ifndef INCL_SAADEFS
        !          1743: #define LS_OWNERDRAW              0x00000002L
        !          1744: #endif /* !INCL_SAADEFS */
        !          1745: 
        !          1746: #define LS_NOADJUSTPOS            0x00000004L
        !          1747: #define LS_HORZSCROLL             0x00000008L
        !          1748: 
        !          1749: #define LS_EXTENDEDSEL            0x00000010L
        !          1750: 
        !          1751: /* Listbox class name */
        !          1752: 
        !          1753: #define WC_LISTBOX          ((PSZ)0xffff0007L)
        !          1754: 
        !          1755: /* List box notification messages */
        !          1756: 
        !          1757: #define LN_SELECT                 1
        !          1758: #define LN_SETFOCUS               2
        !          1759: #define LN_KILLFOCUS              3
        !          1760: #define LN_SCROLL                 4
        !          1761: #define LN_ENTER                  5
        !          1762: 
        !          1763: /* List box messages */
        !          1764: 
        !          1765: #define LM_QUERYITEMCOUNT         0x0160
        !          1766: #define LM_INSERTITEM             0x0161
        !          1767: #define LM_SETTOPINDEX            0x0162
        !          1768: #define LM_DELETEITEM             0x0163
        !          1769: #define LM_SELECTITEM             0x0164
        !          1770: #define LM_QUERYSELECTION         0x0165
        !          1771: #define LM_SETITEMTEXT            0x0166
        !          1772: #define LM_QUERYITEMTEXTLENGTH    0x0167
        !          1773: #define LM_QUERYITEMTEXT          0x0168
        !          1774: 
        !          1775: #define LM_SETITEMHANDLE          0x0169
        !          1776: #define LM_QUERYITEMHANDLE        0x016a
        !          1777: #define LM_SEARCHSTRING                   0x016b
        !          1778: #define LM_SETITEMHEIGHT          0x016c
        !          1779: #define LM_QUERYTOPINDEX          0x016d
        !          1780: #define LM_DELETEALL              0x016e
        !          1781: 
        !          1782: /* List box constants */
        !          1783: 
        !          1784: #define LIT_ERROR                 (-3)
        !          1785: #define LIT_MEMERROR              (-2)
        !          1786: #define LIT_NONE                  (-1)
        !          1787: #define LIT_FIRST                 (-1)
        !          1788: 
        !          1789: /* For LM_INSERTITEM msg */
        !          1790: 
        !          1791: #define LIT_END                           (-1)
        !          1792: #define LIT_SORTASCENDING         (-2)
        !          1793: #define LIT_SORTDESCENDING        (-3)
        !          1794: 
        !          1795: /* For LM_SEARCHSTRING msg */
        !          1796: 
        !          1797: #define LSS_SUBSTRING             0x0001
        !          1798: #define LSS_PREFIX                0x0002
        !          1799: #define LSS_CASESENSITIVE         0x0004
        !          1800: 
        !          1801: 
        !          1802: /* Useful macros */
        !          1803: 
        !          1804: /***************************************************************************
        !          1805: * SHORT WinDeleteLboxItem(HWND hwndLbox, SHORT index)
        !          1806: *    deletes item index from the listbox.
        !          1807: *    returns the number of items left.
        !          1808: \**************************************************************************/
        !          1809: #define WinDeleteLboxItem(hwndLbox, index) \
        !          1810:     ((SHORT)WinSendMsg(hwndLbox, LM_DELETEITEM, MPFROMSHORT(index), \
        !          1811:            (MPARAM)NULL))
        !          1812: 
        !          1813: /***************************************************************************
        !          1814: * SHORT WinInsertLboxItem(HWND hwndLbox, SHORT index, PSZ psz)
        !          1815: *    inserts psz into a listbox at index.  Index may be an LIT_ constant.
        !          1816: *    returns the actual index where it was inserted.
        !          1817: \**************************************************************************/
        !          1818: #define WinInsertLboxItem(hwndLbox, index, psz) \
        !          1819:     ((SHORT)WinSendMsg(hwndLbox, LM_INSERTITEM, MPFROMSHORT(index), \
        !          1820:            MPFROMP(psz)))
        !          1821: 
        !          1822: /***************************************************************************
        !          1823: * SHORT WinQueryLboxCount(HWND hwndLbox)
        !          1824: *    returns the number of items in the listbox.
        !          1825: *
        !          1826: \**************************************************************************/
        !          1827: #define WinQueryLboxCount(hwndLbox) \
        !          1828:     ((SHORT)WinSendMsg(hwndLbox, LM_QUERYITEMCOUNT, (MPARAM)NULL, \
        !          1829:            (MPARAM)NULL))
        !          1830: 
        !          1831: /***************************************************************************
        !          1832: * SHORT WinQueryLboxItemText(HWND hwndLbox, SHORT index, PSZ psz, SHORT cchMax)
        !          1833: *    fills psz with the text if item index.
        !          1834: *    returns the text length copied.
        !          1835: \**************************************************************************/
        !          1836: #define WinQueryLboxItemText(hwndLbox, index, psz, cchMax) \
        !          1837:     ((SHORT)WinSendMsg(hwndLbox, LM_QUERYITEMTEXT, \
        !          1838:            MPFROM2SHORT((index), (cchMax)), MPFROMP(psz)))
        !          1839: 
        !          1840: /***************************************************************************
        !          1841: * SHORT WinQueryLboxItemTextLength(HWND hwndLbox, SHORT index)
        !          1842: *    returns the length of item index.
        !          1843: *
        !          1844: \**************************************************************************/
        !          1845: #define WinQueryLboxItemTextLength(hwndLbox, index)        \
        !          1846:     ((SHORT)WinSendMsg(hwndLbox, LM_QUERYITEMTEXTLENGTH,    \
        !          1847:            MPFROMSHORT(index), (MPARAM)NULL))
        !          1848: 
        !          1849: /***************************************************************************
        !          1850: * BOOL WinSetLboxItemText(HWND hwndLbox, SHORT index, PSZ psz)
        !          1851: *    sets the text of item index to psz.
        !          1852: *    returns fSuccess.
        !          1853: \**************************************************************************/
        !          1854: #define WinSetLboxItemText(hwndLbox, index, psz) \
        !          1855:     ((BOOL)WinSendMsg(hwndLbox, LM_SETITEMTEXT, \
        !          1856:            MPFROMSHORT(index), MPFROMP(psz)))
        !          1857: 
        !          1858: /***************************************************************************
        !          1859: * SHORT WinQueryLboxSelectedItem(HWND hwndLbox)
        !          1860: *    returns the item index selected. (for single selection only)
        !          1861: *
        !          1862: \**************************************************************************/
        !          1863: #define WinQueryLboxSelectedItem(handLbox) \
        !          1864:     ((SHORT)WinSendMsg(hwndLbox, LM_QUERYSELECTION, MPFROMSHORT(LIT_FIRST), \
        !          1865:            (MPARAM)NULL))
        !          1866: 
        !          1867: #endif /* INCL_WINLISTBOXES */
        !          1868: 
        !          1869: 
        !          1870: #ifdef INCL_WINMENUS
        !          1871: 
        !          1872: /**** Menu Manager Subsection */
        !          1873: 
        !          1874: /* Menu control styles */
        !          1875: 
        !          1876: #define MS_ACTIONBAR              0x00000001L
        !          1877: #define MS_TITLEBUTTON            0x00000002L
        !          1878: #define MS_VERTICALFLIP                   0x00000004L
        !          1879: 
        !          1880: HWND APIENTRY WinLoadMenu(HWND hwndFrame, HMODULE hmod, USHORT idMenu);
        !          1881: 
        !          1882: /* Menu class name */
        !          1883: 
        !          1884: #define WC_MENU                     ((PSZ)0xffff0004L)
        !          1885: 
        !          1886: /* Menu control messages */
        !          1887: 
        !          1888: #define MM_INSERTITEM             0x0180
        !          1889: #define MM_DELETEITEM             0x0181
        !          1890: #define MM_QUERYITEM              0x0182
        !          1891: #define MM_SETITEM                0x0183
        !          1892: #define MM_QUERYITEMCOUNT         0x0184
        !          1893: #define MM_STARTMENUMODE          0x0185
        !          1894: #define MM_ENDMENUMODE            0x0186
        !          1895: #define MM_REMOVEITEM             0x0188
        !          1896: #define MM_SELECTITEM             0x0189
        !          1897: #define MM_QUERYSELITEMID         0x018a
        !          1898: #define MM_QUERYITEMTEXT          0x018b
        !          1899: #define MM_QUERYITEMTEXTLENGTH    0x018c
        !          1900: #define MM_SETITEMHANDLE          0x018d
        !          1901: #define MM_SETITEMTEXT            0x018e
        !          1902: #define MM_ITEMPOSITIONFROMID     0x018f
        !          1903: #define MM_ITEMIDFROMPOSITION     0x0190
        !          1904: #define MM_QUERYITEMATTR          0x0191
        !          1905: #define MM_SETITEMATTR            0x0192
        !          1906: #define MM_ISITEMVALID            0x0193
        !          1907: #define MM_QUERYITEMRECT          0x0194
        !          1908: 
        !          1909: 
        !          1910: HWND APIENTRY WinCreateMenu(HWND hwndParent, PVOID lpmt);
        !          1911: 
        !          1912: /* Owner Item Structure (Also used for listboxes) */
        !          1913: 
        !          1914: #ifndef INCL_SAADEFS
        !          1915: typedef struct _OWNERITEM { /* oi */
        !          1916:     HWND    hwnd;
        !          1917:     HPS            hps;
        !          1918:     USHORT  fsState;
        !          1919:     USHORT  fsAttribute;
        !          1920:     USHORT  fsStateOld;
        !          1921:     USHORT  fsAttributeOld;
        !          1922:     RECTL   rclItem;
        !          1923:     SHORT   idItem; /* This field contains idItem for menus, iItem for lb. */
        !          1924:     ULONG   hItem;
        !          1925: } OWNERITEM;
        !          1926: typedef OWNERITEM FAR *POWNERITEM;
        !          1927: #endif /* !INCL_SAADEFS */
        !          1928: 
        !          1929: /* Menu item */
        !          1930: 
        !          1931: typedef struct _MENUITEM { /* mi */
        !          1932:     SHORT   iPosition;
        !          1933:     USHORT  afStyle;
        !          1934:     USHORT  afAttribute;
        !          1935:     USHORT  id;
        !          1936:     HWND    hwndSubMenu;
        !          1937:     ULONG   hItem;
        !          1938: } MENUITEM;
        !          1939: typedef MENUITEM FAR *PMENUITEM;
        !          1940: 
        !          1941: #define MIT_END                           (-1)
        !          1942: #define MIT_NONE                  (-1)
        !          1943: #define MIT_MEMERROR              (-1)
        !          1944: #define MIT_ERROR                 (-1)
        !          1945: #define MIT_FIRST                 (-2)
        !          1946: #define MIT_LAST                  (-3)
        !          1947: #define MID_NONE                  MIT_NONE
        !          1948: #define MID_ERROR                 (-1)
        !          1949: 
        !          1950: /* Menu item styles & attributes */
        !          1951: 
        !          1952: #define MIS_TEXT                  0x0001
        !          1953: 
        !          1954: #ifndef INCL_SAADEFS
        !          1955: #define MIS_BITMAP                0x0002
        !          1956: #endif /* !INCL_SAADEFS */
        !          1957: #define MIS_SEPARATOR             0x0004
        !          1958: 
        !          1959: #ifndef INCL_SAADEFS
        !          1960: #define MIS_OWNERDRAW             0x0008
        !          1961: #endif /* !INCL_SAADEFS */
        !          1962: 
        !          1963: #define MIS_SUBMENU               0x0010
        !          1964: #define MIS_MULTMENU              0x0020      /* multiple choice submenu     */
        !          1965: #define MIS_SYSCOMMAND            0x0040
        !          1966: #define MIS_HELP                  0x0080
        !          1967: #define MIS_STATIC                0x0100
        !          1968: #define MIS_BUTTONSEPARATOR       0x0200
        !          1969: #define MIS_BREAK                 0x0400
        !          1970: #define MIS_BREAKSEPARATOR        0x0800
        !          1971: #define MIS_GROUP                 0x1000      /* multiple choice group start */
        !          1972: /* In multiple choice submenus a style of 'single' denotes the item is a
        !          1973: ** radiobutton.  Absence of this style defaults the item to a checkbox.              */
        !          1974: #define MIS_SINGLE                0x2000
        !          1975: 
        !          1976: #define MIA_NODISMISS             0x0020
        !          1977: #define MIA_FRAMED                0x1000
        !          1978: #define MIA_CHECKED               0x2000
        !          1979: #define MIA_DISABLED              0x4000
        !          1980: #define MIA_HILITED               0x8000
        !          1981: 
        !          1982: 
        !          1983: BOOL APIENTRY WinPopupMenu(HWND hwndParent, HWND hwndOwner, HWND hwndMenu,
        !          1984:                           SHORT x, SHORT y, SHORT idItem, USHORT fs);
        !          1985: 
        !          1986: /* Values of fs in WinPopupMenu call */
        !          1987: 
        !          1988: #define PU_POSITIONONITEM         0x0001 /* Need SHORT idItem parameter */
        !          1989: 
        !          1990: #define PU_HCONSTRAIN             0x0002 /* Keep menu on left and right edge */
        !          1991: #define PU_VCONSTRAIN             0x0004 /* Keep menu on top and bottom edge */
        !          1992: 
        !          1993: #define PU_NONE                           0x0000 /* If invoked by keyboard */
        !          1994: #define PU_MOUSEBUTTON1DOWN       0x0008 /* If invoked by button 1 */
        !          1995: #define PU_MOUSEBUTTON2DOWN       0x0010 /* If invoked by button 2 */
        !          1996: #define PU_MOUSEBUTTON3DOWN       0x0018 /* If invoked by button 3 */
        !          1997: 
        !          1998: #define PU_SELECTITEM             0x0020 /* Set selected item (use with kbd) */
        !          1999: 
        !          2000: #define PU_MOUSEBUTTON1                   0x0040 /* If button1 use allowed */
        !          2001: #define PU_MOUSEBUTTON2                   0x0080 /* If button2 use allowed */
        !          2002: #define PU_MOUSEBUTTON3                   0x0100 /* If button3 use allowed */
        !          2003: #define PU_KEYBOARD               0x0200 /* If keyboard use allowed */
        !          2004: 
        !          2005: 
        !          2006: /* Useful macros */
        !          2007: 
        !          2008: /***************************************************************************
        !          2009: * BOOL WinCheckMenuItem(HWND hwndMenu, USHORT id, BOOL fcheck)
        !          2010: *    Sets the check state of menuitem #id to fcheck.
        !          2011: *    returns fSuccess.
        !          2012: \**************************************************************************/
        !          2013: #define WinCheckMenuItem(hwndMenu, id, fcheck) \
        !          2014:     ((BOOL)WinSendMsg(hwndMenu, MM_SETITEMATTR, \
        !          2015:            MPFROM2SHORT(id, TRUE), \
        !          2016:            MPFROM2SHORT(MIA_CHECKED, (BOOL)(fcheck) ? MIA_CHECKED : 0)))
        !          2017: 
        !          2018: /***************************************************************************
        !          2019: * BOOL WinIsMenuItemChecked(HWND hwndMenu, USHORT id)
        !          2020: *    returns the check state of menuitem #id.
        !          2021: *
        !          2022: \**************************************************************************/
        !          2023: #define WinIsMenuItemChecked(hwndMenu, id) \
        !          2024:     ((BOOL)WinSendMsg(hwndMenu, MM_QUERYITEMATTR, \
        !          2025:            MPFROM2SHORT(id, TRUE), \
        !          2026:            MPFROMSHORT(MIA_CHECKED)))
        !          2027: 
        !          2028: /***************************************************************************
        !          2029: * BOOL WinEnableMenuItem(HWND hwndMenu, USHORT id, BOOL fenable)
        !          2030: *    sets the enable state of menuitem #id to fenable.
        !          2031: *    returns fSuccess.
        !          2032: \**************************************************************************/
        !          2033: #define WinEnableMenuItem(hwndMenu, id, fEnable) \
        !          2034:     ((BOOL)WinSendMsg(hwndMenu, MM_SETITEMATTR, \
        !          2035:            MPFROM2SHORT(id, TRUE), \
        !          2036:            MPFROM2SHORT(MIA_DISABLED, (BOOL)(fEnable) ? 0 : MIA_DISABLED)))
        !          2037: 
        !          2038: /***************************************************************************
        !          2039: * BOOL WinIsMenuItemEnabled(HWND hwndMenu, USHORT id)
        !          2040: *    returns the enable state of menuitem #id.
        !          2041: *
        !          2042: \**************************************************************************/
        !          2043: #define WinIsMenuItemEnabled(hwndMenu, id)  \
        !          2044:     (!(BOOL)WinSendMsg(hwndMenu, MM_QUERYITEMATTR, \
        !          2045:            MPFROM2SHORT(id, TRUE), \
        !          2046:            MPFROMSHORT(MIA_DISABLED)))
        !          2047: 
        !          2048: /***************************************************************************
        !          2049: * BOOL WinSetMenuItemText(HWND hwndMenu, USHORT id, PSZ psz)
        !          2050: *    sets the text of menuitem #id.
        !          2051: *    returns fSuccess.
        !          2052: \**************************************************************************/
        !          2053: #define WinSetMenuItemText(hwndMenu, id, psz) \
        !          2054:     ((BOOL)WinSendMsg(hwndMenu, MM_SETITEMTEXT, \
        !          2055:            MPFROMSHORT(id), MPFROMP(psz)))
        !          2056: 
        !          2057: /***************************************************************************
        !          2058: * BOOL WinIsMenuItemValid(HWND hwndMenu, USHORT id)
        !          2059: *    Returns TRUE if the specified item is a valid choice.
        !          2060: \**************************************************************************/
        !          2061: #define WinIsMenuItemValid(hwndMenu, id) \
        !          2062:     ((BOOL)WinSendMsg(hwndMenu, MM_ISITEMVALID, \
        !          2063:            MPFROM2SHORT(id, TRUE), MPFROMSHORT(FALSE)))
        !          2064: 
        !          2065: #endif /* INCL_WINMENUS */
        !          2066: 
        !          2067: 
        !          2068: #ifdef INCL_WINSCROLLBARS
        !          2069: 
        !          2070: /*** Scroll Bar controls Subsection */
        !          2071: 
        !          2072: /* Scroll Bar styles */
        !          2073: 
        !          2074: #define SBS_HORZ                  0L
        !          2075: #define SBS_VERT                  1L
        !          2076: #define SBS_THUMBSIZE             2L
        !          2077: #define SBS_AUTOTRACK             4L
        !          2078: 
        !          2079: #ifdef DCR_AUTOSIZE
        !          2080: #define SBS_AUTOSIZE       0x2000L
        !          2081: #endif
        !          2082: /* Scroll bar class name */
        !          2083: 
        !          2084: 
        !          2085: #define WC_SCROLLBAR        ((PSZ)0xffff0008L)
        !          2086: 
        !          2087: /* Scroll Bar messages */
        !          2088: 
        !          2089: #define SBM_SETSCROLLBAR          0x01a0
        !          2090: #define SBM_SETPOS                0x01a1
        !          2091: #define SBM_QUERYPOS              0x01a2
        !          2092: #define SBM_QUERYRANGE            0x01a3
        !          2093: #define SBM_SETTHUMBSIZE          0x01a6
        !          2094: 
        !          2095: /* Scroll Bar Commands */
        !          2096: 
        !          2097: #define SB_LINEUP                 1
        !          2098: #define SB_LINEDOWN               2
        !          2099: #define SB_LINELEFT               1
        !          2100: #define SB_LINERIGHT              2
        !          2101: #define SB_PAGEUP                 3
        !          2102: #define SB_PAGEDOWN               4
        !          2103: #define SB_PAGELEFT               3
        !          2104: #define SB_PAGERIGHT              4
        !          2105: #define SB_SLIDERTRACK            5
        !          2106: #define SB_SLIDERPOSITION         6
        !          2107: #define SB_ENDSCROLL              7
        !          2108: 
        !          2109: 
        !          2110: #ifndef INCL_SAADEFS
        !          2111: typedef struct _SBCDATA { /* sbcd */
        !          2112:     USHORT  cb;
        !          2113:     USHORT  sHilite;     /* reserved, should be set to zero */
        !          2114:     SHORT   posFirst;
        !          2115:     SHORT   posLast;
        !          2116:     SHORT   posThumb;
        !          2117:     SHORT   cVisible;
        !          2118:     SHORT   cTotal;
        !          2119: } SBCDATA;
        !          2120: typedef SBCDATA FAR *PSBCDATA;
        !          2121: #endif /* !INCL_SAADEFS */
        !          2122: 
        !          2123: #endif /* INCL_WINSCROLLBARS */
        !          2124: 
        !          2125: 
        !          2126: #if (defined(INCL_WINFRAMEMGR) || !defined(INCL_NOCOMMON))
        !          2127: /*** Frame Manager Common subsection */
        !          2128: 
        !          2129: #ifdef INCL_32
        !          2130: typedef struct _FRAMECDATA { /* fcdata */
        !          2131:     USHORT  cb;
        !          2132:     ULONG   flCreateFlags;
        !          2133:     HMODULE hmodResources;
        !          2134:     USHORT  idResources;
        !          2135: } FRAMECDATA;
        !          2136: typedef FRAMECDATA FAR *PFRAMECDATA;
        !          2137: #else /* not INCL_32 */
        !          2138: typedef struct _FRAMECDATA { /* fcdata */
        !          2139:     USHORT cb;
        !          2140:     ULONG flCreateFlags;
        !          2141:     USHORT hmodResources;
        !          2142:     USHORT idResources;
        !          2143: } FRAMECDATA;
        !          2144: typedef FRAMECDATA FAR *PFRAMECDATA;
        !          2145: #endif /* INCL_32 */
        !          2146: 
        !          2147: /* Frame window styles */
        !          2148: 
        !          2149: #define FCF_TITLEBAR              0x00000001L
        !          2150: #define FCF_SYSMENU               0x00000002L
        !          2151: #define FCF_MENU                  0x00000004L
        !          2152: #define FCF_SIZEBORDER            0x00000008L
        !          2153: #define FCF_MINBUTTON             0x00000010L
        !          2154: #define FCF_MAXBUTTON             0x00000020L
        !          2155: #define FCF_MINMAX                0x00000030L /* minmax means BOTH buttons */
        !          2156: #define FCF_VERTSCROLL            0x00000040L
        !          2157: #define FCF_HORZSCROLL            0x00000080L
        !          2158: #define FCF_DLGBORDER             0x00000100L
        !          2159: #define FCF_BORDER                0x00000200L
        !          2160: #define FCF_SHELLPOSITION         0x00000400L
        !          2161: #define FCF_TASKLIST              0x00000800L
        !          2162: #define FCF_NOBYTEALIGN                   0x00001000L
        !          2163: #define FCF_NOMOVEWITHOWNER       0x00002000L
        !          2164: #define FCF_ICON                  0x00004000L
        !          2165: #define FCF_ACCELTABLE            0x00008000L
        !          2166: #define FCF_SYSMODAL              0x00010000L
        !          2167: #define FCF_SCREENALIGN                   0x00020000L
        !          2168: #define FCF_MOUSEALIGN            0x00040000L
        !          2169: /* New values to enable multiple palettes.  Note that if none of the four   */
        !          2170: /* styles specified below are used then we default to the 'system' palette  */
        !          2171: #define FCF_PALETTE_NORMAL        0x00080000L /* normal palette            */
        !          2172: #define FCF_PALETTE_HELP          0x00100000L /* help palette              */
        !          2173: #define FCF_PALETTE_POPUPODD      0x00200000L /* odd level popup palette   */
        !          2174: #define FCF_PALETTE_POPUPEVEN     0x00400000L /* even level popup palette  */
        !          2175: /* FCF_ 0x00800000L is reserved */
        !          2176: #ifdef INCL_NLS
        !          2177: #define FCF_DBE_APPSTAT                   0x80000000L
        !          2178: #endif /* INCL_NLS */
        !          2179: 
        !          2180: /* FCF_TITLEBAR | FCF_SYSMENU | FCF_MENU | FCF_SIZEBORDER | FCF_MINMAX |
        !          2181:    FCF_ICON | FCF_ACCELTABLE | FCF_SHELLPOSITION | FCF_TASKLIST | FCF_PALETTE_NORMAL */
        !          2182: #define FCF_STANDARD           0x0008CC3FL
        !          2183: 
        !          2184: 
        !          2185: #define FS_ICON                           0x00000001L
        !          2186: #define FS_ACCELTABLE             0x00000002L
        !          2187: 
        !          2188: #ifndef INCL_SAADEFS
        !          2189: #define FS_SHELLPOSITION          0x00000004L
        !          2190: #endif /* !INCL_SAADEFS */
        !          2191: 
        !          2192: #define FS_TASKLIST               0x00000008L
        !          2193: #define FS_NOBYTEALIGN            0x00000010L
        !          2194: #define FS_NOMOVEWITHOWNER        0x00000020L
        !          2195: #define FS_SYSMODAL               0x00000040L
        !          2196: #define FS_DLGBORDER              0x00000080L
        !          2197: #define FS_BORDER                 0x00000100L
        !          2198: #define FS_SCREENALIGN            0x00000200L
        !          2199: #define FS_MOUSEALIGN             0x00000400L
        !          2200: #define FS_SIZEBORDER             0x00000800L
        !          2201: #ifdef INCL_NLS
        !          2202: #define FS_DBE_APPSTAT            0x00008000L
        !          2203: #endif /* INCL_NLS */
        !          2204: 
        !          2205: /* FS_ICON | FS_ACCELTABLE | FS_SHELLPOSITION | FS_TASKLIST */
        !          2206: #define FS_STANDARD               0x0000000FL
        !          2207: 
        !          2208: 
        !          2209: /* Frame Window Flags accessed via WinSet/QueryWindowUShort(QWS_FLAGS) */
        !          2210: 
        !          2211: #ifndef INCL_SAADEFS
        !          2212: #define FF_FLASHWINDOW            0x0001
        !          2213: #define FF_ACTIVE                 0x0002
        !          2214: #define FF_FLASHHILITE            0x0004
        !          2215: #define FF_OWNERHIDDEN            0x0008
        !          2216: #define FF_DLGDISMISSED                   0x0010
        !          2217: #define FF_OWNERDISABLED          0x0020
        !          2218: #define FF_SELECTED               0x0040
        !          2219: #define FF_NOACTIVATESWP          0x0080
        !          2220: #endif /* !INCL_SAADEFS */
        !          2221: 
        !          2222: 
        !          2223: HWND  APIENTRY WinCreateStdWindow(HWND hwndParent, ULONG flStyle,
        !          2224:                                  PULONG pflCreateFlags, PSZ pszClientClass,
        !          2225:                                  PSZ pszTitle, ULONG styleClient, HMODULE hmod,
        !          2226:                                  USHORT idResources, PHWND phwndClient);
        !          2227: 
        !          2228: 
        !          2229: #endif /* Frame Manager Common subsection */
        !          2230: 
        !          2231: 
        !          2232: #ifdef INCL_WINFRAMEMGR
        !          2233: 
        !          2234: BOOL  APIENTRY WinFlashWindow(HWND hwndFrame, BOOL fFlash);
        !          2235: 
        !          2236: /* Frame window related messages */
        !          2237: 
        !          2238: #define WM_FLASHWINDOW            0x0040
        !          2239: #define WM_FORMATFRAME            0x0041
        !          2240: #define WM_UPDATEFRAME            0x0042
        !          2241: #define WM_FOCUSCHANGE            0x0043
        !          2242: 
        !          2243: #define WM_SETBORDERSIZE          0x0044
        !          2244: #define WM_TRACKFRAME             0x0045
        !          2245: #define WM_MINMAXFRAME            0x0046
        !          2246: #define WM_SETICON                0x0047
        !          2247: #define WM_QUERYICON              0x0048
        !          2248: #define WM_SETACCELTABLE          0x0049
        !          2249: #define WM_QUERYACCELTABLE        0x004a
        !          2250: #define WM_TRANSLATEACCEL         0x004b
        !          2251: #define WM_QUERYTRACKINFO         0x004c
        !          2252: #define WM_QUERYBORDERSIZE        0x004d
        !          2253: #define WM_NEXTMENU               0x004e
        !          2254: #define WM_ERASEBACKGROUND        0x004f
        !          2255: #define WM_QUERYFRAMEINFO         0x0050
        !          2256: #define WM_QUERYFOCUSCHAIN        0x0051
        !          2257: #define WM_OWNERPOSCHANGE         0x0052
        !          2258: #define WM_CALCFRAMERECT          0x0053
        !          2259: /* Note 0x0054 is reserved */
        !          2260: #define WM_WINDOWPOSCHANGED       0x0055
        !          2261: #define WM_ADJUSTFRAMEPOS         0x0056
        !          2262: #define WM_QUERYFRAMECTLCOUNT     0x0059
        !          2263: #ifndef INCL_SAADEFS
        !          2264: /* Note 0x005A is reserved */
        !          2265: #define WM_QUERYHELPINFO          0x005B
        !          2266: #define WM_SETHELPINFO            0x005C
        !          2267: #define WM_ERROR                  0x005D
        !          2268: #define WM_REALIZEPALETTE         0x005E
        !          2269: 
        !          2270: 
        !          2271: /* WM_QUERYFRAMEINFO constants */
        !          2272: 
        !          2273: #define FI_FRAME                  0x00000001L
        !          2274: #define FI_OWNERHIDE              0x00000002L
        !          2275: #define FI_ACTIVATEOK             0x00000004L
        !          2276: #define FI_NOMOVEWITHOWNER        0x00000008L
        !          2277: 
        !          2278: 
        !          2279: #endif /* !INCL_SAADEFS */
        !          2280: 
        !          2281: /* Frame class name */
        !          2282: 
        !          2283: #define WC_FRAME            ((PSZ)0xffff0001L)
        !          2284: 
        !          2285: BOOL  APIENTRY WinCreateFrameControls(HWND hwndFrame, PFRAMECDATA pfcdata,
        !          2286:                                      PSZ pszTitle);
        !          2287: 
        !          2288: BOOL  APIENTRY WinCalcFrameRect(HWND hwndFrame, PRECTL prcl, BOOL fClient);
        !          2289: 
        !          2290: BOOL  APIENTRY WinGetMinPosition(HWND hwnd, PSWP pswp, PPOINTL pptl);
        !          2291: #ifndef INCL_SAADEFS
        !          2292: BOOL  APIENTRY WinGetMaxPosition(HWND hwnd, PSWP pswp);
        !          2293: #endif /* !INCL_SAADEFS */
        !          2294: 
        !          2295: typedef LHANDLE HSAVEWP;      /* hsvwp */
        !          2296: 
        !          2297: BOOL APIENTRY WinSaveWindowPos(HSAVEWP hsvwp, PSWP pswp, USHORT cswp);
        !          2298: 
        !          2299: /* Frame control IDs   */
        !          2300: 
        !          2301: #define FID_SYSMENU               0x8002
        !          2302: #define FID_TITLEBAR              0x8003
        !          2303: #define FID_MINMAX                0x8004
        !          2304: #define FID_MENU                  0x8005
        !          2305: #define FID_VERTSCROLL            0x8006
        !          2306: #define FID_HORZSCROLL            0x8007
        !          2307: #define FID_CLIENT                0x8008
        !          2308: /* Note 0x8009 is reserved */
        !          2309: #define FID_DBE_APPSTAT                   0x8010
        !          2310: #define FID_DBE_KBDSTAT                   0x8011
        !          2311: #define FID_DBE_PECIC             0x8012
        !          2312: #define FID_DBE_KKPOPUP                   0x8013
        !          2313: 
        !          2314: /* Standard WM_SYSCOMMAND command values */
        !          2315: 
        !          2316: #define SC_SIZE                           0x8000
        !          2317: #define SC_MOVE                           0x8001
        !          2318: #define SC_MINIMIZE               0x8002
        !          2319: #define SC_MAXIMIZE               0x8003
        !          2320: #define SC_CLOSE                  0x8004
        !          2321: #define SC_NEXT                           0x8005
        !          2322: #define SC_APPMENU                0x8006
        !          2323: #define SC_SYSMENU                0x8007
        !          2324: #define SC_RESTORE                0x8008
        !          2325: #define SC_NEXTFRAME              0x8009
        !          2326: #define SC_NEXTWINDOW             0x8010
        !          2327: #ifndef INCL_SAADEFS
        !          2328: #define SC_TASKMANAGER            0x8011
        !          2329: #define SC_HELPKEYS               0x8012
        !          2330: #define SC_HELPINDEX              0x8013
        !          2331: #define SC_HELPEXTENDED                   0x8014
        !          2332: #define SC_SWITCHPANELIDS         0x8015
        !          2333: #define SC_DBE_FIRST              0x8018
        !          2334: #define SC_DBE_LAST               0x801F
        !          2335: 
        !          2336: #endif /* !INCL_SAADEFS */
        !          2337: 
        !          2338: #endif /* INCL_WINFRAMEMGR */
        !          2339: 
        !          2340: /*** Frame controls */
        !          2341: 
        !          2342: #ifdef INCL_WINFRAMECTLS
        !          2343: 
        !          2344: /** Title bar controls */
        !          2345: 
        !          2346: /* Title bar control class name */
        !          2347: 
        !          2348: #define WC_TITLEBAR         ((PSZ)0xffff0009L)
        !          2349: 
        !          2350: /* Title bar control messages */
        !          2351: 
        !          2352: #define TBM_SETHILITE             0x01e3
        !          2353: #define TBM_QUERYHILITE                   0x01e4
        !          2354: 
        !          2355: /* XLATOFF */
        !          2356: #ifdef INCL_16
        !          2357: 
        !          2358: #define TBM_TRACKMOVE             0x01e5
        !          2359: 
        !          2360: #endif /* INCL_16 */
        !          2361: /* XLATON */
        !          2362: 
        !          2363: #endif /* INCL_WINFRAMECTLS */
        !          2364: 
        !          2365: #ifdef INCL_WINRECTANGLES
        !          2366: /*** Rectangle routines */
        !          2367: 
        !          2368: BOOL APIENTRY WinCopyRect(HAB hab, PRECTL prclDst, PRECTL prclSrc);
        !          2369: 
        !          2370: #ifndef INCL_SAADEFS
        !          2371: BOOL APIENTRY WinSetRect(HAB hab, PRECTL prcl, SHORT xLeft, SHORT yBottom,
        !          2372:                         SHORT xRight, SHORT yTop);
        !          2373: BOOL APIENTRY WinIsRectEmpty(HAB hab, PRECTL prcl);
        !          2374: BOOL APIENTRY WinEqualRect(HAB hab, PRECTL prcl1, PRECTL prcl2);
        !          2375: BOOL APIENTRY WinSetRectEmpty(HAB hab, PRECTL prcl);
        !          2376: BOOL APIENTRY WinOffsetRect(HAB hab, PRECTL prcl, SHORT cx, SHORT cy);
        !          2377: BOOL APIENTRY WinInflateRect(HAB hab, PRECTL prcl, SHORT cx, SHORT cy);
        !          2378: BOOL APIENTRY WinPtInRect(HAB hab, PRECTL prcl, PPOINTL pptl);
        !          2379: BOOL APIENTRY WinIntersectRect(HAB hab, PRECTL prclDst, PRECTL prclSrc1,
        !          2380:                               PRECTL prclSrc2);
        !          2381: BOOL APIENTRY WinUnionRect(HAB hab, PRECTL prclDst, PRECTL prclSrc1,
        !          2382:                           PRECTL prclSrc2);
        !          2383: BOOL APIENTRY WinSubtractRect(HAB hab, PRECTL prclDst, PRECTL prclSrc1,
        !          2384:                              PRECTL prclSrc2);
        !          2385: BOOL APIENTRY WinMakeRect(HAB hab, PWRECT pwrc);
        !          2386: BOOL APIENTRY WinMakePoints(HAB hab, PWPOINT pwpt, USHORT cwpt);
        !          2387: #endif /* !INCL_SAADEFS */
        !          2388: 
        !          2389: #endif /* INCL_WINRECTANGLES */
        !          2390: 
        !          2391: 
        !          2392: #ifdef INCL_WINSYS
        !          2393: 
        !          2394: /*** System values */
        !          2395: 
        !          2396: LONG APIENTRY WinQuerySysValue(HWND hwndDesktop, SHORT iSysValue);
        !          2397: BOOL  APIENTRY WinSetSysValue(HWND hwndDesktop, SHORT iSysValue, LONG lValue);
        !          2398: 
        !          2399: #define SV_SWAPBUTTON             0
        !          2400: #define SV_DBLCLKTIME             1
        !          2401: #define SV_CXDBLCLK               2
        !          2402: #define SV_CYDBLCLK               3
        !          2403: #define SV_CXSIZEBORDER                   4
        !          2404: #define SV_CYSIZEBORDER                   5
        !          2405: #define SV_ALARM                  6
        !          2406: 
        !          2407: #ifndef INCL_SAADEFS
        !          2408: #define SV_RESERVEDFIRST1         7
        !          2409: #define SV_RESERVEDLAST1          8
        !          2410: #endif /* !INCL_SAADEFS */
        !          2411: 
        !          2412: #define SV_CURSORRATE             9
        !          2413: #define SV_FIRSTSCROLLRATE        10
        !          2414: #define SV_SCROLLRATE             11
        !          2415: #define SV_NUMBEREDLISTS          12
        !          2416: #define SV_WARNINGFREQ            13
        !          2417: #define SV_NOTEFREQ               14
        !          2418: #define SV_ERRORFREQ              15
        !          2419: #define SV_WARNINGDURATION        16
        !          2420: #define SV_NOTEDURATION                   17
        !          2421: #define SV_ERRORDURATION          18
        !          2422: 
        !          2423: #ifndef INCL_SAADEFS
        !          2424: #define SV_RESERVEDFIRST          19
        !          2425: #define SV_RESERVEDLAST                   19
        !          2426: #endif /* !INCL_SAADEFS */
        !          2427: 
        !          2428: #define SV_CXSCREEN               20
        !          2429: #define SV_CYSCREEN               21
        !          2430: #define SV_CXVSCROLL              22
        !          2431: #define SV_CYHSCROLL              23
        !          2432: #define SV_CYVSCROLLARROW         24
        !          2433: #define SV_CXHSCROLLARROW         25
        !          2434: #define SV_CXBORDER               26
        !          2435: #define SV_CYBORDER               27
        !          2436: #define SV_CXDLGFRAME             28
        !          2437: #define SV_CYDLGFRAME             29
        !          2438: #define SV_CYTITLEBAR             30
        !          2439: #define SV_CYVSLIDER              31
        !          2440: #define SV_CXHSLIDER              32
        !          2441: #define SV_CXMINMAXBUTTON         33
        !          2442: #define SV_CYMINMAXBUTTON         34
        !          2443: #define SV_CYMENU                 35
        !          2444: #define SV_CXFULLSCREEN                   36
        !          2445: #define SV_CYFULLSCREEN                   37
        !          2446: #define SV_CXICON                 38
        !          2447: #define SV_CYICON                 39
        !          2448: #define SV_CXPOINTER              40
        !          2449: #define SV_CYPOINTER              41
        !          2450: 
        !          2451: #define SV_DEBUG                  42
        !          2452: #define SV_CMOUSEBUTTONS          43
        !          2453: #define SV_CPOINTERBUTTONS        43                               /*@FAR*/
        !          2454: #define SV_POINTERLEVEL                   44
        !          2455: #define SV_CURSORLEVEL            45
        !          2456: #define SV_TRACKRECTLEVEL         46
        !          2457: 
        !          2458: #ifndef INCL_SAADEFS
        !          2459: #define SV_CTIMERS                47
        !          2460: #endif /* !INCL_SAADEFS */
        !          2461: 
        !          2462: #define SV_MOUSEPRESENT                   48
        !          2463: 
        !          2464: #define SV_CXBYTEALIGN            49
        !          2465: #define SV_CXALIGN                49                               /*@FAR*/
        !          2466: #define SV_CYBYTEALIGN            50
        !          2467: #define SV_CYALIGN                50                               /*@FAR*/
        !          2468: 
        !          2469: /* The following value enables any greater value to be set by WinSetSysVlaue. */
        !          2470: /* Values of 51-55 are spare for extra non-settable system values            */
        !          2471: /* This is to enable the setting of SV_EXTRAKEYBEEP by applications.         */
        !          2472: 
        !          2473: #define SV_NOTRESERVED            56
        !          2474: #define SV_EXTRAKEYBEEP                   57
        !          2475: 
        !          2476: /* The following system value controls whether PM controls the keyboard             */
        !          2477: /* lights for light key keystrokes (else applications will)                 */
        !          2478: #define SV_SETLIGHTS              58
        !          2479: #define SV_INSERTMODE             59
        !          2480: 
        !          2481: 
        !          2482: #define SV_MENUROLLDOWNDELAY      64
        !          2483: #define SV_MENUROLLUPDELAY        65
        !          2484: #define SV_ALTMNEMONIC            66
        !          2485: #define SV_TASKLISTMOUSEACCESS    67
        !          2486: 
        !          2487: #define SV_CCHICONTEXTWIDTH    68
        !          2488: #define SV_CICONTEXTLINES      69
        !          2489: 
        !          2490: /* The following is the total number of system values */
        !          2491: #define SV_CSYSVALUES             70
        !          2492: 
        !          2493: /*
        !          2494:  * Presentation parameter structures.
        !          2495:  */
        !          2496: typedef struct _PARAM { /* param */
        !          2497:     ULONG   id;
        !          2498:     ULONG   cb;
        !          2499:     BYTE    ab[1];
        !          2500: } PARAM;
        !          2501: typedef PARAM NEAR *NPPARAM;
        !          2502: typedef PARAM FAR  *PPARAM;
        !          2503: 
        !          2504: typedef struct _PRESPARAMS { /* pres */
        !          2505:     ULONG   cb;
        !          2506:     PARAM   aparam[1];
        !          2507: } PRESPARAMS;
        !          2508: typedef PRESPARAMS NEAR *NPPRESPARAMS;
        !          2509: typedef PRESPARAMS FAR *PPRESPARAMS;
        !          2510: 
        !          2511: 
        !          2512: /*
        !          2513:  * Presentation parameter APIs
        !          2514:  */
        !          2515: BOOL  APIENTRY WinSetPresParam(HWND hwnd, ULONG id, ULONG cbParam, PVOID pbParam);
        !          2516: ULONG APIENTRY WinQueryPresParam(HWND hwnd, ULONG id1, ULONG id2, PULONG pulId,
        !          2517:                                 ULONG cbBuf, PVOID pbBuf, USHORT fs);
        !          2518: BOOL  APIENTRY WinRemovePresParam(HWND hwnd, ULONG id);
        !          2519: 
        !          2520: /*
        !          2521:  * Presentation parameter types.
        !          2522:  */
        !          2523: 
        !          2524: #define PP_FOREGROUNDCOLOR                     1L
        !          2525: #define PP_FOREGROUNDCOLORINDEX                        2L
        !          2526: #define PP_BACKGROUNDCOLOR                     3L
        !          2527: #define PP_BACKGROUNDCOLORINDEX                        4L
        !          2528: #define PP_HILITEFOREGROUNDCOLOR               5L
        !          2529: #define PP_HILITEFOREGROUNDCOLORINDEX          6L
        !          2530: #define PP_HILITEBACKGROUNDCOLOR               7L
        !          2531: #define PP_HILITEBACKGROUNDCOLORINDEX          8L
        !          2532: #define PP_DISABLEDFOREGROUNDCOLOR             9L
        !          2533: #define PP_DISABLEDFOREGROUNDCOLORINDEX                10L
        !          2534: #define PP_DISABLEDBACKGROUNDCOLOR             11L
        !          2535: #define PP_DISABLEDBACKGROUNDCOLORINDEX                12L
        !          2536: #define PP_BORDERCOLOR                         13L
        !          2537: #define PP_BORDERCOLORINDEX                    14L
        !          2538: #define PP_FONTNAMESIZE                                15L
        !          2539: #define PP_FONTHANDLE                          16L
        !          2540: #define PP_RESERVED                            17L
        !          2541: #define PP_ACTIVECOLOR                         18L
        !          2542: #define PP_ACTIVECOLORINDEX                    19L
        !          2543: #define PP_INACTIVECOLOR                       20L
        !          2544: #define PP_INACTIVECOLORINDEX                  21L
        !          2545: #define PP_ACTIVETEXTFGNDCOLOR                 22L
        !          2546: #define PP_ACTIVETEXTFGNDCOLORINDEX            23L
        !          2547: #define PP_ACTIVETEXTBGNDCOLOR                 24L
        !          2548: #define PP_ACTIVETEXTBGNDCOLORINDEX            25L
        !          2549: #define PP_INACTIVETEXTFGNDCOLOR               26L
        !          2550: #define PP_INACTIVETEXTFGNDCOLORINDEX          27L
        !          2551: #define PP_INACTIVETEXTBGNDCOLOR               28L
        !          2552: #define PP_INACTIVETEXTBGNDCOLORINDEX          29L
        !          2553: #define PP_SHADOW                              30L
        !          2554: 
        !          2555: #define PP_USER                                        0x8000L
        !          2556: 
        !          2557: /*
        !          2558:  * Flags for WinQueryPresParams()
        !          2559:  */
        !          2560: #define QPF_NOINHERIT           0x0001 /* Don't inherit                      */
        !          2561: #define QPF_ID1COLORINDEX       0x0002 /* Convert id1 color index into RGB   */
        !          2562: #define QPF_ID2COLORINDEX       0x0004 /* Convert id2 color index into RGB   */
        !          2563: #define QPF_PURERGBCOLOR        0x0008 /* Return pure RGB colors             */
        !          2564: #define QPF_VALIDFLAGS          0x000F /* Valid WinQueryPresParams() flags.  */
        !          2565: 
        !          2566: /*** System color functions */
        !          2567: 
        !          2568: LONG APIENTRY WinQuerySysColor(HWND hwndDesktop, LONG clr, LONG lReserved);
        !          2569: BOOL APIENTRY WinSetSysColors(HWND hwndDesktop, ULONG flOptions,
        !          2570:                              ULONG flFormat, LONG clrFirst, ULONG cclr,
        !          2571:                              PLONG pclr);
        !          2572: #define SYSCLR_BUTTONLIGHT             (-41L)
        !          2573: #define SYSCLR_BUTTONMIDDLE            (-40L)
        !          2574: #define SYSCLR_BUTTONDARK              (-39L)
        !          2575: #define SYSCLR_BUTTONDEFAULT           (-38L)
        !          2576: #define SYSCLR_TITLEBOTTOM             (-37L)
        !          2577: #define SYSCLR_SHADOW                  (-36L)
        !          2578: #define SYSCLR_ICONTEXT                        (-35L)
        !          2579: #define SYSCLR_DIALOGBACKGROUND                (-34L)
        !          2580: #define SYSCLR_HILITEFOREGROUND                (-33L)
        !          2581: #define SYSCLR_HILITEBACKGROUND                (-32L)
        !          2582: #define SYSCLR_INACTIVETITLETEXTBGND   (-31L)
        !          2583: #define SYSCLR_ACTIVETITLETEXTBGND     (-30L)
        !          2584: #define SYSCLR_INACTIVETITLETEXT       (-29L)
        !          2585: #define SYSCLR_ACTIVETITLETEXT         (-28L)
        !          2586: #define SYSCLR_OUTPUTTEXT              (-27L)
        !          2587: #define SYSCLR_WINDOWSTATICTEXT                (-26L)
        !          2588: #define SYSCLR_SCROLLBAR               (-25L)
        !          2589: #define SYSCLR_BACKGROUND              (-24L)
        !          2590: #define SYSCLR_ACTIVETITLE             (-23L)
        !          2591: #define SYSCLR_INACTIVETITLE           (-22L)
        !          2592: #define SYSCLR_MENU                    (-21L)
        !          2593: #define SYSCLR_WINDOW                  (-20L)
        !          2594: #define SYSCLR_WINDOWFRAME             (-19L)
        !          2595: #define SYSCLR_MENUTEXT                        (-18L)
        !          2596: #define SYSCLR_WINDOWTEXT              (-17L)
        !          2597: #define SYSCLR_TITLETEXT               (-16L)
        !          2598: #define SYSCLR_ACTIVEBORDER            (-15L)
        !          2599: #define SYSCLR_INACTIVEBORDER          (-14L)
        !          2600: #define SYSCLR_APPWORKSPACE            (-13L)
        !          2601: #define SYSCLR_HELPBACKGROUND          (-12L)
        !          2602: #define SYSCLR_HELPTEXT                        (-11L)
        !          2603: #define SYSCLR_HELPHILITE              (-10L)
        !          2604: 
        !          2605: #define SYSCLR_CSYSCOLORS              32L
        !          2606: 
        !          2607: #endif /* INCL_WINSYS */
        !          2608: 
        !          2609: 
        !          2610: #ifdef INCL_WINTIMER
        !          2611: /**** Timer manager */
        !          2612: 
        !          2613: #ifndef INCL_SAADEFS
        !          2614: 
        !          2615: #ifdef INCL_32
        !          2616: 
        !          2617: USHORT APIENTRY WinStartTimer(HAB hab, HWND hwnd, USHORT idTimer,
        !          2618:                              ULONG dtTimeout);
        !          2619: 
        !          2620: #else /* not INCL_32 */
        !          2621: 
        !          2622: USHORT APIENTRY WinStartTimer(HAB hab, HWND hwnd, USHORT idTimer,
        !          2623:                              USHORT dtTimeout);
        !          2624: 
        !          2625: #endif /* INCL_32 */
        !          2626: 
        !          2627: BOOL   APIENTRY WinStopTimer(HAB hab, HWND hwnd, USHORT idTimer);
        !          2628: ULONG  APIENTRY WinGetCurrentTime(HAB hab);
        !          2629: 
        !          2630: #define TID_CURSOR         0xffff  /* Reserved cursor timer ID              */
        !          2631: #define TID_SCROLL         0xfffe  /* Reserved scrolling timer ID           */
        !          2632: #define TID_FLASHWINDOW            0xfffd  /* Reserved for window flashing timer ID */
        !          2633: #define TID_USERMAX        0x7fff  /* Maximum user timer ID                 */
        !          2634: #endif /* !INCL_SAADEFS */
        !          2635: 
        !          2636: #endif /* INCL_WINTIMER */
        !          2637: 
        !          2638: 
        !          2639: #ifdef INCL_WINACCELERATORS
        !          2640: /**** Accelerator functions */
        !          2641: 
        !          2642: /* ACCEL fs bits
        !          2643:  *
        !          2644:  * NOTE: the first six AF_ code bits have the same value
        !          2645:  * as their KC_ counterparts
        !          2646:  */
        !          2647: #ifndef INCL_SAADEFS
        !          2648: #define AF_CHAR                           0x0001
        !          2649: #define AF_VIRTUALKEY             0x0002
        !          2650: #define AF_SCANCODE               0x0004
        !          2651: #define AF_SHIFT                  0x0008
        !          2652: #define AF_CONTROL                0x0010
        !          2653: #define AF_ALT                    0x0020
        !          2654: #define AF_LONEKEY                0x0040
        !          2655: #define AF_SYSCOMMAND             0x0100
        !          2656: #define AF_HELP                           0x0200
        !          2657: #endif /* !INCL_SAADEFS */                                     /* @FAR */
        !          2658: 
        !          2659: typedef LHANDLE HACCEL; /* haccel */
        !          2660: 
        !          2661: typedef struct _ACCEL { /* acc */
        !          2662:     USHORT  fs;
        !          2663:     USHORT  key;
        !          2664:     USHORT  cmd;
        !          2665: } ACCEL;
        !          2666: typedef ACCEL FAR *PACCEL;
        !          2667: 
        !          2668: typedef struct _ACCELTABLE { /* acct  */
        !          2669:     USHORT  cAccel;
        !          2670:     USHORT  codepage;
        !          2671:     ACCEL   aaccel[1];
        !          2672: } ACCELTABLE;
        !          2673: typedef ACCELTABLE FAR *PACCELTABLE;
        !          2674: 
        !          2675: HACCEL APIENTRY WinLoadAccelTable(HAB hab, HMODULE hmod, USHORT idAccelTable);
        !          2676: HACCEL APIENTRY WinCreateAccelTable(HAB hab, PACCELTABLE pAccelTable);
        !          2677: BOOL   APIENTRY WinDestroyAccelTable(HACCEL haccel);
        !          2678: USHORT APIENTRY WinCopyAccelTable(HACCEL haccel, PACCELTABLE pAccelTable,
        !          2679:                                  USHORT cbCopyMax);
        !          2680: BOOL   APIENTRY WinTranslateAccel(HAB hab, HWND hwnd, HACCEL haccel,
        !          2681:                                  PQMSG pqmsg);
        !          2682: BOOL   APIENTRY WinSetAccelTable(HAB hab, HACCEL haccel, HWND hwndFrame);
        !          2683: HACCEL APIENTRY WinQueryAccelTable(HAB hab, HWND hwndFrame);
        !          2684: 
        !          2685: #endif /* INCL_WINACCELERATORS */
        !          2686: 
        !          2687: /**** Extended Attribute Flags (Association Table) */
        !          2688: 
        !          2689: #define EAF_DEFAULTOWNER          0x0001
        !          2690: #define EAF_UNCHANGEABLE          0x0002
        !          2691: #define EAF_REUSEICON             0x0004
        !          2692: 
        !          2693: /*** WinTrackRect() information */
        !          2694: 
        !          2695: #ifdef INCL_WINTRACKRECT
        !          2696: 
        !          2697: /* WinTrackRect() tracking information structure */
        !          2698: 
        !          2699: typedef struct _TRACKINFO { /* ti */
        !          2700:     SHORT   cxBorder;
        !          2701:     SHORT   cyBorder;
        !          2702:     SHORT   cxGrid;
        !          2703:     SHORT   cyGrid;
        !          2704:     SHORT   cxKeyboard;
        !          2705:     SHORT   cyKeyboard;
        !          2706:     RECTL   rclTrack;
        !          2707:     RECTL   rclBoundary;
        !          2708:     POINTL  ptlMinTrackSize;
        !          2709:     POINTL  ptlMaxTrackSize;
        !          2710:     USHORT  fs;
        !          2711: } TRACKINFO;
        !          2712: typedef TRACKINFO FAR *PTRACKINFO;
        !          2713: 
        !          2714: #ifndef INCL_SAADEFS
        !          2715: BOOL APIENTRY WinTrackRect(HWND hwnd, HPS hps, PTRACKINFO pti);
        !          2716: BOOL APIENTRY WinShowTrackRect(HWND hwnd, BOOL fShow);
        !          2717: 
        !          2718: /* WinTrackRect() flags */
        !          2719: 
        !          2720: #define TF_LEFT                           0x0001
        !          2721: #define TF_TOP                    0x0002
        !          2722: #define TF_RIGHT                  0x0004
        !          2723: #define TF_BOTTOM                 0x0008
        !          2724: /* TF_MOVE = TF_LEFT | TF_TOP | TF_RIGHT | TF_BOTTOM */
        !          2725: #define TF_MOVE                           0x000F
        !          2726: 
        !          2727: #define TF_SETPOINTERPOS          0x0010
        !          2728: #define TF_GRID                           0x0020
        !          2729: #define TF_STANDARD               0x0040
        !          2730: #define TF_ALLINBOUNDARY          0x0080
        !          2731: #define TF_VALIDATETRACKRECT      0x0100
        !          2732: #define TF_PARTINBOUNDARY         0x0200
        !          2733: 
        !          2734: #endif /* !INCL_SAADEFS */
        !          2735: 
        !          2736: #endif /* INCL_WINTRACKRECT */
        !          2737: 
        !          2738: 
        !          2739: /**** Clipboard Manager */
        !          2740: 
        !          2741: #if (defined(INCL_WINCLIPBOARD) || defined(INCL_WINDDE))
        !          2742: #ifndef INCL_SAADEFS
        !          2743: 
        !          2744: /* Clipboard messages */
        !          2745: 
        !          2746: #define WM_RENDERFMT              0x0060
        !          2747: #define WM_RENDERALLFMTS          0x0061
        !          2748: #define WM_DESTROYCLIPBOARD       0x0062
        !          2749: #define WM_PAINTCLIPBOARD         0x0063
        !          2750: #define WM_SIZECLIPBOARD          0x0064
        !          2751: #define WM_HSCROLLCLIPBOARD       0x0065
        !          2752: #define WM_VSCROLLCLIPBOARD       0x0066
        !          2753: #define WM_DRAWCLIPBOARD          0x0067
        !          2754: 
        !          2755: /*
        !          2756:  * Standard Clipboard formats
        !          2757:  */
        !          2758: #define CF_TEXT                           1
        !          2759: #define CF_BITMAP                 2
        !          2760: #define CF_DSPTEXT                3
        !          2761: #define CF_DSPBITMAP              4
        !          2762: #define CF_METAFILE               5
        !          2763: #define CF_DSPMETAFILE            6
        !          2764: /*
        !          2765:  * standard DDE and clipboard format stings
        !          2766:  */
        !          2767: #define SZFMT_TEXT                  "#1"
        !          2768: #define SZFMT_BITMAP                "#2"
        !          2769: #define SZFMT_DSPTEXT               "#3"
        !          2770: #define SZFMT_DSPBITMAP                     "#4"
        !          2771: #define SZFMT_METAFILE              "#5"
        !          2772: #define SZFMT_DSPMETAFILE           "#6"
        !          2773: #define SZFMT_SYLK                  "Sylk"
        !          2774: #define SZFMT_DIF                   "Dif"
        !          2775: #define SZFMT_TIFF                  "Tiff"
        !          2776: #define SZFMT_OEMTEXT               "OemText"
        !          2777: #define SZFMT_DIB                   "Dib"
        !          2778: #define SZFMT_OWNERDISPLAY          "OwnerDisplay"
        !          2779: #define SZFMT_LINK                  "Link"
        !          2780: #define SZFMT_METAFILEPICT          "MetaFilePict"
        !          2781: #define SZFMT_DSPMETAFILEPICT       "DspMetaFilePict"
        !          2782: #define SZFMT_CPTEXT                "Codepage Text"
        !          2783: #define SZFMT_PALETTE               "Palette"
        !          2784: #define SZDDEFMT_RTF                "Rich Text Format"
        !          2785: #define SZDDEFMT_PTRPICT            "Printer_Picture"
        !          2786: 
        !          2787: typedef struct _MFP { /* mfp */
        !          2788:     POINTL sizeBounds; /* metafile notional grid size      */
        !          2789:     POINTL sizeMM;         /* metafile size high metric units  */
        !          2790:     ULONG  cbLength;   /* length of metafile data          */
        !          2791:     USHORT mapMode;        /* a PM metaflie map mode           */
        !          2792:     USHORT reserved;
        !          2793:     BYTE   abData[1];   /* metafile Data                    */
        !          2794: } MFP;
        !          2795: typedef MFP FAR *PMFP;
        !          2796: 
        !          2797: typedef struct _CPTEXT { /* cptxt */
        !          2798:     USHORT idCountry;
        !          2799:     USHORT usCodepage;
        !          2800:     USHORT usLangID;
        !          2801:     USHORT usSubLangID;
        !          2802:     BYTE   abText[1];  /* text string starts here          */
        !          2803: } CPTEXT;
        !          2804: typedef CPTEXT FAR *PCPTEXT;
        !          2805: 
        !          2806: #endif /* not INCL_SAADEFS */
        !          2807: #endif /* INCL_WINCLIPBOARD | INCL_WINDDE */
        !          2808: 
        !          2809: #ifdef INCL_WINCLIPBOARD
        !          2810: #ifndef INCL_SAADEFS
        !          2811: BOOL   APIENTRY WinSetClipbrdOwner(HAB hab, HWND hwnd);
        !          2812: BOOL   APIENTRY WinSetClipbrdData(HAB hab, ULONG ulData, USHORT fmt, USHORT rgfFmtInfo);
        !          2813: ULONG  APIENTRY WinQueryClipbrdData(HAB hab, USHORT fmt);
        !          2814: BOOL   APIENTRY WinQueryClipbrdFmtInfo(HAB hab, USHORT fmt,
        !          2815:                                       PUSHORT prgfFmtInfo);
        !          2816: BOOL   APIENTRY WinSetClipbrdViewer(HAB hab, HWND hwndNewClipViewer);
        !          2817: 
        !          2818: /* WinSetClipbrdData() flags */
        !          2819: 
        !          2820: #define CFI_OWNERFREE             0x0001
        !          2821: #define CFI_OWNERDISPLAY          0x0002
        !          2822: #ifdef INCL_32
        !          2823: #define CFI_POINTER                   0x0400
        !          2824: #else
        !          2825: #define CFI_SELECTOR              0x0100
        !          2826: #endif
        !          2827: #define CFI_HANDLE                        0x0200
        !          2828: 
        !          2829: #endif /* !INCL_SAADEFS */
        !          2830: 
        !          2831: USHORT APIENTRY WinEnumClipbrdFmts(HAB hab, USHORT fmt);
        !          2832: BOOL   APIENTRY WinEmptyClipbrd(HAB hab);
        !          2833: BOOL   APIENTRY WinOpenClipbrd(HAB hab);
        !          2834: BOOL   APIENTRY WinCloseClipbrd(HAB hab);
        !          2835: HWND   APIENTRY WinQueryClipbrdOwner(HAB hab, BOOL fLock);
        !          2836: HWND   APIENTRY WinQueryClipbrdViewer(HAB hab, BOOL fLock);
        !          2837: 
        !          2838: #endif /* INCL_WINCLIPBOARD */
        !          2839: 
        !          2840: 
        !          2841: #if (defined(INCL_WINCURSORS) || !defined(INCL_NOCOMMON))
        !          2842: /**** Cursor manager common subsection */
        !          2843: 
        !          2844: BOOL APIENTRY WinDestroyCursor(HWND hwnd);
        !          2845: BOOL APIENTRY WinShowCursor(HWND hwnd, BOOL fShow);
        !          2846: BOOL APIENTRY WinCreateCursor(HWND hwnd, SHORT x, SHORT y, SHORT cx, SHORT cy,
        !          2847:                              USHORT fs, PRECTL prclClip);
        !          2848: 
        !          2849: /* WinCreateCursor() flags */
        !          2850: 
        !          2851: #define CURSOR_SOLID              0x0000
        !          2852: #define CURSOR_HALFTONE                   0x0001
        !          2853: #define CURSOR_FRAME              0x0002
        !          2854: #define CURSOR_FLASH              0x0004
        !          2855: #define CURSOR_SETPOS             0x8000
        !          2856: 
        !          2857: 
        !          2858: #endif /* Cursor manager common subsection */
        !          2859: 
        !          2860: #ifdef INCL_WINCURSORS
        !          2861: 
        !          2862: typedef struct _CURSORINFO { /* csri */
        !          2863:     HWND    hwnd;
        !          2864:     SHORT   x;
        !          2865:     SHORT   y;
        !          2866:     SHORT   cx;
        !          2867:     SHORT   cy;
        !          2868:     USHORT  fs;
        !          2869:     RECTL   rclClip;
        !          2870: } CURSORINFO;
        !          2871: typedef CURSORINFO FAR *PCURSORINFO;
        !          2872: 
        !          2873: BOOL APIENTRY WinQueryCursorInfo(HWND hwndDesktop, PCURSORINFO pCursorInfo);
        !          2874: 
        !          2875: #endif /* INCL_WINCURSORS */
        !          2876: 
        !          2877: typedef LHANDLE HPOINTER;   /* hptr */
        !          2878: 
        !          2879: #ifdef INCL_WINPOINTERS
        !          2880: /**** Pointer manager */
        !          2881: 
        !          2882: BOOL    APIENTRY WinSetPointer(HWND hwndDesktop, HPOINTER hptrNew);
        !          2883: BOOL    APIENTRY WinShowPointer(HWND hwndDesktop, BOOL fShow);
        !          2884: HPOINTER APIENTRY WinQuerySysPointer(HWND hwndDesktop, SHORT iptr, BOOL fLoad);
        !          2885: 
        !          2886: 
        !          2887: /* System pointers (NOTE: these are 1-based) */
        !          2888: 
        !          2889: #ifdef LATER
        !          2890: 
        !          2891: #define SPTR_ARROW                1
        !          2892: #define SPTR_TEXT                 2
        !          2893: #define SPTR_WAIT                 3
        !          2894: #define SPTR_MOVE                 4
        !          2895: #define SPTR_SIZENWSE             5
        !          2896: #define SPTR_SIZENESW             6
        !          2897: #define SPTR_SIZEWE               7
        !          2898: #define SPTR_SIZENS               8
        !          2899: #define SPTR_APPICON              9
        !          2900: 
        !          2901: #define SPTR_ICONINFORMATION      10
        !          2902: #define SPTR_ICONQUESTION         11
        !          2903: #define SPTR_ICONERROR            12
        !          2904: #define SPTR_ICONWARNING          13
        !          2905: 
        !          2906: #define SPTR_CPTR                 13    /* Count of pointers loaded by PMWIN */
        !          2907: 
        !          2908: #define SPTR_ILLEGAL              14
        !          2909: #define SPTR_FILE                 15
        !          2910: #define SPTR_FOLDER               16
        !          2911: #define SPTR_MULTFILE             17
        !          2912: #define SPTR_PROGRAM              18
        !          2913: 
        !          2914: #else
        !          2915: 
        !          2916: #define SPTR_ARROW                1
        !          2917: #define SPTR_TEXT                 2
        !          2918: #define SPTR_WAIT                 3
        !          2919: #define SPTR_SIZE                 4
        !          2920: #define SPTR_MOVE                 5
        !          2921: #define SPTR_SIZENWSE             6
        !          2922: #define SPTR_SIZENESW             7
        !          2923: #define SPTR_SIZEWE               8
        !          2924: #define SPTR_SIZENS               9
        !          2925: #define SPTR_APPICON              10
        !          2926: #define SPTR_ICONINFORMATION      11
        !          2927: #define SPTR_ICONQUESTION         12
        !          2928: #define SPTR_ICONERROR            13
        !          2929: #define SPTR_ICONWARNING          14
        !          2930: #define SPTR_CPTR                 14    /* count loaded by pmwin */
        !          2931: 
        !          2932: #define SPTR_ILLEGAL              18
        !          2933: #define SPTR_FILE                 19
        !          2934: #define SPTR_FOLDER               20
        !          2935: #define SPTR_MULTFILE             21
        !          2936: #define SPTR_PROGRAM              22
        !          2937: 
        !          2938: /* backward compatibility */
        !          2939: #define SPTR_HANDICON        SPTR_ICONERROR
        !          2940: #define SPTR_QUESICON        SPTR_ICONQUESTION
        !          2941: #define SPTR_BANGICON        SPTR_ICONWARNING
        !          2942: #define SPTR_NOTEICON        SPTR_ICONINFORMATION
        !          2943: 
        !          2944: #endif /* LATER */
        !          2945: 
        !          2946: 
        !          2947: 
        !          2948: HPOINTER APIENTRY WinLoadPointer(HWND hwndDesktop, HMODULE hmod, USHORT idres);
        !          2949: BOOL    APIENTRY WinDestroyPointer(HPOINTER hptr);
        !          2950: HPOINTER APIENTRY WinCreatePointer(HWND hwndDesktop, HBITMAP hbmPointer,
        !          2951:                                   BOOL fPointer, SHORT xHotspot,
        !          2952:                                   SHORT yHotspot);
        !          2953: 
        !          2954: HPOINTER APIENTRY WinQueryPointer(HWND hwndDesktop);
        !          2955: BOOL    APIENTRY WinSetPointerPos(HWND hwndDesktop, SHORT x, SHORT y);
        !          2956: BOOL    APIENTRY WinQueryPointerPos(HWND hwndDesktop, PPOINTL pptl);
        !          2957: 
        !          2958: typedef struct _POINTERINFO { /* ptri */
        !          2959:     BOOL    fPointer;
        !          2960:     SHORT   xHotspot;
        !          2961:     SHORT   yHotspot;
        !          2962:     HBITMAP hbmPointer;
        !          2963:     HBITMAP hbmColor;
        !          2964: } POINTERINFO;
        !          2965: typedef POINTERINFO FAR *PPOINTERINFO;
        !          2966: 
        !          2967: HPOINTER APIENTRY WinCreatePointerIndirect(HWND hwndDesktop, PPOINTERINFO pptri);
        !          2968: BOOL    APIENTRY WinQueryPointerInfo(HPOINTER hptr,
        !          2969:                                      PPOINTERINFO pPointerInfo);
        !          2970: BOOL    APIENTRY WinDrawPointer(HPS hps, SHORT x, SHORT y, HPOINTER hptr,
        !          2971:                                 USHORT fs);
        !          2972: 
        !          2973: 
        !          2974: 
        !          2975: /* WinDrawPointer() constants */
        !          2976: 
        !          2977: #define DP_NORMAL                 0x0000
        !          2978: #define DP_HALFTONED              0x0001
        !          2979: #define DP_INVERTED               0x0002
        !          2980: 
        !          2981: 
        !          2982: HBITMAP APIENTRY WinGetSysBitmap(HWND hwndDesktop, USHORT ibm);
        !          2983: 
        !          2984: /* System bitmaps (NOTE: these are 1-based) */
        !          2985: 
        !          2986: #define SBMP_OLD_SYSMENU          1
        !          2987: #define SBMP_OLD_SBUPARROW        2
        !          2988: #define SBMP_OLD_SBDNARROW        3
        !          2989: #define SBMP_OLD_SBRGARROW        4
        !          2990: #define SBMP_OLD_SBLFARROW        5
        !          2991: #define SBMP_MENUCHECK            6
        !          2992: #define SBMP_CHECKBOXES                   7
        !          2993: #define SBMP_BTNCORNERS                   8
        !          2994: #define SBMP_OLD_MINBUTTON        9
        !          2995: #define SBMP_OLD_MAXBUTTON        10
        !          2996: #define SBMP_OLD_RESTOREBUTTON    11
        !          2997: #define SBMP_OLD_CHILDSYSMENU     12
        !          2998: #define SBMP_DRIVE                15
        !          2999: #define SBMP_FILE                 16
        !          3000: #define SBMP_FOLDER               17
        !          3001: #define SBMP_TREEPLUS             18
        !          3002: #define SBMP_TREEMINUS            19
        !          3003: #define SBMP_PROGRAM              22
        !          3004: #define SBMP_MENUATTACHED         23
        !          3005: #define SBMP_SIZEBOX              24
        !          3006: 
        !          3007: #define SBMP_SYSMENU              25
        !          3008: #define SBMP_MINBUTTON            26
        !          3009: #define SBMP_MAXBUTTON            27
        !          3010: #define SBMP_RESTOREBUTTON        28
        !          3011: #define SBMP_CHILDSYSMENU         29
        !          3012: #define SBMP_SYSMENUDEP                   30
        !          3013: #define SBMP_MINBUTTONDEP         31
        !          3014: #define SBMP_MAXBUTTONDEP         32
        !          3015: #define SBMP_RESTOREBUTTONDEP     33
        !          3016: #define SBMP_CHILDSYSMENUDEP      34
        !          3017: #define SBMP_SBUPARROW            35
        !          3018: #define SBMP_SBDNARROW            36
        !          3019: #define SBMP_SBLFARROW            37
        !          3020: #define SBMP_SBRGARROW            38
        !          3021: #define SBMP_SBUPARROWDEP         39
        !          3022: #define SBMP_SBDNARROWDEP         40
        !          3023: #define SBMP_SBLFARROWDEP         41
        !          3024: #define SBMP_SBRGARROWDEP         42
        !          3025: #define SBMP_SBUPARROWDIS         43
        !          3026: #define SBMP_SBDNARROWDIS         44
        !          3027: #define SBMP_SBLFARROWDIS         45
        !          3028: #define SBMP_SBRGARROWDIS         46
        !          3029: #define SBMP_COMBODOWN            47
        !          3030: 
        !          3031: #endif /* INCL_WINPOINTERS */
        !          3032: 
        !          3033: 
        !          3034: /**** Hook manager */
        !          3035: 
        !          3036: #ifdef INCL_WINHOOKS
        !          3037: 
        !          3038: #ifndef INCL_SAADEFS
        !          3039: BOOL APIENTRY WinSetHook(HAB hab, HMQ hmq, SHORT iHook, PFN pfnHook,
        !          3040:                         HMODULE hmod);
        !          3041: BOOL APIENTRY WinReleaseHook(HAB hab, HMQ hmq, SHORT iHook, PFN pfnHook,
        !          3042:                             HMODULE hmod);
        !          3043: BOOL APIENTRY WinCallMsgFilter(HAB hab, PQMSG pqmsg, USHORT msgf);
        !          3044: 
        !          3045: 
        !          3046: /* Hook codes */
        !          3047: 
        !          3048: #define HK_SENDMSG                0
        !          3049:     /* VOID EXPENTRY SendMsgHook(HAB hab,              ** installer's hab      **
        !          3050:                                 PSMHSTRUCT psmh,       ** p send msg struct    **
        !          3051:                                 BOOL fInterTask);      ** between threads      */
        !          3052: #define HK_INPUT                  1
        !          3053:     /* BOOL EXPENTRY InputHook(HAB hab,                        ** installer's hab      **
        !          3054:                               PQMSG pQmsg,             ** p qmsg               **
        !          3055:                               USHORT fs);              ** remove/noremove      */
        !          3056: #define HK_MSGFILTER              2
        !          3057:     /* BOOL EXPENTRY MsgFilterHook(HAB hab,            ** installer's hab      **
        !          3058:                                   PQMSG pQmsg,         ** p qmsg               **
        !          3059:                                   USHORT msgf);        ** filter flag          */
        !          3060: #define HK_JOURNALRECORD          3
        !          3061:     /* VOID EXPENTRY JournalRecordHook(HAB hab,                ** installer's hab      **
        !          3062:                                       PQMSG pQmsg);    ** p qmsg               */
        !          3063: #define HK_JOURNALPLAYBACK        4
        !          3064:     /* ULONG EXPENTRY JournalPlaybackHook(HAB hab,     **installer's hab       **
        !          3065:                                          BOOL fSkip,   ** skip messages        **
        !          3066:                                          PQMSG pQmsg); ** p qmsg               */
        !          3067: #define HK_HELP                           5
        !          3068:     /* BOOL EXPENTRY HelpHook(HAB hab,                 ** installer's hab      **
        !          3069:                              USHORT usMode,            ** mode                 **
        !          3070:                              USHORT idTopic,           ** main topic           **
        !          3071:                              USHORT idSubTopic,        ** sub topic            **
        !          3072:                              PRECTL prcPosition);      ** associated position  */
        !          3073: 
        !          3074: #define HK_LOADER                 6
        !          3075:     /* BOOL EXPENTRY LoaderHook(HAB hab,               ** installer's hab      **
        !          3076:                                SHORT idContext,        ** who called hook      **
        !          3077:                                PSZ pszLibname,         ** lib name string      **
        !          3078:                                PHLIB hlib,             ** p to lib handle      **
        !          3079:                                PSZ pszProcname,        ** procedure name       **
        !          3080:                                PFNWP wndProc);         ** window procedure     */
        !          3081: #define HK_REGISTERUSERMSG        7
        !          3082:     /* BOOL EXPENTRY RegisterUserHook(HAB hab,         ** installer's hab      **
        !          3083:                                    ULONG cUshort,      ** entries in arRMP     **
        !          3084:                                    PUSHORT arRMP,      ** RMP array            **
        !          3085:                                    PBOOL fRegistered); ** msg parms already reg*/
        !          3086: #define HK_MSGCONTROL             8
        !          3087:     /* BOOL EXPENTRY MsgControlHook(HAB hab,           ** installer's hab      **
        !          3088:                                    SHORT idContext,    ** who called hook      **
        !          3089:                                    HWND hwnd,          ** SEI window handle    **
        !          3090:                                    PSZ pszClassname,   ** window class name    **
        !          3091:                                    USHORT usMsgclass,  ** interested msg class **
        !          3092:                                    SHORT idControl,    ** SMI_*                **
        !          3093:                                    PBOOL fSuccess);    ** mode already set     */
        !          3094: #define HK_PLIST_ENTRY            9
        !          3095:     /* BOOL EXPENTRY ProgramListEntryHook(HAB hab,     ** installer's hab      **
        !          3096:                       PPRFHOOKPARMS pProfileHookParams,** data                 **
        !          3097:                       PBOOL fNoExecute);               ** cease hook processing*/
        !          3098: #define HK_PLIST_EXIT             10
        !          3099:     /* BOOL EXPENTRY ProgramListExitHook(HAB hab,      ** installer's hab      **
        !          3100:                PPRFHOOKPARMS pProfileHookParams);      ** data                 */
        !          3101: #define HK_FINDWORD               11
        !          3102:     /* BOOL EXPENTRY FindWordHook(usCodepage,          ** code page to use     **
        !          3103:                                  PSZ pszText,          ** text to break        **
        !          3104:                                  ULONG cb,             ** maximum text size    **
        !          3105:                                  ULONG ich,            ** break 'near' here    **
        !          3106:                                  PULONG pichStart,     ** where break began    **
        !          3107:                                  PULONG pichEnd,       ** where break ended    **
        !          3108:                                  PULONG pichNext);     ** where next word begin*/
        !          3109: #define HK_CODEPAGECHANGED        12
        !          3110:     /* VOID EXPENTRY CodePageChangedHook(HMQ hmq,      ** msg q handle         **
        !          3111:                                  USHORT usOldCodepage, ** old code page        **
        !          3112:                                  USHORT usNewCodepage);** new code page        */
        !          3113: 
        !          3114: #define HMQ_CURRENT         ((HMQ)1)
        !          3115: 
        !          3116: /* WH_MSGFILTER context codes */
        !          3117: 
        !          3118: #define MSGF_DIALOGBOX            1
        !          3119: #define MSGF_MESSAGEBOX                   2
        !          3120: #define MSGF_TRACK                8
        !          3121: 
        !          3122: /* HK_HELP Help modes */
        !          3123: 
        !          3124: #define HLPM_FRAME             (-1)
        !          3125: #define HLPM_WINDOW            (-2)
        !          3126: #define HLPM_MENU              (-3)
        !          3127: 
        !          3128: /* HK_SENDMSG structure */
        !          3129: 
        !          3130: #define PM_MODEL_1X     0
        !          3131: #define PM_MODEL_2X     1
        !          3132: 
        !          3133: #ifdef INCL_32
        !          3134: 
        !          3135: typedef struct _SMHSTRUCT {   /* smhs */
        !          3136:     MPARAM mp2;
        !          3137:     MPARAM mp1;
        !          3138:     USHORT msg;
        !          3139:     HWND   hwnd;
        !          3140:     USHORT model;
        !          3141: } SMHSTRUCT;
        !          3142: typedef SMHSTRUCT *PSMHSTRUCT;
        !          3143: 
        !          3144: #else /* not INCL_32 */
        !          3145: 
        !          3146: typedef struct _SMHSTRUCT {   /* smhs */
        !          3147:     MPARAM mp2;
        !          3148:     MPARAM mp1;
        !          3149:     USHORT msg;
        !          3150:     HWND   hwnd;
        !          3151: } SMHSTRUCT;
        !          3152: typedef SMHSTRUCT FAR *PSMHSTRUCT;
        !          3153: 
        !          3154: #endif /* INCL_32 */
        !          3155: 
        !          3156: /*HK_LOADER context codes */                                           /*@DIA*/
        !          3157: 
        !          3158: #define LHK_DELETEPROC            1
        !          3159: #define LHK_DELETELIB             2
        !          3160: #define LHK_LOADPROC              3
        !          3161: #define LHK_LOADLIB               4
        !          3162: 
        !          3163: /*HK_MSGCONTROL context codes */
        !          3164: 
        !          3165: #define MCHK_MSGINTEREST          1
        !          3166: #define MCHK_CLASSMSGINTEREST     2
        !          3167: #define MCHK_SYNCHRONISATION      3
        !          3168: #define MCHK_MSGMODE              4
        !          3169: 
        !          3170: /*HK_REGISTERUSERMSG conext codes */
        !          3171: 
        !          3172: #define RUMHK_DATATYPE            1
        !          3173: #define RUMHK_MSG                 2
        !          3174: 
        !          3175: #endif /* INCL_SAADEFS */
        !          3176: 
        !          3177: #endif /* INCL_WINHOOKS */
        !          3178: 
        !          3179: 
        !          3180: #ifdef INCL_WINTHUNKAPI
        !          3181: 
        !          3182: BOOL   APIENTRY WinSetClassThunkProc(PSZ pszClassname, PFN pfnThunkProc);
        !          3183: PFN    APIENTRY WinQueryClassThunkProc(PSZ pszClassname);
        !          3184: BOOL   APIENTRY WinSetWindowThunkProc(HWND hwnd, PFN pfnThunkProc);
        !          3185: PFN    APIENTRY WinQueryWindowThunkProc(HWND hwnd);
        !          3186: SHORT  APIENTRY WinQueryWindowModel(HWND hwnd);
        !          3187: 
        !          3188: #endif /* INCL_WINTHUNKAPI */
        !          3189: 
        !          3190: /*
        !          3191:  * Include Shell API
        !          3192:  */
        !          3193: #ifndef INCL_SAADEFS
        !          3194: #include <pmshl.h>     /* OS/2 Shell definitions */
        !          3195: #endif /* !INCL_SAADEFS */
        !          3196: 
        !          3197: #ifdef INCL_WINCOUNTRY
        !          3198: 
        !          3199: USHORT APIENTRY WinQueryCp(HMQ hmq);
        !          3200: 
        !          3201: #ifndef INCL_SAADEFS
        !          3202: BOOL   APIENTRY WinSetCp(HMQ hmq, USHORT idCodePage);
        !          3203: USHORT APIENTRY WinQueryCpList(HAB hab, USHORT ccpMax, PUSHORT prgcp);
        !          3204: 
        !          3205: #ifdef INCL_32
        !          3206: 
        !          3207: BOOL   APIENTRY WinCpTranslateString(HAB hab, USHORT cpSrc, PSZ pszSrc,
        !          3208:                                      USHORT cpDst, ULONG cchDestMax, PSZ pchDest);
        !          3209: 
        !          3210: #else /* not INCL_32 */
        !          3211: 
        !          3212: BOOL   APIENTRY WinCpTranslateString(HAB hab, USHORT cpSrc, PSZ pszSrc,
        !          3213:                                      USHORT cpDst, USHORT cchDestMax, PSZ pchDest);
        !          3214: 
        !          3215: #endif /* INCL_32 */
        !          3216: 
        !          3217: UCHAR  APIENTRY WinCpTranslateChar(HAB hab, USHORT cpSrc, UCHAR chSrc,
        !          3218:                                    USHORT cpDst);
        !          3219: 
        !          3220: USHORT APIENTRY WinUpper(HAB hab, USHORT idcp, USHORT idcc, PSZ psz);
        !          3221: USHORT APIENTRY WinUpperChar(HAB hab, USHORT idcp, USHORT idcc, USHORT c);
        !          3222: PSZ    APIENTRY WinNextChar(HAB hab, USHORT idcp, USHORT idcc, PSZ psz);
        !          3223: PSZ    APIENTRY WinPrevChar(HAB hab, USHORT idcp, USHORT idcc, PSZ pszStart,
        !          3224:                             PSZ psz);
        !          3225: USHORT APIENTRY WinCompareStrings(HAB hab, USHORT idcp, USHORT idcc, PSZ psz1,
        !          3226:                                   PSZ psz2, USHORT reserved);
        !          3227: #define WCS_ERROR                 0
        !          3228: #define WCS_EQ                    1
        !          3229: #define WCS_LT                    2
        !          3230: #define WCS_GT                    3
        !          3231: 
        !          3232: #endif /* !INCL_SAADEFS */
        !          3233: 
        !          3234: #endif /* INCL_WINCOUNTRY */
        !          3235: 
        !          3236: 
        !          3237: 
        !          3238: /* Heap Manager Interface declarations */
        !          3239: 
        !          3240: #ifdef INCL_WINHEAP
        !          3241: 
        !          3242: #ifndef INCL_32
        !          3243: 
        !          3244: #ifndef INCL_SAADEFS
        !          3245: typedef LHANDLE HHEAP;
        !          3246: 
        !          3247: HHEAP      APIENTRY WinCreateHeap(SEL selHeapBase, USHORT cbHeap,
        !          3248:                                   USHORT cbGrow, USHORT chMinDed,
        !          3249:                                   USHORT cbMaxDed, USHORT fOptions);
        !          3250: HHEAP      APIENTRY WinDestroyHeap(HHEAP hHeap);
        !          3251: USHORT     APIENTRY WinAvailMem(HHEAP hHeap, BOOL fCompact, USHORT cbMinFree);
        !          3252: NPBYTE     APIENTRY WinAllocMem(HHEAP hHeap, USHORT cb);
        !          3253: NPBYTE     APIENTRY WinReallocMem(HHEAP hHeap, NPBYTE npMem,
        !          3254:                                   USHORT cbOld, USHORT cbNew);
        !          3255: NPBYTE     APIENTRY WinFreeMem(HHEAP hHeap, NPBYTE npMem, USHORT cbMem);
        !          3256: PVOID      APIENTRY WinLockHeap(HHEAP hHeap);
        !          3257: 
        !          3258: #define HM_MOVEABLE               0x0001      /* Parameters to WinCreateHeap */
        !          3259: #define HM_VALIDSIZE              0x0002
        !          3260: #endif /* !INCL_SAADEFS */
        !          3261: 
        !          3262: #endif /* !INCL_32 */
        !          3263: 
        !          3264: #endif /* INCL_WINHEAP */
        !          3265: 
        !          3266: 
        !          3267: /*** Atom Manager Interface declarations */
        !          3268: 
        !          3269: #ifdef INCL_WINATOM
        !          3270: 
        !          3271: #ifndef INCL_SAADEFS
        !          3272: typedef LHANDLE         HATOMTBL;
        !          3273: typedef USHORT  ATOM;
        !          3274: 
        !          3275: HATOMTBL APIENTRY WinQuerySystemAtomTable(VOID);
        !          3276: HATOMTBL APIENTRY WinCreateAtomTable(USHORT cbInitial, USHORT cBuckets);
        !          3277: HATOMTBL APIENTRY WinDestroyAtomTable(HATOMTBL hAtomTbl);
        !          3278: ATOM    APIENTRY WinAddAtom(HATOMTBL hAtomTbl, PSZ pszAtomName);
        !          3279: ATOM    APIENTRY WinFindAtom(HATOMTBL hAtomTbl, PSZ pszAtomName);
        !          3280: ATOM    APIENTRY WinDeleteAtom(HATOMTBL hAtomTbl, ATOM atom);
        !          3281: USHORT  APIENTRY WinQueryAtomUsage(HATOMTBL hAtomTbl, ATOM atom);
        !          3282: USHORT  APIENTRY WinQueryAtomLength(HATOMTBL hAtomTbl, ATOM atom);
        !          3283: USHORT  APIENTRY WinQueryAtomName(HATOMTBL hAtomTbl, ATOM atom, PSZ pchBuffer,
        !          3284:                                   USHORT cchBufferMax);
        !          3285: 
        !          3286: #define MAKEINTATOM(a) ((PCH)MAKEULONG(a, 0xffff))
        !          3287: #endif /* !INCL_SAADEFS */
        !          3288: 
        !          3289: #endif /* INCL_WINATOM */
        !          3290: 
        !          3291: 
        !          3292: /*** Catch/Throw Interface declarations */
        !          3293: 
        !          3294: #ifdef INCL_WINCATCHTHROW
        !          3295: 
        !          3296: #ifndef INCL_SAADEFS
        !          3297: #ifdef INCL_32
        !          3298: typedef struct _CATCHBUF {  /* ctchbf */
        !          3299:     ULONG   reserved[ 7 ];
        !          3300: } CATCHBUF;
        !          3301: #else
        !          3302: typedef struct _CATCHBUF {  /* ctchbf */
        !          3303:     ULONG   reserved[ 4 ];
        !          3304: } CATCHBUF;
        !          3305: #endif
        !          3306: typedef CATCHBUF FAR *PCATCHBUF;
        !          3307: 
        !          3308: SHORT  APIENTRY    WinCatch(PCATCHBUF pcatchbuf);
        !          3309: VOID   APIENTRY    WinThrow(PCATCHBUF pcatchbuf, SHORT nThrowBack);
        !          3310: #endif /* !INCL_SAADEFS */
        !          3311: 
        !          3312: #endif /* INCL_WINCATCHTHROW */
        !          3313: 
        !          3314: 
        !          3315: 
        !          3316: #ifdef INCL_WINERRORS
        !          3317: 
        !          3318: #include <pmerr.h>
        !          3319: 
        !          3320: /* Error codes for debugging support                                      */
        !          3321: /* 0x1001 - 0x1021, 0x1034, 0x1036 - 0x1050 are reserved                  */
        !          3322: 
        !          3323: #define WINDBG_HWND_NOT_DESTROYED          0x1022
        !          3324: #define WINDBG_HPTR_NOT_DESTROYED          0x1023
        !          3325: #define WINDBG_HACCEL_NOT_DESTROYED        0x1024
        !          3326: #define WINDBG_HENUM_NOT_DESTROYED         0x1025
        !          3327: #define WINDBG_VISRGN_SEM_BUSY             0x1026
        !          3328: #define WINDBG_USER_SEM_BUSY               0x1027
        !          3329: #define WINDBG_DC_CACHE_BUSY               0x1028
        !          3330: #define WINDBG_HOOK_STILL_INSTALLED        0x1029
        !          3331: #define WINDBG_WINDOW_STILL_LOCKED         0x102a
        !          3332: #define WINDBG_UPDATEPS_ASSERTION_FAIL     0x102b
        !          3333: #define WINDBG_SENDMSG_WITHIN_USER_SEM     0x102c
        !          3334: #define WINDBG_USER_SEM_NOT_ENTERED        0x102d
        !          3335: #define WINDBG_PROC_NOT_EXPORTED           0x102e
        !          3336: #define WINDBG_BAD_SENDMSG_HWND                    0x102f
        !          3337: #define WINDBG_ABNORMAL_EXIT               0x1030
        !          3338: #define WINDBG_INTERNAL_REVISION           0x1031
        !          3339: #define WINDBG_INITSYSTEM_FAILED           0x1032
        !          3340: #define WINDBG_HATOMTBL_NOT_DESTROYED      0x1033
        !          3341: #define WINDBG_WINDOW_UNLOCK_WAIT          0x1035
        !          3342: 
        !          3343: /* Get/Set Error Information Interface declarations */
        !          3344: 
        !          3345: typedef struct _ERRINFO { /* erri */
        !          3346:     USHORT  cbFixedErrInfo;
        !          3347:     ERRORID idError;
        !          3348:     USHORT  cDetailLevel;
        !          3349:     USHORT  offaoffszMsg;
        !          3350:     USHORT  offBinaryData;
        !          3351: } ERRINFO;
        !          3352: typedef ERRINFO FAR *PERRINFO;
        !          3353: 
        !          3354: ERRORID            APIENTRY    WinGetLastError(HAB hab);
        !          3355: PERRINFO    APIENTRY   WinGetErrorInfo(HAB hab);
        !          3356: BOOL       APIENTRY    WinFreeErrorInfo(PERRINFO perrinfo);
        !          3357: 
        !          3358: #endif /* INCL_WINERRORS */
        !          3359: 
        !          3360: #ifndef INCL_SAADEFS
        !          3361: /* include SetErrorInfo */
        !          3362: #ifdef INCL_WINSEI
        !          3363:   #ifndef SEI_PMWINP
        !          3364:     #define SEI_PMWIN
        !          3365:     #include <pmsei.h>
        !          3366:   #endif /* SEI_PMWINP */
        !          3367: #endif /* INCL_WINSEI  */
        !          3368: #endif /* INCL_SAADEFS */
        !          3369: 
        !          3370: #ifndef INCL_SAADEFS
        !          3371: #ifdef INCL_WINDDE
        !          3372: 
        !          3373: /*
        !          3374:  * DDE standard system topic and item strings
        !          3375:  */
        !          3376: #define SZDDESYS_TOPIC                 "System"
        !          3377: #define SZDDESYS_ITEM_TOPICS           "Topics"
        !          3378: #define SZDDESYS_ITEM_SYSITEMS         "SysItems"
        !          3379: #define SZDDESYS_ITEM_RTNMSG           "ReturnMessage"
        !          3380: #define SZDDESYS_ITEM_STATUS           "Status"
        !          3381: #define SZDDESYS_ITEM_FORMATS          "Formats"
        !          3382: #define SZDDESYS_ITEM_SECURITY         "Security"
        !          3383: #define SZDDESYS_ITEM_ITEMFORMATS      "ItemFormats"
        !          3384: #define SZDDESYS_ITEM_HELP             "Help"
        !          3385: #define SZDDESYS_ITEM_PROTOCOLS                "Protocols"
        !          3386: #define SZDDESYS_ITEM_RESTART          "Restart"
        !          3387: 
        !          3388: /*
        !          3389:  * Dynamic Data Exchange (DDE) Structure Declarations
        !          3390:  */
        !          3391: typedef struct _CONVCONTEXT { /* cctxt */
        !          3392:     USHORT cb;         /* sizeof(CONVCONTEXT) */
        !          3393:     USHORT fsContext;
        !          3394:     USHORT idCountry;
        !          3395:     USHORT usCodepage;
        !          3396:     USHORT usLangID;
        !          3397:     USHORT usSubLangID;
        !          3398: } CONVCONTEXT;
        !          3399: typedef CONVCONTEXT FAR *PCONVCONTEXT;
        !          3400: 
        !          3401: #define DDECTXT_CASESENSITIVE   0x0001
        !          3402: 
        !          3403: typedef struct _DDEINIT { /* ddei */
        !          3404:     USHORT  cb;                /* sizeof(DDEINIT) */
        !          3405:     PSZ            pszAppName;
        !          3406:     PSZ            pszTopic;
        !          3407:     USHORT  offConvContext;
        !          3408: } DDEINIT;
        !          3409: typedef DDEINIT FAR *PDDEINIT;
        !          3410: 
        !          3411: typedef struct _DDESTRUCT { /* dde */
        !          3412:     ULONG   cbData;
        !          3413:     USHORT  fsStatus;
        !          3414:     USHORT  usFormat;
        !          3415:     USHORT  offszItemName;
        !          3416:     USHORT  offabData;
        !          3417: } DDESTRUCT;
        !          3418: typedef DDESTRUCT FAR *PDDESTRUCT;
        !          3419: 
        !          3420: /* DDE constants for wStatus field */
        !          3421: #define DDE_FACK                  0x0001
        !          3422: #define DDE_FBUSY                 0x0002
        !          3423: #define DDE_FNODATA               0x0004
        !          3424: #define DDE_FACKREQ               0x0008
        !          3425: #define DDE_FRESPONSE             0x0010
        !          3426: #define DDE_NOTPROCESSED          0x0020
        !          3427: #define DDE_FRESERVED             0x00C0
        !          3428: #define DDE_FAPPSTATUS            0xFF00
        !          3429: 
        !          3430: /* old DDE public formats - new ones are CF_ constants */
        !          3431: 
        !          3432: #define DDEFMT_TEXT               0x0001
        !          3433: 
        !          3434: /* Dynamic Data Exchange (DDE) Routines */
        !          3435: 
        !          3436: BOOL   APIENTRY WinDdeInitiate(HWND hwndClient, PSZ pszAppName,
        !          3437:                                PSZ pszTopicName);
        !          3438: BOOL APIENTRY WinDdeInitiate2(HWND hwndClient, PSZ pszAppName,
        !          3439:                PSZ pszTopicName, PCONVCONTEXT pCC);
        !          3440: 
        !          3441: MRESULT APIENTRY WinDdeRespond(HWND hwndClient, HWND hwndServer,
        !          3442:                            PSZ pszAppName, PSZ pszTopicName);
        !          3443: BOOL APIENTRY WinDdeRespond2(HWND hwndClient, HWND hwndServer, PSZ pszAppName,
        !          3444:                PSZ pszTopicName, PCONVCONTEXT pCC);
        !          3445: 
        !          3446: BOOL   APIENTRY WinDdePostMsg(HWND hwndTo, HWND hwndFrom, USHORT wm,
        !          3447:                            PDDESTRUCT pddest, BOOL fRetry);
        !          3448: BOOL   APIENTRY WinDdePostMsg2(HWND hwndTo, HWND hwndFrom, USHORT wm,
        !          3449:                        PDDESTRUCT pddest, ULONG flOptions);
        !          3450: 
        !          3451: #define DDEPM_RETRY      0x00000001L
        !          3452: #define DDEPM_NOFREE  0x00000002L
        !          3453: 
        !          3454: /* Dynamic Data Exchange (DDE) Messages */
        !          3455: 
        !          3456: #define WM_DDE_FIRST              0x00A0
        !          3457: #define WM_DDE_INITIATE                   0x00A0
        !          3458: #define WM_DDE_REQUEST            0x00A1
        !          3459: #define WM_DDE_ACK                0x00A2
        !          3460: #define WM_DDE_DATA               0x00A3
        !          3461: #define WM_DDE_ADVISE             0x00A4
        !          3462: #define WM_DDE_UNADVISE                   0x00A5
        !          3463: #define WM_DDE_POKE               0x00A6
        !          3464: #define WM_DDE_EXECUTE            0x00A7
        !          3465: #define WM_DDE_TERMINATE          0x00A8
        !          3466: #define WM_DDE_INITIATEACK        0x00A9
        !          3467: #define WM_DDE_LAST               0x00AF
        !          3468: 
        !          3469: /* DDE helper macros */
        !          3470: 
        !          3471: #define DDES_PSZITEMNAME(pddes) \
        !          3472:        (((PSZ)pddes) + ((PDDESTRUCT)pddes)->offszItemName)
        !          3473: 
        !          3474: #define DDES_PABDATA(pddes)      \
        !          3475:        (((PBYTE)pddes) + ((PDDESTRUCT)pddes)->offabData)
        !          3476: 
        !          3477: #define DDEI_PCONVCONTEXT(pddei)       \
        !          3478:        ((PCONVCONTEXT)((PBYTE)pddei + pddei->offConvContext))
        !          3479: 
        !          3480: #define SELTOPDDES(sel)                    ((PDDESTRUCT)MAKEP(sel, 0))
        !          3481: #define PDDESTOSEL(pddes)          (SELECTOROF(pddes))
        !          3482: #define PDDEITOSEL(pddei)          (SELECTOROF(pddei))
        !          3483: 
        !          3484: #endif /* INCL_WINDDE */
        !          3485: #endif /* !INCL_SAADEFS */
        !          3486: 
        !          3487: #ifdef INCL_WINWINDOWMGR
        !          3488: #define WM_QUERYCONVERTPOS        0x00b0
        !          3489: 
        !          3490: /* Return values for WM_QUERYCONVERTPOS */
        !          3491: #define QCP_CONVERT               0x0001
        !          3492: #define QCP_NOCONVERT             0x0000
        !          3493: 
        !          3494: #endif /* INCL_WINWINDOWMGR */
        !          3495: 
        !          3496: 
        !          3497: #ifdef INCL_WINHELP
        !          3498:   #include <pmhelp.h>
        !          3499: #endif /* INCL_WINHELP */
        !          3500: 
        !          3501: /*Load/Delete Library/Procedure */
        !          3502: 
        !          3503: typedef HMODULE HLIB;
        !          3504: typedef PHMODULE PHLIB;
        !          3505: 
        !          3506: #ifdef INCL_WINLOAD
        !          3507: BOOL   APIENTRY WinDeleteProcedure(HAB hab, PFNWP wndproc);
        !          3508: BOOL   APIENTRY WinDeleteLibrary(HAB hab, HLIB libhandle);
        !          3509: PFNWP  APIENTRY WinLoadProcedure(HAB hab, HLIB libhandle, PSZ procname);
        !          3510: HLIB   APIENTRY WinLoadLibrary(HAB hab, PSZ libname);
        !          3511: #endif /* INCL_WINLOAD */
        !          3512: 
        !          3513: 
        !          3514: #ifdef INCL_REMAPDLL
        !          3515: #define STR_DLLNAME "keyremap"
        !          3516: #endif /*INCL_REMAPDLL*/
        !          3517: 
        !          3518: #ifdef INCL_NLS
        !          3519: 
        !          3520: #define WM_DBCSFIRST              0x00b0
        !          3521: #define WM_DBCSLAST               0x00cf
        !          3522: #define WC_APPSTAT          ((PSZ)0xffff0010L)
        !          3523: #define WC_KBDSTAT          ((PSZ)0xffff0011L)
        !          3524: #define WC_PECIC            ((PSZ)0xffff0012L)
        !          3525: #define WC_DBE_KKPOPUP      ((PSZ)0xffff0013L)
        !          3526: 
        !          3527: #include <os2nls.h>
        !          3528: #endif /* INCL_NLS */
        !          3529: 
        !          3530: #ifdef INCL_WINDESKTOP
        !          3531: 
        !          3532: /*** Desktop API definitions ***/
        !          3533: 
        !          3534: typedef struct _DESKTOP {      /* dsk */
        !          3535:     ULONG    cbSize;
        !          3536:     HBITMAP  hbm;
        !          3537:     SHORT    x;
        !          3538:     SHORT    y;
        !          3539:     ULONG    fl;
        !          3540:     CHAR     szFile[260];   /* LATER: CCHMAXPATH */
        !          3541: } DESKTOP;
        !          3542: typedef DESKTOP FAR *PDESKTOP; /* pdsk */
        !          3543: 
        !          3544: HBITMAP APIENTRY WinSetDesktopBkgnd(HWND hwndDesktop, PDESKTOP pdskNew);
        !          3545: BOOL   APIENTRY WinQueryDesktopBkgnd(HWND hwndDesktop, PDESKTOP pdsk);
        !          3546: 
        !          3547: #define SDT_DESTROY        0x0001L
        !          3548: #define SDT_NOBKGND        0x0002L
        !          3549: #define SDT_TILE           0x0004L
        !          3550: #define SDT_SCALE          0x0008L
        !          3551: #define SDT_PATTERN        0x0010L
        !          3552: #define SDT_CENTER         0x0020L
        !          3553: #define SDT_RETAIN         0x0040L
        !          3554: #define SDT_LOADFILE   0x0080L
        !          3555: 
        !          3556: #endif /* INCL_WINDESKTOP */
        !          3557: 
        !          3558: #ifdef INCL_WINPALETTE
        !          3559: 
        !          3560: /*** Palette Manager API definitions ***/
        !          3561: 
        !          3562: LONG APIENTRY WinRealizePalette(HWND hwnd, HPS hps);
        !          3563: 
        !          3564: #endif /* INCL_WINPALETTE */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.