source: trunk/src/user32/oslibwin.h@ 10013

Last change on this file since 10013 was 10013, checked in by sandervl, 22 years ago

Tool windows don't have minimize or maximize buttons; always draw tool windows in win32 style as they are not compatible with PM frame controls

File size: 14.9 KB
Line 
1/* $Id: oslibwin.h,v 1.75 2003-04-11 15:22:33 sandervl Exp $ */
2/*
3 * Window API wrappers for OS/2
4 *
5 *
6 * Copyright 1999 Sander van Leeuwen (sandervl@xs4all.nl)
7 * Copyright 1999 Daniela Engert (dani@ngrt.de)
8 *
9 *
10 * Project Odin Software License can be found in LICENSE.TXT
11 *
12 */
13#ifndef __OSLIBWIN_H__
14#define __OSLIBWIN_H__
15
16#ifdef __cplusplus
17#include <oslibgdi.h>
18
19#ifndef WIN_INCLUDED
20typedef struct _SWP /* swp */
21{
22 ULONG fl;
23 LONG cy;
24 LONG cx;
25 LONG y;
26 LONG x;
27 HWND hwndInsertBehind;
28 HWND hwnd;
29 ULONG ulReserved1;
30 ULONG ulReserved2;
31} SWP, *PSWP;
32typedef POINTL *PPOINTL;
33#endif
34
35//SvL: Must be the same as HWND_DESKTOP/OBJECT in pmwin.h!
36#define OSLIB_HWND_DESKTOP 1
37#define OSLIB_HWND_OBJECT 2
38
39BOOL OSLibWinSetParent(HWND hwnd, HWND hwndParent, ULONG fRedraw = TRUE);
40BOOL OSLibWinSetOwner(HWND hwnd, HWND hwndOwner);
41
42
43HWND OSLibWinCreateWindow(HWND hwndParent,ULONG dwWinStyle, ULONG dwOSFrameStyle,
44 char *pszName, HWND Owner, ULONG fBottom,
45 ULONG id, BOOL fTaskList,BOOL fShellPosition,
46 DWORD classStyle, HWND *hwndFrame);
47
48BOOL OSLibWinConvertStyle(ULONG dwStyle, ULONG dwExStyle, ULONG *OSWinStyle,
49 ULONG *OSFrameStyle);
50void OSLibSetWindowStyle(HWND hwndFrame, HWND hwndClient, ULONG dwStyle,
51 ULONG dwExStyle, ULONG dwOldWindowsStyle);
52
53DWORD OSLibQueryWindowStyle(HWND hwnd);
54
55BOOL OSLibWinPositionFrameControls(HWND hwndFrame, RECTLOS2 *pRect, DWORD dwStyle,
56 DWORD dwExStyle, HICON hSysMenuIcon,
57 BOOL drawCloseButton, BOOL fClassIcon);
58BOOL OSLibChangeCloseButtonState(HWND hwndFrame, BOOL State);
59
60#define OSLIB_QWL_USER -4
61
62BOOL OSLibWinSetWindowULong(HWND hwnd, ULONG offset, ULONG value);
63ULONG OSLibWinGetWindowULong(HWND hwnd, ULONG offset);
64BOOL OSLibSetWindowID(HWND hwnd, ULONG value);
65
66#define WAOS_WARNING 0
67#define WAOS_NOTE 1
68#define WAOS_ERROR 2
69#define WAOS_CWINALARMS 13 /* count of valid alarms 53304*/
70
71BOOL OSLibWinAlarm(HWND hwndDeskTop,ULONG flStyle);
72ULONG OSLibDosBeep(ULONG freg,ULONG dur);
73HWND OSLibWinQueryFocus(HWND hwndDeskTop);
74
75#define OSLIB_FID_SYSMENU 0x8002
76#define OSLIB_FID_TITLEBAR 0x8003
77#define OSLIB_FID_MINMAX 0x8004
78#define OSLIB_FID_MENU 0x8005
79#define OSLIB_FID_VERTSCROLL 0x8006
80#define OSLIB_FID_HORZSCROLL 0x8007
81#define OSLIB_FID_CLIENT 0x8008
82
83HWND OSLibWinWindowFromID(HWND hwndParent,ULONG id);
84BOOL OSLibWinSetFocus(HWND hwndDeskTop,HWND hwndNewFocus, BOOL activate);
85
86extern ULONG ScreenHeight, ScreenWidth;
87inline ULONG OSLibQueryScreenHeight(void) { return (ScreenHeight); }
88inline ULONG OSLibQueryScreenWidth(void) { return (ScreenWidth); }
89
90//reserved deleted
91
92#define SVOS_SWAPBUTTON 0
93#define SVOS_DBLCLKTIME 1
94#define SVOS_CXDBLCLK 2
95#define SVOS_CYDBLCLK 3
96#define SVOS_CXSIZEBORDER 4
97#define SVOS_CYSIZEBORDER 5
98#define SVOS_ALARM 6
99#define SVOS_CURSORRATE 9
100#define SVOS_FIRSTSCROLLRATE 10
101#define SVOS_SCROLLRATE 11
102#define SVOS_NUMBEREDLISTS 12
103#define SVOS_WARNINGFREQ 13
104#define SVOS_NOTEFREQ 14
105#define SVOS_ERRORFREQ 15
106#define SVOS_WARNINGDURATION 16
107#define SVOS_NOTEDURATION 17
108#define SVOS_ERRORDURATION 18
109#define SVOS_CXSCREEN 20
110#define SVOS_CYSCREEN 21
111#define SVOS_CXVSCROLL 22
112#define SVOS_CYHSCROLL 23
113#define SVOS_CYVSCROLLARROW 24
114#define SVOS_CXHSCROLLARROW 25
115#define SVOS_CXBORDER 26
116#define SVOS_CYBORDER 27
117#define SVOS_CXDLGFRAME 28
118#define SVOS_CYDLGFRAME 29
119#define SVOS_CYTITLEBAR 30
120#define SVOS_CYVSLIDER 31
121#define SVOS_CXHSLIDER 32
122#define SVOS_CXMINMAXBUTTON 33
123#define SVOS_CYMINMAXBUTTON 34
124#define SVOS_CYMENU 35
125#define SVOS_CXFULLSCREEN 36
126#define SVOS_CYFULLSCREEN 37
127#define SVOS_CXICON 38
128#define SVOS_CYICON 39
129#define SVOS_CXPOINTER 40
130#define SVOS_CYPOINTER 41
131#define SVOS_DEBUG 42
132#define SVOS_CMOUSEBUTTONS 43
133#define SVOS_CPOINTERBUTTONS 43
134#define SVOS_POINTERLEVEL 44
135#define SVOS_CURSORLEVEL 45
136#define SVOS_TRACKRECTLEVEL 46
137#define SVOS_CTIMERS 47
138#define SVOS_MOUSEPRESENT 48
139#define SVOS_CXBYTEALIGN 49
140#define SVOS_CXALIGN 49
141#define SVOS_CYBYTEALIGN 50
142#define SVOS_CYALIGN 50
143#define SVOS_DESKTOPWORKAREAYTOP 51
144#define SVOS_DESKTOPWORKAREAYBOTTOM 52
145#define SVOS_DESKTOPWORKAREAXRIGHT 53
146#define SVOS_DESKTOPWORKAREAXLEFT 54
147
148/* The following value enables any greater value to be set by WinSetSysValue. */
149/* This is to enable the setting of SV_EXTRAKEYBEEP by applications. */
150
151#define SVOS_NOTRESERVED 56
152#define SVOS_EXTRAKEYBEEP 57
153
154/* The following system value controls whether PM controls the keyboard */
155/* lights for light key keystrokes (else applications will) */
156#define SVOS_SETLIGHTS 58
157#define SVOS_INSERTMODE 59
158
159#define SVOS_MENUROLLDOWNDELAY 64
160#define SVOS_MENUROLLUPDELAY 65
161#define SVOS_ALTMNEMONIC 66
162#define SVOS_TASKLISTMOUSEACCESS 67
163#define SVOS_CXICONTEXTWIDTH 68
164#define SVOS_CICONTEXTLINES 69
165#define SVOS_CHORDTIME 70
166#define SVOS_CXCHORD 71
167#define SVOS_CYCHORD 72
168#define SVOS_CXMOTIONSTART 73
169#define SVOS_CYMOTIONSTART 74
170#define SVOS_BEGINDRAG 75
171#define SVOS_ENDDRAG 76
172#define SVOS_SINGLESELECT 77
173#define SVOS_OPEN 78
174#define SVOS_CONTEXTMENU 79
175#define SVOS_CONTEXTHELP 80
176#define SVOS_TEXTEDIT 81
177#define SVOS_BEGINSELECT 82
178#define SVOS_ENDSELECT 83
179#define SVOS_BEGINDRAGKB 84
180#define SVOS_ENDDRAGKB 85
181#define SVOS_SELECTKB 86
182#define SVOS_OPENKB 87
183#define SVOS_CONTEXTMENUKB 88
184#define SVOS_CONTEXTHELPKB 89
185#define SVOS_TEXTEDITKB 90
186#define SVOS_BEGINSELECTKB 91
187#define SVOS_ENDSELECTKB 92
188#define SVOS_ANIMATION 93
189#define SVOS_ANIMATIONSPEED 94
190#define SVOS_MONOICONS 95
191#define SVOS_KBDALTERED 96
192#define SVOS_PRINTSCREEN 97
193#define SVOS_LOCKSTARTINPUT 98
194#define SVOS_DYNAMICDRAG 99
195#define SVOS_ALTTABWINDOW 100
196#define SVOS_VIOMOUSEACTIONS 101
197#define SVOS_ASYNCFOCUSCHANGE 102
198#define SVOS_AFCSENSITIVITY 103
199#define SVOS_CLOSEVIOWITHOUTCONFIRM 104
200#define SVOS_CXCURSOR 106
201#define SVOS_CYCURSOR 107
202#define SVOS_CSYSVALUES 108
203
204LONG OSLibWinQuerySysValue(LONG iSysValue);
205BOOL OSLibWinSetSysValue(LONG iSysValue, ULONG val);
206ULONG OSLibWinQueryDlgItemText(HWND hwndDlg,ULONG idItem,LONG cchBufferMax,char* pchBuffer);
207BOOL OSLibWinSetDlgItemText(HWND hwndDlg,ULONG idItem,char* pszText);
208BOOL OSLibWinQueryPointerPos(PPOINT pptlPoint); //pptlPoint == POINTL pointer!
209BOOL OSLibWinGetMinPosition(HWND hwndDlg,PSWP swp, PPOINTL pointl);
210BOOL OSLibWinSetPointerPos(int x, int y);
211
212#define SWPOS_SIZE 0x0001
213#define SWPOS_MOVE 0x0002
214#define SWPOS_ZORDER 0x0004
215#define SWPOS_SHOW 0x0008
216#define SWPOS_HIDE 0x0010
217#define SWPOS_NOREDRAW 0x0020
218#define SWPOS_NOADJUST 0x0040
219#define SWPOS_ACTIVATE 0x0080
220#define SWPOS_DEACTIVATE 0x0100
221#define SWPOS_EXTSTATECHANGE 0x0200
222#define SWPOS_MINIMIZE 0x0400
223#define SWPOS_MAXIMIZE 0x0800
224#define SWPOS_RESTORE 0x1000
225#define SWPOS_FOCUSACTIVATE 0x2000
226#define SWPOS_FOCUSDEACTIVATE 0x4000
227#define SWPOS_NOAUTOCLOSE 0x8000 /* Valid in PROGDETAILS struct only */
228
229#define HWNDOS_TOP (HWND)3
230#define HWNDOS_BOTTOM (HWND)4
231
232BOOL OSLibWinSetMultWindowPos(struct _SWP *pswp, ULONG num);
233BOOL OSLibWinShowWindow(HWND hwnd, ULONG fl);
234
235BOOL OSLibWinDestroyWindow(HWND hwnd);
236
237BOOL OSLibWinIsIconic(HWND hwnd);
238BOOL OSLibWinIsChild (HWND hwnd, HWND hwndOf);
239BOOL OSLibWinSetActiveWindow(HWND hwnd);
240BOOL OSLibWinSetFocus(HWND hwnd);
241BOOL OSLibWinEnableWindow(HWND hwnd, BOOL fEnable);
242BOOL OSLibWinIsWindowEnabled(HWND hwnd);
243BOOL OSLibWinIsWindowVisible(HWND hwnd);
244HWND OSLibWinQueryActiveWindow();
245
246
247#define RELATIVE_TO_WINDOW 0
248#define RELATIVE_TO_SCREEN 1
249BOOL OSLibWinQueryWindowRect(Win32BaseWindow *window, PRECT pRect, int RelativeTo = RELATIVE_TO_WINDOW);
250BOOL OSLibQueryWindowRectAbsolute (HWND hwndOS2, PRECT pRect);
251ULONG OSLibGetWindowHeight(HWND hwnd); //for point transformation
252
253BOOL OSLibWinQueryWindowClientRect(HWND hwnd, PRECT pRect);
254
255BOOL OSLibWinCalcFrameRect(HWND hwnd, RECT *pRect, BOOL fClient);
256BOOL OSLibGetMinMaxInfo(HWND hwndFrame, MINMAXINFO *pMinMax);
257
258#define QWOS_NEXT 0
259#define QWOS_PREV 1
260#define QWOS_TOP 2
261#define QWOS_BOTTOM 3
262#define QWOS_OWNER 4
263#define QWOS_PARENT 5
264#define QWOS_NEXTTOP 6
265#define QWOS_PREVTOP 7
266#define QWOS_FRAMEOWNER 8
267
268HWND OSLibWinQueryWindow(HWND hwnd, ULONG lCode);
269
270LONG OSLibWinQueryWindowTextLength(HWND hwnd);
271LONG OSLibWinQueryWindowText(HWND hwnd, LONG length, LPSTR lpsz);
272BOOL OSLibWinSetWindowText(HWND hwnd, LPSTR lpsz);
273BOOL OSLibWinSetTitleBarText(HWND hwnd, LPSTR lpsz);
274BOOL OSLibWinFlashWindow(HWND hwnd, BOOL fFlash);
275HWND OSLibWinWindowFromPoint(HWND hwnd, PVOID ppoint);
276BOOL OSLibWinMinimizeWindow(HWND hwnd);
277BOOL OSLibWinRestoreWindow(HWND hwnd);
278
279BOOL OSLibWinGetBorderSize(HWND hwnd, OSLIBPOINT *pointl);
280BOOL OSLibWinSetIcon(HWND hwnd, HANDLE hIcon);
281
282BOOL OSLibWinQueryWindowPos (HWND hwnd, PSWP pswp);
283void OSLibMapSWPtoWINDOWPOS(PSWP pswp, PWINDOWPOS pwpos, PSWP pswpOld,
284 int parentHeight, HWND hwnd);
285void OSLibMapWINDOWPOStoSWP(struct tagWINDOWPOS *pwpos, PSWP pswp, PSWP pswpOld,
286 int parentHeight, HWND hFrame);
287
288void OSLibWinSetClientPos(HWND hwnd, int x, int y, int cx, int cy, int parentHeight);
289
290HWND OSLibWinBeginEnumWindows(HWND hwnd);
291HWND OSLibWinGetNextWindow(HWND hwndEnum);
292HWND OSLibWinQueryClientWindow(HWND hwndFrame);
293BOOL OSLibWinEndEnumWindows(HWND hwndEnum);
294BOOL OSLibWinQueryWindowProcess(HWND hwnd, ULONG *pid, ULONG *tid);
295BOOL OSLibWinMapWindowPoints (HWND hwndFrom, HWND hwndTo, OSLIBPOINT *pptl, ULONG num);
296
297HWND OSLibWinObjectWindowFromID(HWND hwndOwner, ULONG ID);
298
299HWND OSLibWinQueryObjectWindow(VOID);
300
301PVOID OSLibWinSubclassWindow(HWND hwnd,PVOID newWndProc);
302
303BOOL OSLibSetWindowRestoreRect(HWND hwnd, PRECT pRect);
304BOOL OSLibSetWindowMinPos(HWND hwnd, ULONG x, ULONG y);
305
306#define HTOS_NORMAL 0
307#define HTOS_TRANSPARENT (-1)
308#define HTOS_DISCARD (-2)
309#define HTOS_ERROR (-3)
310
311BOOL OSLibWinEnableWindowUpdate(HWND hwndFrame, HWND hwndClient ,BOOL fEnable);
312ULONG OSLibWinGetLastError();
313
314void OSLibWinShowTaskList(HWND hwndFrame);
315
316void OSLibWinSetVisibleRegionNotify(HWND hwnd, BOOL fNotify);
317
318HWND OSLibWinQueryCapture();
319BOOL OSLibWinSetCapture(HWND hwnd);
320
321BOOL OSLibWinRemoveFromTasklist(HANDLE hTaskList);
322HANDLE OSLibWinAddToTaskList(HWND hwndFrame, char *title, BOOL fVisible);
323BOOL OSLibWinChangeTaskList(HANDLE hTaskList, HWND hwndFrame, char *title, BOOL fVisible);
324
325inline ULONG GetScreenHeight()
326{
327 return ScreenHeight;
328}
329
330inline ULONG GetScreenWidth()
331{
332 return ScreenWidth;
333}
334
335ULONG OSLibGetScreenHeight();
336ULONG OSLibGetScreenWidth();
337
338BOOL OSLibWinLockWindowUpdate(HWND hwnd);
339BOOL OSLibWinGetMaxPosition(HWND hwndOS2, RECT *rect);
340
341BOOL OSLibWinShowPointer(BOOL fShow);
342HWND OSLibWinCreateInvisibleScroller(HWND parentHWND, int direction);
343
344ULONG OSLibWinQuerySysColor(int index);
345
346void OSLibWinLockVisibleRegions(BOOL fLock);
347
348#endif
349
350 #define PMSYSCLR_SHADOWHILITEBGND (-50L)
351 #define PMSYSCLR_SHADOWHILITEFGND (-49L)
352 #define PMSYSCLR_SHADOWTEXT (-48L)
353 #define PMSYSCLR_ENTRYFIELD (-47L)
354 #define PMSYSCLR_MENUDISABLEDTEXT (-46L)
355 #define PMSYSCLR_MENUHILITE (-45L)
356 #define PMSYSCLR_MENUHILITEBGND (-44L)
357 #define PMSYSCLR_PAGEBACKGROUND (-43L)
358 #define PMSYSCLR_FIELDBACKGROUND (-42L)
359 #define PMSYSCLR_BUTTONLIGHT (-41L)
360 #define PMSYSCLR_BUTTONMIDDLE (-40L)
361 #define PMSYSCLR_BUTTONDARK (-39L)
362 #define PMSYSCLR_BUTTONDEFAULT (-38L)
363 #define PMSYSCLR_TITLEBOTTOM (-37L)
364 #define PMSYSCLR_SHADOW (-36L)
365 #define PMSYSCLR_ICONTEXT (-35L)
366 #define PMSYSCLR_DIALOGBACKGROUND (-34L)
367 #define PMSYSCLR_HILITEFOREGROUND (-33L)
368 #define PMSYSCLR_HILITEBACKGROUND (-32L)
369 #define PMSYSCLR_INACTIVETITLETEXTBGND (-31L)
370 #define PMSYSCLR_ACTIVETITLETEXTBGND (-30L)
371 #define PMSYSCLR_INACTIVETITLETEXT (-29L)
372 #define PMSYSCLR_ACTIVETITLETEXT (-28L)
373 #define PMSYSCLR_OUTPUTTEXT (-27L)
374 #define PMSYSCLR_WINDOWSTATICTEXT (-26L)
375 #define PMSYSCLR_SCROLLBAR (-25L)
376 #define PMSYSCLR_BACKGROUND (-24L)
377 #define PMSYSCLR_ACTIVETITLE (-23L)
378 #define PMSYSCLR_INACTIVETITLE (-22L)
379 #define PMSYSCLR_MENU (-21L)
380 #define PMSYSCLR_WINDOW (-20L)
381 #define PMSYSCLR_WINDOWFRAME (-19L)
382 #define PMSYSCLR_MENUTEXT (-18L)
383 #define PMSYSCLR_WINDOWTEXT (-17L)
384 #define PMSYSCLR_TITLETEXT (-16L)
385 #define PMSYSCLR_ACTIVEBORDER (-15L)
386 #define PMSYSCLR_INACTIVEBORDER (-14L)
387 #define PMSYSCLR_APPWORKSPACE (-13L)
388 #define PMSYSCLR_HELPBACKGROUND (-12L)
389 #define PMSYSCLR_HELPTEXT (-11L)
390 #define PMSYSCLR_HELPHILITE (-10L)
391
392 #define PMSYSCLR_CSYSCOLORS 41L
393 #define PMSYSCLR_BASE 50L
394
395#define CONVERT_RGB(colorRef) ( ((colorRef) & 0x0000FF00 ) | \
396 (((colorRef) & 0x00FF0000)>>16) | \
397 (((colorRef) & 0x000000FF)<<16) )
398
399
400#endif //__OSLIBWIN_H__
Note: See TracBrowser for help on using the repository browser.