|
|
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.