source: trunk/src/user32/user32.cpp@ 3250

Last change on this file since 3250 was 3250, checked in by cbratschi, 25 years ago

* empty log message *

File size: 102.3 KB
Line 
1/* $Id: user32.cpp,v 1.76 2000-03-27 15:06:30 cbratschi Exp $ */
2
3/*
4 * Win32 misc user32 API functions for OS/2
5 *
6 * Copyright 1998 Sander van Leeuwen
7 * Copyright 1998 Patrick Haller
8 * Copyright 1998 Peter Fitzsimmons
9 * Copyright 1999 Christoph Bratschi
10 * Copyright 1999 Daniela Engert (dani@ngrt.de)
11 *
12 *
13 * Project Odin Software License can be found in LICENSE.TXT
14 *
15 */
16/*****************************************************************************
17 * Name : USER32.CPP
18 * Purpose : This module maps all Win32 functions contained in USER32.DLL
19 * to their OS/2-specific counterparts as far as possible.
20 *****************************************************************************/
21
22//Attention: many functions belong to other subsystems, move them to their
23// right place!
24
25#include <odin.h>
26#include <odinwrap.h>
27#include <os2sel.h>
28
29#include <os2win.h>
30#include <misc.h>
31
32#include "user32.h"
33#include <winicon.h>
34#include "syscolor.h"
35#include "pmwindow.h"
36#include "oslibgdi.h"
37
38#include <wchar.h>
39#include <stdlib.h>
40#include <string.h>
41#include <oslibwin.h>
42#include <win32wnd.h>
43#include <winuser.h>
44
45#define DBG_LOCALLOG DBG_user32
46#include "dbglocal.h"
47
48//undocumented stuff
49// WIN32API CalcChildScroll
50// WIN32API CascadeChildWindows
51// WIN32API ClientThreadConnect
52// WIN32API DragObject
53// WIN32API DrawFrame
54// WIN32API EditWndProc
55// WIN32API EndTask
56// WIN32API GetInputDesktop
57// WIN32API GetNextQueueWindow
58// WIN32API GetShellWindow
59// WIN32API InitSharedTable
60// WIN32API InitTask
61// WIN32API IsHungThread
62// WIN32API LockWindowStation
63// WIN32API ModifyAccess
64// WIN32API PlaySoundEvent
65// WIN32API RegisterLogonProcess
66// WIN32API RegisterNetworkCapabilities
67// WIN32API RegisterSystemThread
68// WIN32API SetDeskWallpaper
69// WIN32API SetDesktopBitmap
70// WIN32API SetInternalWindowPos
71// WIN32API SetLogonNotifyWindow
72// WIN32API SetShellWindow
73// WIN32API SetSysColorsTemp
74// WIN32API SetWindowFullScreenState
75// WIN32API SwitchToThisWindow
76// WIN32API SysErrorBox
77// WIN32API TileChildWindows
78// WIN32API UnlockWindowStation
79// WIN32API UserClientDllInitialize
80// WIN32API UserSignalProc
81// WIN32API WinOldAppHackoMatic
82// WIN32API WNDPROC_CALLBACK
83// WIN32API YieldTask
84
85ODINDEBUGCHANNEL(USER32-USER32)
86
87
88/* Coordinate Transformation */
89
90/* Rectangle Functions - parts from wine/windows/rect.c */
91
92BOOL WIN32API CopyRect( PRECT lprcDst, const RECT * lprcSrc)
93{
94 dprintf2(("USER32: CopyRect\n"));
95 if (!lprcDst || !lprcSrc) {
96 SetLastError(ERROR_INVALID_PARAMETER);
97 return FALSE;
98 }
99
100 memcpy(lprcDst,lprcSrc,sizeof(RECT));
101
102 return TRUE;
103}
104//******************************************************************************
105//******************************************************************************
106BOOL WIN32API EqualRect( const RECT *lprc1, const RECT *lprc2)
107{
108 dprintf2(("USER32: EqualRect\n"));
109 if (!lprc1 || !lprc2)
110 {
111 SetLastError(ERROR_INVALID_PARAMETER);
112 return FALSE;
113 }
114
115 return (lprc1->left == lprc2->left &&
116 lprc1->right == lprc2->right &&
117 lprc1->top == lprc2->top &&
118 lprc1->bottom == lprc2->bottom);
119}
120//******************************************************************************
121//******************************************************************************
122BOOL WIN32API InflateRect( PRECT lprc, int dx, int dy)
123{
124 dprintf2(("USER32: InflateRect\n"));
125 if (!lprc)
126 {
127 SetLastError(ERROR_INVALID_PARAMETER);
128 return FALSE;
129 }
130
131 lprc->left -= dx;
132 lprc->right += dx;
133 lprc->top -= dy;
134 lprc->bottom += dy;
135
136 return TRUE;
137}
138//******************************************************************************
139//******************************************************************************
140BOOL WIN32API IntersectRect( PRECT lprcDst, const RECT * lprcSrc1, const RECT * lprcSrc2)
141{
142 dprintf2(("USER32: IntersectRect\n"));
143 if (!lprcSrc1 || !lprcSrc2)
144 {
145 SetLastError(ERROR_INVALID_PARAMETER);
146 return FALSE;
147 }
148
149 if (IsRectEmpty(lprcSrc1) || IsRectEmpty(lprcSrc2) ||
150 (lprcSrc1->left >= lprcSrc2->right) || (lprcSrc2->left >= lprcSrc1->right) ||
151 (lprcSrc1->top >= lprcSrc2->bottom) || (lprcSrc2->top >= lprcSrc1->bottom))
152 {
153 SetLastError(ERROR_INVALID_PARAMETER);
154 if (lprcDst) SetRectEmpty(lprcDst);
155 return FALSE;
156 }
157 if (lprcDst)
158 {
159 lprcDst->left = MAX(lprcSrc1->left,lprcSrc2->left);
160 lprcDst->right = MIN(lprcSrc1->right,lprcSrc2->right);
161 lprcDst->top = MAX(lprcSrc1->top,lprcSrc2->top);
162 lprcDst->bottom = MIN(lprcSrc1->bottom,lprcSrc2->bottom);
163 }
164
165 return TRUE;
166}
167//******************************************************************************
168//******************************************************************************
169BOOL WIN32API IsRectEmpty( const RECT * lprc)
170{
171 if (!lprc)
172 {
173 SetLastError(ERROR_INVALID_PARAMETER);
174 return FALSE;
175 }
176
177 return (lprc->left == lprc->right || lprc->top == lprc->bottom);
178}
179//******************************************************************************
180//******************************************************************************
181BOOL WIN32API OffsetRect( PRECT lprc, int x, int y)
182{
183 dprintf2(("USER32: OffsetRect\n"));
184 if (!lprc)
185 {
186 SetLastError(ERROR_INVALID_PARAMETER);
187 return FALSE;
188 }
189
190 lprc->left += x;
191 lprc->right += x;
192 lprc->top += y;
193 lprc->bottom += y;
194
195 return TRUE;
196}
197//******************************************************************************
198//******************************************************************************
199BOOL WIN32API PtInRect( const RECT *lprc, POINT pt)
200{
201 dprintf2(("USER32: PtInRect\n"));
202 if (!lprc)
203 {
204 SetLastError(ERROR_INVALID_PARAMETER);
205 return FALSE;
206 }
207
208 return (pt.x >= lprc->left &&
209 pt.x < lprc->right &&
210 pt.y >= lprc->top &&
211 pt.y < lprc->bottom);
212}
213//******************************************************************************
214//******************************************************************************
215BOOL WIN32API SetRect( PRECT lprc, int nLeft, int nTop, int nRight, int nBottom)
216{
217 if (!lprc)
218 {
219 SetLastError(ERROR_INVALID_PARAMETER);
220 return FALSE;
221 }
222
223 lprc->left = nLeft;
224 lprc->top = nTop;
225 lprc->right = nRight;
226 lprc->bottom = nBottom;
227
228 return TRUE;
229}
230//******************************************************************************
231//******************************************************************************
232BOOL WIN32API SetRectEmpty( PRECT lprc)
233{
234 if (!lprc)
235 {
236 SetLastError(ERROR_INVALID_PARAMETER);
237 return FALSE;
238 }
239
240 lprc->left = lprc->right = lprc->top = lprc->bottom = 0;
241
242 return TRUE;
243}
244//******************************************************************************
245//******************************************************************************
246BOOL WIN32API SubtractRect( PRECT lprcDest, const RECT * lprcSrc1, const RECT * lprcSrc2)
247{
248 dprintf2(("USER32: SubtractRect"));
249 RECT tmp;
250
251 if (!lprcDest || !lprcSrc1 || !lprcSrc2)
252 {
253 SetLastError(ERROR_INVALID_PARAMETER);
254 return FALSE;
255 }
256
257 if (IsRectEmpty(lprcSrc1))
258 {
259 SetLastError(ERROR_INVALID_PARAMETER);
260 SetRectEmpty(lprcDest);
261 return FALSE;
262 }
263 *lprcDest = *lprcSrc1;
264 if (IntersectRect(&tmp,lprcSrc1,lprcSrc2))
265 {
266 if (EqualRect(&tmp,lprcDest))
267 {
268 SetRectEmpty(lprcDest);
269 return FALSE;
270 }
271 if ((tmp.top == lprcDest->top) && (tmp.bottom == lprcDest->bottom))
272 {
273 if (tmp.left == lprcDest->left) lprcDest->left = tmp.right;
274 else if (tmp.right == lprcDest->right) lprcDest->right = tmp.left;
275 }
276 else if ((tmp.left == lprcDest->left) && (tmp.right == lprcDest->right))
277 {
278 if (tmp.top == lprcDest->top) lprcDest->top = tmp.bottom;
279 else if (tmp.bottom == lprcDest->bottom) lprcDest->bottom = tmp.top;
280 }
281 }
282
283 return TRUE;
284}
285//******************************************************************************
286//******************************************************************************
287BOOL WIN32API UnionRect( PRECT lprcDst, const RECT *lprcSrc1, const RECT *lprcSrc2)
288{
289 dprintf2(("USER32: UnionRect\n"));
290 if (!lprcDst || !lprcSrc1 || !lprcSrc2)
291 {
292 SetLastError(ERROR_INVALID_PARAMETER);
293 return FALSE;
294 }
295
296 if (IsRectEmpty(lprcSrc1))
297 {
298 if (IsRectEmpty(lprcSrc2))
299 {
300 SetLastError(ERROR_INVALID_PARAMETER);
301 SetRectEmpty(lprcDst);
302 return FALSE;
303 }
304 else *lprcDst = *lprcSrc2;
305 }
306 else
307 {
308 if (IsRectEmpty(lprcSrc2)) *lprcDst = *lprcSrc1;
309 else
310 {
311 lprcDst->left = MIN(lprcSrc1->left,lprcSrc2->left);
312 lprcDst->right = MAX(lprcSrc1->right,lprcSrc2->right);
313 lprcDst->top = MIN(lprcSrc1->top,lprcSrc2->top);
314 lprcDst->bottom = MAX(lprcSrc1->bottom,lprcSrc2->bottom);
315 }
316 }
317
318 return TRUE;
319}
320
321/* Cursor Functions */
322
323BOOL WIN32API ClipCursor(const RECT * lpRect)
324{
325 dprintf(("USER32: ClipCursor\n"));
326 return O32_ClipCursor(lpRect);
327}
328//******************************************************************************
329//******************************************************************************
330HCURSOR WIN32API CreateCursor( HINSTANCE hInst, int xHotSpot, int yHotSpot, int nWidth, int nHeight, const VOID *pvANDPlane, const VOID *pvXORPlane)
331{
332 dprintf(("USER32: CreateCursor\n"));
333 return O32_CreateCursor(hInst,xHotSpot,yHotSpot,nWidth,nHeight,pvANDPlane,pvXORPlane);
334}
335//******************************************************************************
336//******************************************************************************
337BOOL WIN32API DestroyCursor( HCURSOR hCursor)
338{
339 dprintf(("USER32: DestroyCursor\n"));
340 return O32_DestroyCursor(hCursor);
341}
342//******************************************************************************
343//******************************************************************************
344BOOL WIN32API GetClipCursor( LPRECT lpRect)
345{
346 dprintf(("USER32: GetClipCursor\n"));
347 return O32_GetClipCursor(lpRect);
348}
349//******************************************************************************
350//******************************************************************************
351HCURSOR WIN32API GetCursor(void)
352{
353 dprintf2(("USER32: GetCursor\n"));
354 return O32_GetCursor();
355}
356//******************************************************************************
357//******************************************************************************
358BOOL WIN32API GetCursorPos( PPOINT lpPoint)
359{
360 dprintf2(("USER32: GetCursorPos\n"));
361
362 if (!lpPoint) return FALSE;
363 if (OSLibWinQueryPointerPos(lpPoint)) //POINT == POINTL
364 {
365 mapScreenPoint((OSLIBPOINT*)lpPoint);
366 return TRUE;
367 } else return FALSE;
368}
369/*****************************************************************************
370 * Name : HCURSOR WIN32API LoadCursorFromFileA
371 * Purpose : The LoadCursorFromFile function creates a cursor based on data
372 * contained in a file. The file is specified by its name or by a
373 * system cursor identifier. The function returns a handle to the
374 * newly created cursor. Files containing cursor data may be in
375 * either cursor (.CUR) or animated cursor (.ANI) format.
376 * Parameters: LPCTSTR lpFileName pointer to cursor file, or system cursor id
377 * Variables :
378 * Result : If the function is successful, the return value is a handle to
379 * the new cursor.
380 * If the function fails, the return value is NULL. To get extended
381 * error information, call GetLastError. GetLastError may return
382 * the following
383 * Remark :
384 * Status : UNTESTED STUB
385 *
386 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
387 *****************************************************************************/
388HCURSOR WIN32API LoadCursorFromFileA(LPCTSTR lpFileName)
389{
390 if (!HIWORD(lpFileName))
391 {
392 return LoadCursorA(NULL,lpFileName);
393 }
394 else
395 {
396 dprintf(("USER32:LoadCursorFromFileA (%s) not implemented.\n",
397 lpFileName));
398
399 return (NULL);
400 }
401}
402/*****************************************************************************
403 * Name : HCURSOR WIN32API LoadCursorFromFileW
404 * Purpose : The LoadCursorFromFile function creates a cursor based on data
405 * contained in a file. The file is specified by its name or by a
406 * system cursor identifier. The function returns a handle to the
407 * newly created cursor. Files containing cursor data may be in
408 * either cursor (.CUR) or animated cursor (.ANI) format.
409 * Parameters: LPCTSTR lpFileName pointer to cursor file, or system cursor id
410 * Variables :
411 * Result : If the function is successful, the return value is a handle to
412 * the new cursor.
413 * If the function fails, the return value is NULL. To get extended
414 * error information, call GetLastError. GetLastError may return
415 * the following
416 * Remark :
417 * Status : UNTESTED STUB
418 *
419 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
420 *****************************************************************************/
421HCURSOR WIN32API LoadCursorFromFileW(LPCWSTR lpFileName)
422{
423 if (!HIWORD(lpFileName))
424 {
425 return LoadCursorW(NULL,lpFileName);
426 } else
427 {
428 dprintf(("USER32:LoadCursorFromFileW (%s) not implemented.\n",
429 lpFileName));
430
431 return (NULL);
432 }
433}
434//******************************************************************************
435//******************************************************************************
436HCURSOR WIN32API SetCursor( HCURSOR hcur)
437{
438 HCURSOR rc;
439
440 rc = O32_SetCursor(hcur);
441 dprintf(("USER32: SetCursor %x (prev %x (%x))\n", hcur, rc, O32_GetCursor()));
442 return rc;
443}
444//******************************************************************************
445//******************************************************************************
446BOOL WIN32API SetCursorPos( int X, int Y)
447{
448 dprintf(("USER32: SetCursorPos %d %d", X,Y));
449 return O32_SetCursorPos(X,Y);
450}
451/*****************************************************************************
452 * Name : BOOL WIN32API SetSystemCursor
453 * Purpose : The SetSystemCursor function replaces the contents of the system
454 * cursor specified by dwCursorId with the contents of the cursor
455 * specified by hCursor, and then destroys hCursor. This function
456 * lets an application customize the system cursors.
457 * Parameters: HCURSOR hCursor set specified system cursor to this cursor's
458 * contents, then destroy this
459 * DWORD dwCursorID system cursor specified by its identifier
460 * Variables :
461 * Result : If the function succeeds, the return value is TRUE.
462 * If the function fails, the return value is FALSE. To get extended
463 * error information, call GetLastError.
464 * Remark :
465 * Status : UNTESTED STUB
466 *
467 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
468 *****************************************************************************/
469BOOL WIN32API SetSystemCursor(HCURSOR hCursor,
470 DWORD dwCursorId)
471{
472 dprintf(("USER32:SetSystemCursor (%08xh,%08x) not supported.\n",
473 hCursor,
474 dwCursorId));
475
476 return DestroyCursor(hCursor);
477}
478//******************************************************************************
479//******************************************************************************
480int WIN32API ShowCursor( BOOL bShow)
481{
482 dprintf2(("USER32: ShowCursor %d", bShow));
483 return O32_ShowCursor(bShow);
484}
485
486/* Mouse Input Functions */
487
488/*****************************************************************************
489 * Name : BOOL WIN32API DragDetect
490 * Purpose : The DragDetect function captures the mouse and tracks its movement
491 * Parameters: HWND hwnd
492 * POINT pt
493 * Variables :
494 * Result : If the user moved the mouse outside of the drag rectangle while
495 * holding the left button down, the return value is TRUE.
496 * If the user did not move the mouse outside of the drag rectangle
497 * while holding the left button down, the return value is FALSE.
498 * Remark :
499 * Status : UNTESTED STUB
500 *
501 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
502 *****************************************************************************/
503BOOL WIN32API DragDetect(HWND hwnd,
504 POINT pt)
505{
506 dprintf(("USER32:DragDetect(%08xh,...) not implemented.\n",
507 hwnd));
508
509 return (FALSE);
510}
511//******************************************************************************
512//******************************************************************************
513UINT WIN32API GetDoubleClickTime(void)
514{
515 dprintf(("USER32: GetDoubleClickTime\n"));
516 return O32_GetDoubleClickTime();
517}
518/*****************************************************************************
519 * Name : VOID WIN32API mouse_event
520 * Purpose : The mouse_event function synthesizes mouse motion and button clicks.
521 * Parameters: DWORD dwFlags flags specifying various motion/click variants
522 * DWORD dx horizontal mouse position or position change
523 * DWORD dy vertical mouse position or position change
524 * DWORD cButtons unused, reserved for future use, set to zero
525 * DWORD dwExtraInfo 32 bits of application-defined information
526 * Variables :
527 * Result :
528 * Remark :
529 * Status : UNTESTED STUB
530 *
531 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
532 *****************************************************************************/
533VOID WIN32API mouse_event(DWORD dwFlags,
534 DWORD dx,
535 DWORD dy,
536 DWORD cButtons,
537 DWORD dwExtraInfo)
538{
539 dprintf(("USER32:mouse_event (%08xh,%u,%u,%u,%08x) not implemented.\n",
540 dwFlags,
541 dx,
542 dy,
543 cButtons,
544 dwExtraInfo));
545}
546//******************************************************************************
547//******************************************************************************
548BOOL WIN32API ReleaseCapture(void)
549{
550 dprintf(("USER32: ReleaseCapture"));
551 return O32_ReleaseCapture();
552}
553//******************************************************************************
554//******************************************************************************
555HWND WIN32API GetCapture(void)
556{
557 HWND hwnd;
558
559 hwnd = Win32Window::OS2ToWin32Handle(O32_GetCapture());
560 dprintf(("USER32: GetCapture returned %x", hwnd));
561 return hwnd;
562}
563//******************************************************************************
564//******************************************************************************
565HWND WIN32API SetCapture( HWND hwnd)
566{
567 dprintf(("USER32: SetCapture %x", hwnd));
568 hwnd = Win32Window::Win32ToOS2Handle(hwnd);
569 return Win32Window::OS2ToWin32Handle(O32_SetCapture(hwnd));
570}
571//******************************************************************************
572//******************************************************************************
573BOOL WIN32API SetDoubleClickTime( UINT uInterval)
574{
575 dprintf(("USER32: SetDoubleClickTime\n"));
576 return O32_SetDoubleClickTime(uInterval);
577}
578//******************************************************************************
579//******************************************************************************
580BOOL WIN32API SwapMouseButton( BOOL fSwap)
581{
582 dprintf(("USER32: SwapMouseButton\n"));
583 return O32_SwapMouseButton(fSwap);
584}
585
586/* Error Functions */
587
588/*****************************************************************************
589 * Name : ExitWindowsEx
590 * Purpose : Shutdown System
591 * Parameters: UINT uFlags
592 * DWORD dwReserved
593 * Variables :
594 * Result : TRUE / FALSE
595 * Remark :
596 * Status :
597 *
598 * Author : Patrick Haller [Tue, 1999/10/20 21:24]
599 *****************************************************************************/
600
601ODINFUNCTION2(BOOL, ExitWindowsEx, UINT, uFlags,
602 DWORD, dwReserved)
603{
604 int rc = MessageBoxA(HWND_DESKTOP,
605 "Are you sure you want to shutdown the system?",
606 "Shutdown ...",
607 MB_YESNOCANCEL | MB_ICONQUESTION);
608 switch (rc)
609 {
610 case IDCANCEL: return (FALSE);
611 case IDYES: break;
612 case IDNO:
613 dprintf(("no shutdown!\n"));
614 return TRUE;
615 }
616
617 return O32_ExitWindowsEx(uFlags,dwReserved);
618}
619
620
621//******************************************************************************
622//******************************************************************************
623BOOL WIN32API MessageBeep( UINT uType)
624{
625 INT flStyle;
626
627 dprintf(("USER32: MessageBeep\n"));
628
629 switch (uType)
630 {
631 case 0xFFFFFFFF:
632 OSLibDosBeep(500,50);
633 return TRUE;
634 case MB_ICONASTERISK:
635 flStyle = WAOS_NOTE;
636 break;
637 case MB_ICONEXCLAMATION:
638 flStyle = WAOS_WARNING;
639 break;
640 case MB_ICONHAND:
641 case MB_ICONQUESTION:
642 case MB_OK:
643 flStyle = WAOS_NOTE;
644 break;
645 default:
646 flStyle = WAOS_ERROR; //CB: should be right
647 break;
648 }
649 return OSLibWinAlarm(OSLIB_HWND_DESKTOP,flStyle);
650}
651//******************************************************************************
652//2nd parameter not used according to SDK (yet?)
653//******************************************************************************
654VOID WIN32API SetLastErrorEx(DWORD dwErrCode, DWORD dwType)
655{
656 dprintf(("USER32: SetLastErrorEx\n"));
657 SetLastError(dwErrCode);
658}
659
660/* Accessibility Functions */
661
662int WIN32API GetSystemMetrics(int nIndex)
663{
664 int rc = 0;
665
666 switch(nIndex) {
667 case SM_CXSCREEN:
668 rc = ScreenWidth;
669 break;
670
671 case SM_CYSCREEN:
672 rc = ScreenHeight;
673 break;
674
675 case SM_CXVSCROLL:
676 rc = OSLibWinQuerySysValue(SVOS_CXVSCROLL);
677 break;
678
679 case SM_CYHSCROLL:
680 rc = OSLibWinQuerySysValue(SVOS_CYHSCROLL);
681 break;
682
683 case SM_CYCAPTION:
684 rc = 19;
685 //rc = OSLibWinQuerySysValue(SVOS_CYTITLEBAR);
686 break;
687
688 case SM_CXBORDER:
689 case SM_CYBORDER:
690 rc = 1;
691 break;
692
693 case SM_CXDLGFRAME:
694 case SM_CYDLGFRAME:
695 rc = 3;
696 break;
697
698 case SM_CYMENU:
699 case SM_CXMENUSIZE:
700 case SM_CYMENUSIZE:
701 rc = 19;
702 break;
703
704 case SM_CXSIZE:
705 case SM_CYSIZE:
706 rc = GetSystemMetrics(SM_CYCAPTION)-2;
707 break;
708
709 case SM_CXFRAME:
710 case SM_CYFRAME:
711 rc = 4;
712 break;
713
714 case SM_CXEDGE:
715 case SM_CYEDGE:
716 rc = 2;
717 break;
718
719 case SM_CXMINSPACING:
720 rc = 160;
721 break;
722
723 case SM_CYMINSPACING:
724 rc = 24;
725 break;
726
727 case SM_CXSMICON:
728 case SM_CYSMICON:
729 rc = 16;
730 break;
731
732 case SM_CYSMCAPTION:
733 rc = 16;
734 break;
735
736 case SM_CXSMSIZE:
737 case SM_CYSMSIZE:
738 rc = 15;
739 break;
740
741//CB: todo: add missing metrics
742
743 case SM_CXICONSPACING: //TODO: size of grid cell for large icons
744 rc = OSLibWinQuerySysValue(SVOS_CXICON);
745 //CB: return standard windows icon size?
746 //rc = 32;
747 break;
748 case SM_CYICONSPACING:
749 rc = OSLibWinQuerySysValue(SVOS_CYICON);
750 //read SM_CXICONSPACING comment
751 //rc = 32;
752 break;
753 case SM_PENWINDOWS:
754 rc = FALSE;
755 break;
756 case SM_DBCSENABLED:
757 rc = FALSE;
758 break;
759 case SM_CXICON:
760 case SM_CYICON:
761 rc = 32; //CB: Win32: only 32x32, OS/2 32x32/40x40
762 // we must implement 32x32 for all screen resolutions
763 break;
764 case SM_ARRANGE:
765 rc = ARW_BOTTOMLEFT | ARW_LEFT;
766 break;
767 case SM_CXMINIMIZED:
768 break;
769 case SM_CYMINIMIZED:
770 break;
771
772 case SM_CXMINTRACK:
773 case SM_CXMIN:
774 rc = 112;
775 break;
776
777 case SM_CYMINTRACK:
778 case SM_CYMIN:
779 rc = 27;
780 break;
781
782 case SM_CXMAXTRACK: //max window size
783 case SM_CXMAXIMIZED: //max toplevel window size
784 rc = OSLibWinQuerySysValue(SVOS_CXSCREEN);
785 break;
786
787 case SM_CYMAXTRACK:
788 case SM_CYMAXIMIZED:
789 rc = OSLibWinQuerySysValue(SVOS_CYSCREEN);
790 break;
791
792 case SM_NETWORK:
793 rc = 0x01; //TODO: default = yes
794 break;
795 case SM_CLEANBOOT:
796 rc = 0; //normal boot
797 break;
798 case SM_CXDRAG: //nr of pixels before drag becomes a real one
799 rc = 2;
800 break;
801 case SM_CYDRAG:
802 rc = 2;
803 break;
804 case SM_SHOWSOUNDS: //show instead of play sound
805 rc = FALSE;
806 break;
807 case SM_CXMENUCHECK:
808 rc = 4; //TODO
809 break;
810 case SM_CYMENUCHECK:
811 rc = OSLibWinQuerySysValue(SVOS_CYMENU);
812 break;
813 case SM_SLOWMACHINE:
814 rc = FALSE; //even a slow machine is fast with OS/2 :)
815 break;
816 case SM_MIDEASTENABLED:
817 rc = FALSE;
818 break;
819 case SM_MOUSEWHEELPRESENT:
820 rc = FALSE;
821 break;
822 case SM_XVIRTUALSCREEN:
823 rc = 0;
824 break;
825 case SM_YVIRTUALSCREEN:
826 rc = 0;
827 break;
828
829 case SM_CXVIRTUALSCREEN:
830 rc = OSLibWinQuerySysValue(SVOS_CXSCREEN);
831 break;
832 case SM_CYVIRTUALSCREEN:
833 rc = OSLibWinQuerySysValue(SVOS_CYSCREEN);
834 break;
835 case SM_CMONITORS:
836 rc = 1;
837 break;
838 case SM_SAMEDISPLAYFORMAT:
839 rc = TRUE;
840 break;
841 case SM_CMETRICS:
842 rc = 81;
843 //rc = O32_GetSystemMetrics(44); //Open32 changed this one
844 break;
845 default:
846 //better than nothing
847 rc = O32_GetSystemMetrics(nIndex);
848 break;
849 }
850 dprintf2(("USER32: GetSystemMetrics %d returned %d\n", nIndex, rc));
851 return(rc);
852}
853//******************************************************************************
854/* Not support by Open32 (not included are the new win9x parameters):
855 case SPI_GETFASTTASKSWITCH:
856 case SPI_GETGRIDGRANULARITY:
857 case SPI_GETICONTITLELOGFONT:
858 case SPI_GETICONTITLEWRAP:
859 case SPI_GETMENUDROPALIGNMENT:
860 case SPI_ICONHORIZONTALSPACING:
861 case SPI_ICONVERTICALSPACING:
862 case SPI_LANGDRIVER:
863 case SPI_SETFASTTASKSWITCH:
864 case SPI_SETGRIDGRANULARITY:
865 case SPI_SETICONTITLELOGFONT:
866 case SPI_SETICONTITLEWRAP:
867 case SPI_SETMENUDROPALIGNMENT:
868 case SPI_GETSCREENSAVEACTIVE:
869 case SPI_GETSCREENSAVETIMEOUT:
870 case SPI_SETDESKPATTERN:
871 case SPI_SETDESKWALLPAPER:
872 case SPI_SETSCREENSAVEACTIVE:
873 case SPI_SETSCREENSAVETIMEOUT:
874*/
875//******************************************************************************
876BOOL WIN32API SystemParametersInfoA(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
877{
878 BOOL rc = TRUE;
879 NONCLIENTMETRICSA *cmetric = (NONCLIENTMETRICSA *)pvParam;
880
881 switch(uiAction) {
882 case SPI_SCREENSAVERRUNNING:
883 *(BOOL *)pvParam = FALSE;
884 break;
885 case SPI_GETDRAGFULLWINDOWS:
886 *(BOOL *)pvParam = FALSE; //CB: where is the Warp 4 setting stored?
887 break;
888 case SPI_GETNONCLIENTMETRICS:
889 memset(cmetric, 0, sizeof(NONCLIENTMETRICSA));
890 cmetric->cbSize = sizeof(NONCLIENTMETRICSA);
891
892 //CB: fonts not handled by Open32, set to WarpSans
893 lstrcpyA(cmetric->lfCaptionFont.lfFaceName,"WarpSans");
894 cmetric->lfCaptionFont.lfHeight = 9;
895
896 lstrcpyA(cmetric->lfMenuFont.lfFaceName,"WarpSans");
897 cmetric->lfMenuFont.lfHeight = 9;
898
899 lstrcpyA(cmetric->lfStatusFont.lfFaceName,"WarpSans");
900 cmetric->lfStatusFont.lfHeight = 9;
901
902 lstrcpyA(cmetric->lfMessageFont.lfFaceName,"WarpSans");
903 cmetric->lfMessageFont.lfHeight = 9;
904
905 cmetric->iBorderWidth = GetSystemMetrics(SM_CXBORDER);
906 cmetric->iScrollWidth = GetSystemMetrics(SM_CXHSCROLL);
907 cmetric->iScrollHeight = GetSystemMetrics(SM_CYHSCROLL);
908 cmetric->iCaptionWidth = 32; //TODO
909 cmetric->iCaptionHeight = 16; //TODO
910 cmetric->iSmCaptionWidth = GetSystemMetrics(SM_CXSMSIZE);
911 cmetric->iSmCaptionHeight = GetSystemMetrics(SM_CYSMSIZE);
912 cmetric->iMenuWidth = 32; //TODO
913 cmetric->iMenuHeight = GetSystemMetrics(SM_CYMENU);
914 break;
915 case SPI_GETICONTITLELOGFONT:
916 {
917 LPLOGFONTA lpLogFont = (LPLOGFONTA)pvParam;
918
919 /* from now on we always have an alias for MS Sans Serif */
920 strcpy(lpLogFont->lfFaceName, "MS Sans Serif");
921 lpLogFont->lfHeight = -GetProfileIntA("Desktop","IconTitleSize", /*8*/12); //CB: 8 is too small
922 lpLogFont->lfWidth = 0;
923 lpLogFont->lfEscapement = lpLogFont->lfOrientation = 0;
924 lpLogFont->lfWeight = FW_NORMAL;
925 lpLogFont->lfItalic = FALSE;
926 lpLogFont->lfStrikeOut = FALSE;
927 lpLogFont->lfUnderline = FALSE;
928 lpLogFont->lfCharSet = ANSI_CHARSET;
929 lpLogFont->lfOutPrecision = OUT_DEFAULT_PRECIS;
930 lpLogFont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
931 lpLogFont->lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS;
932 break;
933 }
934 case SPI_GETBORDER:
935 *(INT *)pvParam = GetSystemMetrics( SM_CXFRAME );
936 break;
937
938 case SPI_GETWORKAREA:
939 SetRect( (RECT *)pvParam, 0, 0,
940 GetSystemMetrics( SM_CXSCREEN ),
941 GetSystemMetrics( SM_CYSCREEN )
942 );
943 break;
944
945 case 104: //TODO: Undocumented
946 rc = 16;
947 break;
948 default:
949 rc = O32_SystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
950 break;
951 }
952 dprintf(("USER32: SystemParametersInfoA %d, returned %d\n", uiAction, rc));
953 return(rc);
954}
955//******************************************************************************
956//TODO: Check for more options that have different structs for Unicode!!!!
957//******************************************************************************
958BOOL WIN32API SystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
959{
960 BOOL rc;
961 NONCLIENTMETRICSW *clientMetricsW = (NONCLIENTMETRICSW *)pvParam;
962 NONCLIENTMETRICSA clientMetricsA = {0};
963 PVOID pvParamA;
964 UINT uiParamA;
965
966 switch(uiAction) {
967 case SPI_SETNONCLIENTMETRICS:
968 clientMetricsA.cbSize = sizeof(NONCLIENTMETRICSA);
969 clientMetricsA.iBorderWidth = clientMetricsW->iBorderWidth;
970 clientMetricsA.iScrollWidth = clientMetricsW->iScrollWidth;
971 clientMetricsA.iScrollHeight = clientMetricsW->iScrollHeight;
972 clientMetricsA.iCaptionWidth = clientMetricsW->iCaptionWidth;
973 clientMetricsA.iCaptionHeight = clientMetricsW->iCaptionHeight;
974 ConvertFontWA(&clientMetricsW->lfCaptionFont, &clientMetricsA.lfCaptionFont);
975 clientMetricsA.iSmCaptionWidth = clientMetricsW->iSmCaptionWidth;
976 clientMetricsA.iSmCaptionHeight = clientMetricsW->iSmCaptionHeight;
977 ConvertFontWA(&clientMetricsW->lfSmCaptionFont, &clientMetricsA.lfSmCaptionFont);
978 clientMetricsA.iMenuWidth = clientMetricsW->iMenuWidth;
979 clientMetricsA.iMenuHeight = clientMetricsW->iMenuHeight;
980 ConvertFontWA(&clientMetricsW->lfMenuFont, &clientMetricsA.lfMenuFont);
981 ConvertFontWA(&clientMetricsW->lfStatusFont, &clientMetricsA.lfStatusFont);
982 ConvertFontWA(&clientMetricsW->lfMessageFont, &clientMetricsA.lfMessageFont);
983 //no break
984 case SPI_GETNONCLIENTMETRICS:
985 uiParamA = sizeof(NONCLIENTMETRICSA);
986 pvParamA = &clientMetricsA;
987 break;
988 case SPI_GETICONTITLELOGFONT:
989 {
990 LPLOGFONTW lpLogFont = (LPLOGFONTW)pvParam;
991
992 /* from now on we always have an alias for MS Sans Serif */
993 lstrcpyW(lpLogFont->lfFaceName, (LPCWSTR)L"MS Sans Serif");
994 lpLogFont->lfHeight = -GetProfileIntA("Desktop","IconTitleSize", 8);
995 lpLogFont->lfWidth = 0;
996 lpLogFont->lfEscapement = lpLogFont->lfOrientation = 0;
997 lpLogFont->lfWeight = FW_NORMAL;
998 lpLogFont->lfItalic = FALSE;
999 lpLogFont->lfStrikeOut = FALSE;
1000 lpLogFont->lfUnderline = FALSE;
1001 lpLogFont->lfCharSet = ANSI_CHARSET;
1002 lpLogFont->lfOutPrecision = OUT_DEFAULT_PRECIS;
1003 lpLogFont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
1004 lpLogFont->lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS;
1005 return TRUE;
1006 }
1007 default:
1008 pvParamA = pvParam;
1009 uiParamA = uiParam;
1010 break;
1011 }
1012 rc = SystemParametersInfoA(uiAction, uiParamA, pvParamA, fWinIni);
1013
1014 switch(uiAction) {
1015 case SPI_GETNONCLIENTMETRICS:
1016 clientMetricsW->cbSize = sizeof(*clientMetricsW);
1017 clientMetricsW->iBorderWidth = clientMetricsA.iBorderWidth;
1018 clientMetricsW->iScrollWidth = clientMetricsA.iScrollWidth;
1019 clientMetricsW->iScrollHeight = clientMetricsA.iScrollHeight;
1020 clientMetricsW->iCaptionWidth = clientMetricsA.iCaptionWidth;
1021 clientMetricsW->iCaptionHeight = clientMetricsA.iCaptionHeight;
1022 ConvertFontAW(&clientMetricsA.lfCaptionFont, &clientMetricsW->lfCaptionFont);
1023
1024 clientMetricsW->iSmCaptionWidth = clientMetricsA.iSmCaptionWidth;
1025 clientMetricsW->iSmCaptionHeight = clientMetricsA.iSmCaptionHeight;
1026 ConvertFontAW(&clientMetricsA.lfSmCaptionFont, &clientMetricsW->lfSmCaptionFont);
1027
1028 clientMetricsW->iMenuWidth = clientMetricsA.iMenuWidth;
1029 clientMetricsW->iMenuHeight = clientMetricsA.iMenuHeight;
1030 ConvertFontAW(&clientMetricsA.lfMenuFont, &clientMetricsW->lfMenuFont);
1031 ConvertFontAW(&clientMetricsA.lfStatusFont, &clientMetricsW->lfStatusFont);
1032 ConvertFontAW(&clientMetricsA.lfMessageFont, &clientMetricsW->lfMessageFont);
1033 break;
1034 }
1035 dprintf(("USER32: SystemParametersInfoW %d, returned %d\n", uiAction, rc));
1036 return(rc);
1037}
1038
1039/* Process and Thread Functions */
1040
1041//******************************************************************************
1042//DWORD idAttach; /* thread to attach */
1043//DWORD idAttachTo; /* thread to attach to */
1044//BOOL fAttach; /* attach or detach */
1045//******************************************************************************
1046BOOL WIN32API AttachThreadInput(DWORD idAttach, DWORD idAttachTo, BOOL fAttach)
1047{
1048 dprintf(("USER32: AttachThreadInput, not implemented\n"));
1049 return(TRUE);
1050}
1051//******************************************************************************
1052//******************************************************************************
1053DWORD WIN32API WaitForInputIdle(HANDLE hProcess, DWORD dwTimeOut)
1054{
1055 dprintf(("USER32: WaitForInputIdle %x %d\n", hProcess, dwTimeOut));
1056
1057 return O32_WaitForInputIdle(hProcess, dwTimeOut);
1058}
1059
1060/* Help Functions */
1061
1062BOOL WIN32API WinHelpA( HWND hwnd, LPCSTR lpszHelp, UINT uCommand, DWORD dwData)
1063{
1064 static WORD WM_WINHELP = 0;
1065 HWND hDest;
1066 LPWINHELP lpwh;
1067 HGLOBAL hwh;
1068 HINSTANCE winhelp;
1069 int size,dsize,nlen;
1070
1071 dprintf(("USER32: WinHelpA %s\n", lpszHelp));
1072
1073 if(!WM_WINHELP)
1074 {
1075 WM_WINHELP=RegisterWindowMessageA("WM_WINHELP");
1076 if(!WM_WINHELP)
1077 return FALSE;
1078 }
1079
1080 hDest = FindWindowA( "MS_WINHELP", NULL );
1081 if(!hDest)
1082 {
1083 if(uCommand == HELP_QUIT)
1084 return TRUE;
1085 else
1086 winhelp = WinExec ( "winhlp32.exe -x", SW_SHOWNORMAL );
1087 if ( winhelp <= 32 ) return FALSE;
1088 if ( ! ( hDest = FindWindowA ( "MS_WINHELP", NULL ) )) return FALSE;
1089 }
1090
1091 switch(uCommand)
1092 {
1093 case HELP_CONTEXT:
1094 case HELP_SETCONTENTS:
1095 case HELP_CONTENTS:
1096 case HELP_CONTEXTPOPUP:
1097 case HELP_FORCEFILE:
1098 case HELP_HELPONHELP:
1099 case HELP_FINDER:
1100 case HELP_QUIT:
1101 dsize=0;
1102 break;
1103
1104 case HELP_KEY:
1105 case HELP_PARTIALKEY:
1106 case HELP_COMMAND:
1107 dsize = strlen( (LPSTR)dwData )+1;
1108 break;
1109
1110 case HELP_MULTIKEY:
1111 dsize = ((LPMULTIKEYHELP)dwData)->mkSize;
1112 break;
1113
1114 case HELP_SETWINPOS:
1115 dsize = ((LPHELPWININFO)dwData)->wStructSize;
1116 break;
1117
1118 default:
1119 //WARN("Unknown help command %d\n",wCommand);
1120 return FALSE;
1121 }
1122 if(lpszHelp)
1123 nlen = strlen(lpszHelp)+1;
1124 else
1125 nlen = 0;
1126 size = sizeof(WINHELP) + nlen + dsize;
1127 hwh = GlobalAlloc(0,size);
1128 lpwh = (WINHELP*)GlobalLock(hwh);
1129 lpwh->size = size;
1130 lpwh->command = uCommand;
1131 lpwh->data = dwData;
1132 if(nlen)
1133 {
1134 strcpy(((char*)lpwh) + sizeof(WINHELP),lpszHelp);
1135 lpwh->ofsFilename = sizeof(WINHELP);
1136 } else
1137 lpwh->ofsFilename = 0;
1138 if(dsize)
1139 {
1140 memcpy(((char*)lpwh)+sizeof(WINHELP)+nlen,(LPSTR)dwData,dsize);
1141 lpwh->ofsData = sizeof(WINHELP)+nlen;
1142 } else
1143 lpwh->ofsData = 0;
1144 GlobalUnlock(hwh);
1145
1146 return SendMessageA(hDest,WM_WINHELP,hwnd,hwh);
1147}
1148//******************************************************************************
1149//******************************************************************************
1150BOOL WIN32API WinHelpW( HWND hwnd, LPCWSTR lpszHelp, UINT uCommand, DWORD dwData)
1151{
1152 char *astring = UnicodeToAsciiString((LPWSTR)lpszHelp);
1153 BOOL rc;
1154
1155 dprintf(("USER32: WinHelpW\n"));
1156
1157 rc = WinHelpA(hwnd,astring,uCommand,dwData);
1158 FreeAsciiString(astring);
1159
1160 return rc;
1161}
1162
1163/* Keyboard and Input Functions */
1164
1165BOOL WIN32API ActivateKeyboardLayout(HKL hkl, UINT fuFlags)
1166{
1167 dprintf(("USER32: ActivateKeyboardLayout, not implemented\n"));
1168 return(TRUE);
1169}
1170//******************************************************************************
1171//SvL: 24-6-'97 - Added
1172//TODO: Not implemented
1173//******************************************************************************
1174WORD WIN32API GetAsyncKeyState(INT nVirtKey)
1175{
1176 dprintf2(("USER32: GetAsyncKeyState Not implemented\n"));
1177 return 0;
1178}
1179/*****************************************************************************
1180 * Name : UINT WIN32API GetKBCodePage
1181 * Purpose : The GetKBCodePage function is provided for compatibility with
1182 * earlier versions of Windows. In the Win32 application programming
1183 * interface (API) it just calls the GetOEMCP function.
1184 * Parameters:
1185 * Variables :
1186 * Result : If the function succeeds, the return value is an OEM code-page
1187 * identifier, or it is the default identifier if the registry
1188 * value is not readable. For a list of OEM code-page identifiers,
1189 * see GetOEMCP.
1190 * Remark :
1191 * Status : UNTESTED
1192 *
1193 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1194 *****************************************************************************/
1195
1196UINT WIN32API GetKBCodePage(VOID)
1197{
1198 return (GetOEMCP());
1199}
1200//******************************************************************************
1201//******************************************************************************
1202int WIN32API GetKeyNameTextA( LPARAM lParam, LPSTR lpString, int nSize)
1203{
1204 dprintf(("USER32: GetKeyNameTextA\n"));
1205 return O32_GetKeyNameText(lParam,lpString,nSize);
1206}
1207//******************************************************************************
1208//******************************************************************************
1209int WIN32API GetKeyNameTextW( LPARAM lParam, LPWSTR lpString, int nSize)
1210{
1211 dprintf(("USER32: GetKeyNameTextW DOES NOT WORK\n"));
1212 // NOTE: This will not work as is (needs UNICODE support)
1213 return 0;
1214// return O32_GetKeyNameText(arg1, arg2, arg3);
1215}
1216//******************************************************************************
1217//SvL: 24-6-'97 - Added
1218//******************************************************************************
1219SHORT WIN32API GetKeyState( int nVirtKey)
1220{
1221//SvL: Hehe. 32 MB logfile for Opera after a minute.
1222 dprintf2(("USER32: GetKeyState %d\n", nVirtKey));
1223 return O32_GetKeyState(nVirtKey);
1224}
1225/*****************************************************************************
1226 * Name : VOID WIN32API keybd_event
1227 * Purpose : The keybd_event function synthesizes a keystroke. The system
1228 * can use such a synthesized keystroke to generate a WM_KEYUP or
1229 * WM_KEYDOWN message. The keyboard driver's interrupt handler calls
1230 * the keybd_event function.
1231 * Parameters: BYTE bVk virtual-key code
1232
1233 * BYTE bScan hardware scan code
1234 * DWORD dwFlags flags specifying various function options
1235 * DWORD dwExtraInfo additional data associated with keystroke
1236 * Variables :
1237 * Result :
1238 * Remark :
1239 * Status : UNTESTED STUB
1240 *
1241 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1242 *****************************************************************************/
1243VOID WIN32API keybd_event (BYTE bVk,
1244 BYTE bScan,
1245 DWORD dwFlags,
1246 DWORD dwExtraInfo)
1247{
1248 dprintf(("USER32:keybd_event (%u,%u,%08xh,%08x) not implemented.\n",
1249 bVk,
1250 bScan,
1251 dwFlags,
1252 dwExtraInfo));
1253}
1254/*****************************************************************************
1255 * Name : HLK WIN32API LoadKeyboardLayoutA
1256 * Purpose : The LoadKeyboardLayout function loads a new keyboard layout into
1257 * the system. Several keyboard layouts can be loaded at a time, but
1258 * only one per process is active at a time. Loading multiple keyboard
1259 * layouts makes it possible to rapidly switch between layouts.
1260 * Parameters:
1261 * Variables :
1262 * Result : If the function succeeds, the return value is the handle of the
1263 * keyboard layout.
1264 * If the function fails, the return value is NULL. To get extended
1265 * error information, call GetLastError.
1266 * Remark :
1267 * Status : UNTESTED STUB
1268 *
1269 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1270 *****************************************************************************/
1271HKL WIN32API LoadKeyboardLayoutA(LPCTSTR pwszKLID,
1272 UINT Flags)
1273{
1274 dprintf(("USER32:LeadKeyboardLayoutA (%s,%u) not implemented.\n",
1275 pwszKLID,
1276 Flags));
1277
1278 return (NULL);
1279}
1280/*****************************************************************************
1281 * Name : HLK WIN32API LoadKeyboardLayoutW
1282 * Purpose : The LoadKeyboardLayout function loads a new keyboard layout into
1283 * the system. Several keyboard layouts can be loaded at a time, but
1284 * only one per process is active at a time. Loading multiple keyboard
1285 * layouts makes it possible to rapidly switch between layouts.
1286 * Parameters:
1287 * Variables :
1288 * Result : If the function succeeds, the return value is the handle of the
1289 * keyboard layout.
1290 * If the function fails, the return value is NULL. To get extended
1291 * error information, call GetLastError.
1292 * Remark :
1293 * Status : UNTESTED STUB
1294 *
1295 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1296 *****************************************************************************/
1297HKL WIN32API LoadKeyboardLayoutW(LPCWSTR pwszKLID,
1298 UINT Flags)
1299{
1300 dprintf(("USER32:LeadKeyboardLayoutW (%s,%u) not implemented.\n",
1301 pwszKLID,
1302 Flags));
1303
1304 return (NULL);
1305}
1306//******************************************************************************
1307//******************************************************************************
1308UINT WIN32API MapVirtualKeyA( UINT uCode, UINT uMapType)
1309{
1310 dprintf(("USER32: MapVirtualKeyA\n"));
1311 return O32_MapVirtualKey(uCode,uMapType);
1312}
1313//******************************************************************************
1314//******************************************************************************
1315UINT WIN32API MapVirtualKeyW( UINT uCode, UINT uMapType)
1316{
1317 dprintf(("USER32: MapVirtualKeyW\n"));
1318 // NOTE: This will not work as is (needs UNICODE support)
1319 return O32_MapVirtualKey(uCode,uMapType);
1320}
1321/*****************************************************************************
1322 * Name : UINT WIN32API MapVirtualKeyExA
1323 * Purpose : The MapVirtualKeyEx function translates (maps) a virtual-key
1324 * code into a scan code or character value, or translates a scan
1325 * code into a virtual-key code. The function translates the codes
1326 * using the input language and physical keyboard layout identified
1327 * by the given keyboard layout handle.
1328 * Parameters:
1329 * Variables :
1330 * Result : The return value is either a scan code, a virtual-key code, or
1331 * a character value, depending on the value of uCode and uMapType.
1332 * If there is no translation, the return value is zero.
1333 * Remark :
1334 * Status : UNTESTED STUB
1335 *
1336 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1337 *****************************************************************************/
1338UINT WIN32API MapVirtualKeyExA(UINT uCode,
1339 UINT uMapType,
1340 HKL dwhkl)
1341{
1342 dprintf(("USER32:MapVirtualKeyExA (%u,%u,%08x) not implemented.\n",
1343 uCode,
1344 uMapType,
1345 dwhkl));
1346
1347 return (0);
1348}
1349/*****************************************************************************
1350 * Name : UINT WIN32API MapVirtualKeyExW
1351 * Purpose : The MapVirtualKeyEx function translates (maps) a virtual-key
1352 * code into a scan code or character value, or translates a scan
1353 * code into a virtual-key code. The function translates the codes
1354 * using the input language and physical keyboard layout identified
1355 * by the given keyboard layout handle.
1356 * Parameters:
1357 * Variables :
1358 * Result : The return value is either a scan code, a virtual-key code, or
1359 * a character value, depending on the value of uCode and uMapType.
1360 * If there is no translation, the return value is zero.
1361 * Remark :
1362 * Status : UNTESTED STUB
1363
1364 *
1365 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1366 *****************************************************************************/
1367UINT WIN32API MapVirtualKeyExW(UINT uCode,
1368 UINT uMapType,
1369 HKL dwhkl)
1370{
1371 dprintf(("USER32:MapVirtualKeyExW (%u,%u,%08x) not implemented.\n",
1372 uCode,
1373 uMapType,
1374 dwhkl));
1375
1376 return (0);
1377}
1378/*****************************************************************************
1379 * Name : DWORD WIN32API OemKeyScan
1380 * Purpose : The OemKeyScan function maps OEM ASCII codes 0 through 0x0FF
1381 * into the OEM scan codes and shift states. The function provides
1382 * information that allows a program to send OEM text to another
1383 * program by simulating keyboard input.
1384 * Parameters:
1385 * Variables :
1386 * Result :
1387 * Remark :
1388 * Status : UNTESTED STUB
1389 *
1390 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1391 *****************************************************************************/
1392DWORD WIN32API OemKeyScan(WORD wOemChar)
1393{
1394 dprintf(("USER32:OemKeyScan (%u) not implemented.\n",
1395 wOemChar));
1396
1397 return (wOemChar);
1398}
1399//******************************************************************************
1400//******************************************************************************
1401BOOL WIN32API RegisterHotKey(HWND hwnd, int idHotKey, UINT fuModifiers, UINT uVirtKey)
1402{
1403 dprintf(("USER32: RegisterHotKey, not implemented\n"));
1404 hwnd = Win32Window::Win32ToOS2Handle(hwnd);
1405 return(TRUE);
1406}
1407/*****************************************************************************
1408 * Name : int WIN32API ToAscii
1409 * Purpose : The ToAscii function translates the specified virtual-key code
1410 * and keyboard state to the corresponding Windows character or characters.
1411 * Parameters: UINT uVirtKey virtual-key code
1412 * UINT uScanCode scan code
1413 * PBYTE lpbKeyState address of key-state array
1414 * LPWORD lpwTransKey buffer for translated key
1415 * UINT fuState active-menu flag
1416 * Variables :
1417 * Result : 0 The specified virtual key has no translation for the current
1418 * state of the keyboard.
1419 * 1 One Windows character was copied to the buffer.
1420 * 2 Two characters were copied to the buffer. This usually happens
1421 * when a dead-key character (accent or diacritic) stored in the
1422 * keyboard layout cannot be composed with the specified virtual
1423 * key to form a single character.
1424 * Remark :
1425 * Status : UNTESTED STUB
1426 *
1427 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1428 *****************************************************************************/
1429int WIN32API ToAscii(UINT uVirtKey,
1430 UINT uScanCode,
1431 PBYTE lpbKeyState,
1432 LPWORD lpwTransKey,
1433 UINT fuState)
1434{
1435 dprintf(("USER32:ToAscii (%u,%u,%08xh,%08xh,%u) not implemented.\n",
1436 uVirtKey,
1437 uScanCode,
1438 lpbKeyState,
1439 lpwTransKey,
1440 fuState));
1441
1442 return (0);
1443}
1444/*****************************************************************************
1445 * Name : int WIN32API ToAsciiEx
1446 * Purpose : The ToAscii function translates the specified virtual-key code
1447 * and keyboard state to the corresponding Windows character or characters.
1448 * Parameters: UINT uVirtKey virtual-key code
1449 * UINT uScanCode scan code
1450 * PBYTE lpbKeyState address of key-state array
1451 * LPWORD lpwTransKey buffer for translated key
1452 * UINT fuState active-menu flag
1453 * HLK hlk keyboard layout handle
1454 * Variables :
1455 * Result : 0 The specified virtual key has no translation for the current
1456 * state of the keyboard.
1457 * 1 One Windows character was copied to the buffer.
1458 * 2 Two characters were copied to the buffer. This usually happens
1459 * when a dead-key character (accent or diacritic) stored in the
1460 * keyboard layout cannot be composed with the specified virtual
1461 * key to form a single character.
1462 * Remark :
1463 * Status : UNTESTED STUB
1464 *
1465 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1466 *****************************************************************************/
1467int WIN32API ToAsciiEx(UINT uVirtKey,
1468 UINT uScanCode,
1469 PBYTE lpbKeyState,
1470 LPWORD lpwTransKey,
1471 UINT fuState,
1472 HKL hkl)
1473{
1474 dprintf(("USER32:ToAsciiEx (%u,%u,%08xh,%08xh,%u,%08x) not implemented.\n",
1475 uVirtKey,
1476 uScanCode,
1477 lpbKeyState,
1478 lpwTransKey,
1479 fuState,
1480 hkl));
1481
1482 return (0);
1483}
1484/*****************************************************************************
1485 * Name : int WIN32API ToUnicode
1486 * Purpose : The ToUnicode function translates the specified virtual-key code
1487 * and keyboard state to the corresponding Unicode character or characters.
1488 * Parameters: UINT wVirtKey virtual-key code
1489 * UINT wScanCode scan code
1490 * PBYTE lpKeyState address of key-state array
1491 * LPWSTR pwszBuff buffer for translated key
1492 * int cchBuff size of translated key buffer
1493 * UINT wFlags set of function-conditioning flags
1494 * Variables :
1495 * Result : - 1 The specified virtual key is a dead-key character (accent or
1496 * diacritic). This value is returned regardless of the keyboard
1497 * layout, even if several characters have been typed and are
1498 * stored in the keyboard state. If possible, even with Unicode
1499 * keyboard layouts, the function has written a spacing version of
1500 * the dead-key character to the buffer specified by pwszBuffer.
1501 * For example, the function writes the character SPACING ACUTE
1502 * (0x00B4), rather than the character NON_SPACING ACUTE (0x0301).
1503 * 0 The specified virtual key has no translation for the current
1504 * state of the keyboard. Nothing was written to the buffer
1505 * specified by pwszBuffer.
1506 * 1 One character was written to the buffer specified by pwszBuffer.
1507 * 2 or more Two or more characters were written to the buffer specified by
1508 * pwszBuff. The most common cause for this is that a dead-key
1509 * character (accent or diacritic) stored in the keyboard layout
1510 * could not be combined with the specified virtual key to form a
1511 * single character.
1512 * Remark :
1513 * Status : UNTESTED STUB
1514 *
1515 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1516 *****************************************************************************/
1517int WIN32API ToUnicode(UINT uVirtKey,
1518 UINT uScanCode,
1519 PBYTE lpKeyState,
1520 LPWSTR pwszBuff,
1521 int cchBuff,
1522 UINT wFlags)
1523{
1524 dprintf(("USER32:ToUnicode (%u,%u,%08xh,%08xh,%u,%08x) not implemented.\n",
1525 uVirtKey,
1526 uScanCode,
1527 lpKeyState,
1528 pwszBuff,
1529 cchBuff,
1530 wFlags));
1531
1532 return (0);
1533}
1534/*****************************************************************************
1535 * Name : BOOL WIN32API UnloadKeyboardLayout
1536 * Purpose : The UnloadKeyboardLayout function removes a keyboard layout.
1537 * Parameters: HKL hkl handle of keyboard layout
1538 * Variables :
1539 * Result : If the function succeeds, the return value is the handle of the
1540 * keyboard layout; otherwise, it is NULL. To get extended error
1541 * information, use the GetLastError function.
1542 * Remark :
1543 * Status : UNTESTED STUB
1544 *
1545 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1546 *****************************************************************************/
1547BOOL WIN32API UnloadKeyboardLayout (HKL hkl)
1548{
1549 dprintf(("USER32:UnloadKeyboardLayout (%08x) not implemented.\n",
1550 hkl));
1551
1552 return (0);
1553}
1554//******************************************************************************
1555//******************************************************************************
1556BOOL WIN32API UnregisterHotKey(HWND hwnd, int idHotKey)
1557{
1558 dprintf(("USER32: UnregisterHotKey, not implemented\n"));
1559 hwnd = Win32Window::Win32ToOS2Handle(hwnd);
1560
1561 return(TRUE);
1562}
1563//******************************************************************************
1564//SvL: 24-6-'97 - Added
1565//******************************************************************************
1566WORD WIN32API VkKeyScanA( char ch)
1567{
1568 dprintf(("USER32: VkKeyScanA\n"));
1569 return O32_VkKeyScan(ch);
1570}
1571//******************************************************************************
1572//******************************************************************************
1573WORD WIN32API VkKeyScanW( WCHAR wch)
1574{
1575 dprintf(("USER32: VkKeyScanW\n"));
1576 // NOTE: This will not work as is (needs UNICODE support)
1577 return O32_VkKeyScan((char)wch);
1578}
1579/*****************************************************************************
1580 * Name : SHORT WIN32API VkKeyScanExW
1581 * Purpose : The VkKeyScanEx function translates a character to the
1582 * corresponding virtual-key code and shift state. The function
1583 * translates the character using the input language and physical
1584 * keyboard layout identified by the given keyboard layout handle.
1585 * Parameters: UINT uChar character to translate
1586 * HKL hkl keyboard layout handle
1587 * Variables :
1588 * Result : see docs
1589 * Remark :
1590 * Status : UNTESTED STUB
1591 *
1592 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1593 *****************************************************************************/
1594WORD WIN32API VkKeyScanExW(WCHAR uChar,
1595 HKL hkl)
1596{
1597 dprintf(("USER32:VkKeyScanExW (%u,%08x) not implemented.\n",
1598 uChar,
1599 hkl));
1600
1601 return (uChar);
1602}
1603/*****************************************************************************
1604 * Name : SHORT WIN32API VkKeyScanExA
1605 * Purpose : The VkKeyScanEx function translates a character to the
1606 * corresponding virtual-key code and shift state. The function
1607 * translates the character using the input language and physical
1608 * keyboard layout identified by the given keyboard layout handle.
1609 * Parameters: UINT uChar character to translate
1610 * HKL hkl keyboard layout handle
1611 * Variables :
1612 * Result : see docs
1613 * Remark :
1614 * Status : UNTESTED STUB
1615 *
1616 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1617 *****************************************************************************/
1618WORD WIN32API VkKeyScanExA(CHAR uChar,
1619 HKL hkl)
1620{
1621 dprintf(("USER32:VkKeyScanExA (%u,%08x) not implemented.\n",
1622 uChar,
1623 hkl));
1624
1625 return (uChar);
1626}
1627
1628/* Window Functions */
1629
1630/*****************************************************************************
1631 * Name : BOOL WIN32API AnyPopup
1632 * Purpose : The AnyPopup function indicates whether an owned, visible,
1633 * top-level pop-up, or overlapped window exists on the screen. The
1634 * function searches the entire Windows screen, not just the calling
1635 * application's client area.
1636 * Parameters: VOID
1637 * Variables :
1638 * Result : If a pop-up window exists, the return value is TRUE even if the
1639 * pop-up window is completely covered by other windows. Otherwise,
1640 * it is FALSE.
1641 * Remark : AnyPopup is a Windows version 1.x function and is retained for
1642 * compatibility purposes. It is generally not useful.
1643 * Status : UNTESTED STUB
1644 *
1645 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1646 *****************************************************************************/
1647BOOL WIN32API AnyPopup(VOID)
1648{
1649 dprintf(("USER32:AnyPopup() not implemented.\n"));
1650
1651 return (FALSE);
1652}
1653
1654/*****************************************************************************
1655 * Name : BOOL WIN32API PaintDesktop
1656 * Purpose : The PaintDesktop function fills the clipping region in the
1657 * specified device context with the desktop pattern or wallpaper.
1658 * The function is provided primarily for shell desktops.
1659 * Parameters:
1660 * Variables :
1661 * Result : If the function succeeds, the return value is TRUE.
1662 * If the function fails, the return value is FALSE.
1663 * Remark :
1664 * Status : UNTESTED STUB
1665 *
1666 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1667 *****************************************************************************/
1668BOOL WIN32API PaintDesktop(HDC hdc)
1669{
1670 dprintf(("USER32:PaintDesktop (%08x) not implemented.\n",
1671 hdc));
1672
1673 return (FALSE);
1674}
1675
1676/* Filled Shape Functions */
1677
1678
1679int WIN32API FillRect(HDC hDC, const RECT * lprc, HBRUSH hbr)
1680{
1681 dprintf2(("USER32: FillRect (%d,%d)(%d,%d) brush %X\n", lprc->left, lprc->top, lprc->right, lprc->bottom, hbr));
1682 return O32_FillRect(hDC,lprc,hbr);
1683}
1684//******************************************************************************
1685//******************************************************************************
1686int WIN32API FrameRect( HDC hDC, const RECT * lprc, HBRUSH hbr)
1687{
1688 dprintf(("USER32: FrameRect"));
1689 return O32_FrameRect(hDC,lprc,hbr);
1690}
1691//******************************************************************************
1692//******************************************************************************
1693BOOL WIN32API InvertRect( HDC hDC, const RECT * lprc)
1694{
1695 dprintf(("USER32: InvertRect\n"));
1696 return O32_InvertRect(hDC,lprc);
1697}
1698
1699/* System Information Functions */
1700
1701int WIN32API GetKeyboardType( int nTypeFlag)
1702{
1703 dprintf(("USER32: GetKeyboardType\n"));
1704 return O32_GetKeyboardType(nTypeFlag);
1705}
1706
1707/* Window Station and Desktop Functions */
1708
1709/*****************************************************************************
1710 * Name : HDESK WIN32API GetThreadDesktop
1711 * Purpose : The GetThreadDesktop function returns a handle to the desktop
1712 * associated with a specified thread.
1713 * Parameters: DWORD dwThreadId thread identifier
1714 * Variables :
1715 * Result : If the function succeeds, the return value is the handle of the
1716 * desktop associated with the specified thread.
1717 * Remark :
1718 * Status : UNTESTED STUB
1719 *
1720 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1721 *****************************************************************************/
1722HDESK WIN32API GetThreadDesktop(DWORD dwThreadId)
1723{
1724 dprintf(("USER32:GetThreadDesktop (%u) not implemented.\n",
1725 dwThreadId));
1726
1727 return (NULL);
1728}
1729
1730/*****************************************************************************
1731 * Name : BOOL WIN32API CloseDesktop
1732 * Purpose : The CloseDesktop function closes an open handle of a desktop
1733 * object. A desktop is a secure object contained within a window
1734 * station object. A desktop has a logical display surface and
1735 * contains windows, menus and hooks.
1736 * Parameters: HDESK hDesktop
1737 * Variables :
1738 * Result : If the function succeeds, the return value is TRUE.
1739 * If the functions fails, the return value is FALSE. To get
1740 * extended error information, call GetLastError.
1741 * Remark :
1742 * Status : UNTESTED STUB
1743 *
1744 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1745 *****************************************************************************/
1746BOOL WIN32API CloseDesktop(HDESK hDesktop)
1747{
1748 dprintf(("USER32:CloseDesktop(%08x) not implemented.\n",
1749 hDesktop));
1750
1751 return (FALSE);
1752}
1753/*****************************************************************************
1754 * Name : BOOL WIN32API CloseWindowStation
1755 * Purpose : The CloseWindowStation function closes an open window station handle.
1756 * Parameters: HWINSTA hWinSta
1757 * Variables :
1758 * Result :
1759 * Remark : If the function succeeds, the return value is TRUE.
1760 * If the functions fails, the return value is FALSE. To get
1761 * extended error information, call GetLastError.
1762 * Status : UNTESTED STUB
1763 *
1764 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1765 *****************************************************************************/
1766BOOL WIN32API CloseWindowStation(HWINSTA hWinSta)
1767{
1768 dprintf(("USER32:CloseWindowStation(%08x) not implemented.\n",
1769 hWinSta));
1770
1771 return (FALSE);
1772}
1773/*****************************************************************************
1774 * Name : HDESK WIN32API CreateDesktopA
1775 * Purpose : The CreateDesktop function creates a new desktop on the window
1776 * station associated with the calling process.
1777 * Parameters: LPCTSTR lpszDesktop name of the new desktop
1778 * LPCTSTR lpszDevice name of display device to assign to the desktop
1779 * LPDEVMODE pDevMode reserved; must be NULL
1780 * DWORD dwFlags flags to control interaction with other applications
1781 * DWORD dwDesiredAccess specifies access of returned handle
1782 * LPSECURITY_ATTRIBUTES lpsa specifies security attributes of the desktop
1783 * Variables :
1784 * Result : If the function succeeds, the return value is a handle of the
1785 * newly created desktop.
1786 * If the function fails, the return value is NULL. To get extended
1787 * error information, call GetLastError.
1788 * Remark :
1789 * Status : UNTESTED STUB
1790 *
1791 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1792 *****************************************************************************/
1793HDESK WIN32API CreateDesktopA(LPCTSTR lpszDesktop,
1794 LPCTSTR lpszDevice,
1795 LPDEVMODEA pDevMode,
1796 DWORD dwFlags,
1797 DWORD dwDesiredAccess,
1798 LPSECURITY_ATTRIBUTES lpsa)
1799{
1800 dprintf(("USER32:CreateDesktopA(%s,%s,%08xh,%08xh,%08xh,%08x) not implemented.\n",
1801 lpszDesktop,
1802 lpszDevice,
1803 pDevMode,
1804 dwFlags,
1805 dwDesiredAccess,
1806 lpsa));
1807
1808 return (NULL);
1809}
1810/*****************************************************************************
1811 * Name : HDESK WIN32API CreateDesktopW
1812 * Purpose : The CreateDesktop function creates a new desktop on the window
1813 * station associated with the calling process.
1814 * Parameters: LPCTSTR lpszDesktop name of the new desktop
1815 * LPCTSTR lpszDevice name of display device to assign to the desktop
1816 * LPDEVMODE pDevMode reserved; must be NULL
1817 * DWORD dwFlags flags to control interaction with other applications
1818 * DWORD dwDesiredAccess specifies access of returned handle
1819 * LPSECURITY_ATTRIBUTES lpsa specifies security attributes of the desktop
1820 * Variables :
1821 * Result : If the function succeeds, the return value is a handle of the
1822 * newly created desktop.
1823 * If the function fails, the return value is NULL. To get extended
1824 * error information, call GetLastError.
1825 * Remark :
1826 * Status : UNTESTED STUB
1827 *
1828 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1829 *****************************************************************************/
1830HDESK WIN32API CreateDesktopW(LPCTSTR lpszDesktop,
1831 LPCTSTR lpszDevice,
1832 LPDEVMODEW pDevMode,
1833 DWORD dwFlags,
1834 DWORD dwDesiredAccess,
1835 LPSECURITY_ATTRIBUTES lpsa)
1836{
1837 dprintf(("USER32:CreateDesktopW(%s,%s,%08xh,%08xh,%08xh,%08x) not implemented.\n",
1838 lpszDesktop,
1839 lpszDevice,
1840 pDevMode,
1841 dwFlags,
1842 dwDesiredAccess,
1843 lpsa));
1844
1845 return (NULL);
1846}
1847/*****************************************************************************
1848 * Name : HWINSTA WIN32API CreateWindowStationA
1849 * Purpose : The CreateWindowStation function creates a window station object.
1850 * It returns a handle that can be used to access the window station.
1851 * A window station is a secure object that contains a set of global
1852 * atoms, a clipboard, and a set of desktop objects.
1853 * Parameters: LPTSTR lpwinsta name of the new window station
1854 * DWORD dwReserved reserved; must be NULL
1855 * DWORD dwDesiredAccess specifies access of returned handle
1856 * LPSECURITY_ATTRIBUTES lpsa specifies security attributes of the window station
1857 * Variables :
1858 * Result : If the function succeeds, the return value is the handle to the
1859 * newly created window station.
1860 * If the function fails, the return value is NULL. To get extended
1861 * error information, call GetLastError.
1862 * Remark :
1863 * Status : UNTESTED STUB
1864 *
1865 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1866 *****************************************************************************/
1867HWINSTA WIN32API CreateWindowStationA(LPTSTR lpWinSta,
1868 DWORD dwReserved,
1869 DWORD dwDesiredAccess,
1870 LPSECURITY_ATTRIBUTES lpsa)
1871{
1872 dprintf(("USER32:CreateWindowStationA(%s,%08xh,%08xh,%08x) not implemented.\n",
1873 lpWinSta,
1874 dwReserved,
1875 dwDesiredAccess,
1876 lpsa));
1877
1878 return (NULL);
1879}
1880/*****************************************************************************
1881 * Name : HWINSTA WIN32API CreateWindowStationW
1882 * Purpose : The CreateWindowStation function creates a window station object.
1883 * It returns a handle that can be used to access the window station.
1884 * A window station is a secure object that contains a set of global
1885 * atoms, a clipboard, and a set of desktop objects.
1886 * Parameters: LPTSTR lpwinsta name of the new window station
1887 * DWORD dwReserved reserved; must be NULL
1888 * DWORD dwDesiredAccess specifies access of returned handle
1889 * LPSECURITY_ATTRIBUTES lpsa specifies security attributes of the window station
1890 * Variables :
1891 * Result : If the function succeeds, the return value is the handle to the
1892 * newly created window station.
1893 * If the function fails, the return value is NULL. To get extended
1894 * error information, call GetLastError.
1895 * Remark :
1896 * Status : UNTESTED STUB
1897 *
1898 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1899 *****************************************************************************/
1900HWINSTA WIN32API CreateWindowStationW(LPWSTR lpWinSta,
1901 DWORD dwReserved,
1902 DWORD dwDesiredAccess,
1903 LPSECURITY_ATTRIBUTES lpsa)
1904{
1905 dprintf(("USER32:CreateWindowStationW(%s,%08xh,%08xh,%08x) not implemented.\n",
1906 lpWinSta,
1907 dwReserved,
1908 dwDesiredAccess,
1909 lpsa));
1910
1911 return (NULL);
1912}
1913/*****************************************************************************
1914 * Name : BOOL WIN32API EnumDesktopWindows
1915 * Purpose : The EnumDesktopWindows function enumerates all windows in a
1916 * desktop by passing the handle of each window, in turn, to an
1917 * application-defined callback function.
1918 * Parameters: HDESK hDesktop handle of desktop to enumerate
1919 * WNDENUMPROC lpfn points to application's callback function
1920 * LPARAM lParam 32-bit value to pass to the callback function
1921 * Variables :
1922 * Result : If the function succeeds, the return value is TRUE.
1923 * If the function fails, the return value is FALSE. To get
1924 * extended error information, call GetLastError.
1925 * Remark :
1926 * Status : UNTESTED STUB
1927 *
1928 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1929 *****************************************************************************/
1930BOOL WIN32API EnumDesktopWindows(HDESK hDesktop,
1931 WNDENUMPROC lpfn,
1932 LPARAM lParam)
1933{
1934 dprintf(("USER32:EnumDesktopWindows (%08xh,%08xh,%08x) not implemented.\n",
1935 hDesktop,
1936 lpfn,
1937 lParam));
1938
1939 return (FALSE);
1940}
1941/*****************************************************************************
1942 * Name : BOOL WIN32API EnumDesktopsA
1943 * Purpose : The EnumDesktops function enumerates all desktops in the window
1944 * station assigned to the calling process. The function does so by
1945 * passing the name of each desktop, in turn, to an application-
1946 * defined callback function.
1947 * Parameters: HWINSTA hwinsta handle of window station to enumerate
1948 * DESKTOPENUMPROC lpEnumFunc points to application's callback function
1949 * LPARAM lParam 32-bit value to pass to the callback function
1950 * Variables :
1951 * Result : If the function succeeds, the return value is TRUE.
1952 * If the function fails, the return value is FALSE. To get extended
1953 * error information, call GetLastError.
1954 * Remark :
1955 * Status : UNTESTED STUB
1956 *
1957 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1958 *****************************************************************************/
1959BOOL WIN32API EnumDesktopsA(HWINSTA hWinSta,
1960 DESKTOPENUMPROCA lpEnumFunc,
1961 LPARAM lParam)
1962{
1963 dprintf(("USER32:EnumDesktopsA (%08xh,%08xh,%08x) not implemented.\n",
1964 hWinSta,
1965 lpEnumFunc,
1966 lParam));
1967
1968 return (FALSE);
1969}
1970/*****************************************************************************
1971 * Name : BOOL WIN32API EnumDesktopsW
1972 * Purpose : The EnumDesktops function enumerates all desktops in the window
1973 * station assigned to the calling process. The function does so by
1974 * passing the name of each desktop, in turn, to an application-
1975 * defined callback function.
1976 * Parameters: HWINSTA hwinsta handle of window station to enumerate
1977 * DESKTOPENUMPROC lpEnumFunc points to application's callback function
1978 * LPARAM lParam 32-bit value to pass to the callback function
1979 * Variables :
1980 * Result : If the function succeeds, the return value is TRUE.
1981 * If the function fails, the return value is FALSE. To get extended
1982 * error information, call GetLastError.
1983 * Remark :
1984 * Status : UNTESTED STUB
1985 *
1986 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1987 *****************************************************************************/
1988BOOL WIN32API EnumDesktopsW(HWINSTA hWinSta,
1989 DESKTOPENUMPROCW lpEnumFunc,
1990 LPARAM lParam)
1991{
1992 dprintf(("USER32:EnumDesktopsW (%08xh,%08xh,%08x) not implemented.\n",
1993 hWinSta,
1994 lpEnumFunc,
1995 lParam));
1996
1997 return (FALSE);
1998}
1999/*****************************************************************************
2000 * Name : BOOL WIN32API EnumWindowStationsA
2001 * Purpose : The EnumWindowStations function enumerates all windowstations
2002 * in the system by passing the name of each window station, in
2003 * turn, to an application-defined callback function.
2004 * Parameters:
2005 * Variables : WINSTAENUMPROC lpEnumFunc points to application's callback function
2006 * LPARAM lParam 32-bit value to pass to the callback function
2007 * Result : If the function succeeds, the return value is TRUE.
2008 * If the function fails the return value is FALSE. To get extended
2009 * error information, call GetLastError.
2010 * Remark :
2011 * Status : UNTESTED STUB
2012 *
2013 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2014 *****************************************************************************/
2015BOOL WIN32API EnumWindowStationsA(WINSTAENUMPROCA lpEnumFunc,
2016 LPARAM lParam)
2017{
2018 dprintf(("USER32:EnumWindowStationsA (%08xh,%08x) not implemented.\n",
2019 lpEnumFunc,
2020 lParam));
2021
2022 return (FALSE);
2023}
2024/*****************************************************************************
2025 * Name : BOOL WIN32API EnumWindowStationsW
2026 * Purpose : The EnumWindowStations function enumerates all windowstations
2027 * in the system by passing the name of each window station, in
2028 * turn, to an application-defined callback function.
2029 * Parameters:
2030 * Variables : WINSTAENUMPROC lpEnumFunc points to application's callback function
2031 * LPARAM lParam 32-bit value to pass to the callback function
2032 * Result : If the function succeeds, the return value is TRUE.
2033 * If the function fails the return value is FALSE. To get extended
2034 * error information, call GetLastError.
2035 * Remark :
2036 * Status : UNTESTED STUB
2037 *
2038 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2039 *****************************************************************************/
2040BOOL WIN32API EnumWindowStationsW(WINSTAENUMPROCW lpEnumFunc,
2041 LPARAM lParam)
2042{
2043 dprintf(("USER32:EnumWindowStationsW (%08xh,%08x) not implemented.\n",
2044 lpEnumFunc,
2045 lParam));
2046
2047 return (FALSE);
2048}
2049/*****************************************************************************
2050 * Name : HWINSTA WIN32API GetProcessWindowStation
2051 * Purpose : The GetProcessWindowStation function returns a handle of the
2052 * window station associated with the calling process.
2053 * Parameters:
2054 * Variables :
2055 * Result : If the function succeeds, the return value is a handle of the
2056 * window station associated with the calling process.
2057 * If the function fails, the return value is NULL. This can occur
2058 * if the calling process is not an application written for Windows
2059 * NT. To get extended error information, call GetLastError.
2060 * Remark :
2061 * Status : UNTESTED STUB
2062 *
2063 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2064 *****************************************************************************/
2065HWINSTA WIN32API GetProcessWindowStation(VOID)
2066{
2067 dprintf(("USER32:GetProcessWindowStation () not implemented.\n"));
2068
2069 return (NULL);
2070}
2071/*****************************************************************************
2072 * Name : BOOL WIN32API GetUserObjectInformationA
2073 * Purpose : The GetUserObjectInformation function returns information about
2074 * a window station or desktop object.
2075 * Parameters: HANDLE hObj handle of object to get information for
2076 * int nIndex type of information to get
2077 * PVOID pvInfo points to buffer that receives the information
2078 * DWORD nLength size, in bytes, of pvInfo buffer
2079 * LPDWORD lpnLengthNeeded receives required size, in bytes, of pvInfo buffer
2080 * Variables :
2081 * Result : If the function succeeds, the return value is TRUE.
2082 * If the function fails, the return value is FALSE. To get extended
2083 * error information, call GetLastError.
2084 * Remark :
2085 * Status : UNTESTED STUB
2086 *
2087 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2088 *****************************************************************************/
2089BOOL WIN32API GetUserObjectInformationA(HANDLE hObj,
2090 int nIndex,
2091 PVOID pvInfo,
2092 DWORD nLength,
2093 LPDWORD lpnLengthNeeded)
2094{
2095 dprintf(("USER32:GetUserObjectInformationA (%08xh,%08xh,%08xh,%u,%08x) not implemented.\n",
2096 hObj,
2097 nIndex,
2098 pvInfo,
2099 nLength,
2100 lpnLengthNeeded));
2101
2102 return (FALSE);
2103}
2104/*****************************************************************************
2105 * Name : BOOL WIN32API GetUserObjectInformationW
2106 * Purpose : The GetUserObjectInformation function returns information about
2107 * a window station or desktop object.
2108 * Parameters: HANDLE hObj handle of object to get information for
2109 * int nIndex type of information to get
2110 * PVOID pvInfo points to buffer that receives the information
2111 * DWORD nLength size, in bytes, of pvInfo buffer
2112 * LPDWORD lpnLengthNeeded receives required size, in bytes, of pvInfo buffer
2113 * Variables :
2114 * Result : If the function succeeds, the return value is TRUE.
2115 * If the function fails, the return value is FALSE. To get extended
2116 * error information, call GetLastError.
2117 * Remark :
2118 * Status : UNTESTED STUB
2119 *
2120 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2121 *****************************************************************************/
2122BOOL WIN32API GetUserObjectInformationW(HANDLE hObj,
2123 int nIndex,
2124 PVOID pvInfo,
2125 DWORD nLength,
2126 LPDWORD lpnLengthNeeded)
2127{
2128 dprintf(("USER32:GetUserObjectInformationW (%08xh,%08xh,%08xh,%u,%08x) not implemented.\n",
2129 hObj,
2130 nIndex,
2131 pvInfo,
2132 nLength,
2133 lpnLengthNeeded));
2134
2135 return (FALSE);
2136}
2137/*****************************************************************************
2138 * Name : BOOL WIN32API GetUserObjectSecurity
2139 * Purpose : The GetUserObjectSecurity function retrieves security information
2140 * for the specified user object.
2141 * Parameters: HANDLE hObj handle of user object
2142 * SECURITY_INFORMATION * pSIRequested address of requested security information
2143 * LPSECURITY_DESCRIPTOR pSID address of security descriptor
2144 * DWORD nLength size of buffer for security descriptor
2145 * LPDWORD lpnLengthNeeded address of required size of buffer
2146 * Variables :
2147 * Result : If the function succeeds, the return value is TRUE.
2148 * If the function fails, the return value is FALSE. To get extended
2149 * error information, call GetLastError.
2150 * Remark :
2151 * Status : UNTESTED STUB
2152 *
2153 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2154 *****************************************************************************/
2155BOOL WIN32API GetUserObjectSecurity(HANDLE hObj,
2156 PSECURITY_INFORMATION pSIRequested,
2157 PSECURITY_DESCRIPTOR pSID,
2158 DWORD nLength,
2159 LPDWORD lpnLengthNeeded)
2160{
2161 dprintf(("USER32:GetUserObjectSecurity (%08xh,%08xh,%08xh,%u,%08x) not implemented.\n",
2162 hObj,
2163 pSIRequested,
2164 pSID,
2165 nLength,
2166 lpnLengthNeeded));
2167
2168 return (FALSE);
2169}
2170/*****************************************************************************
2171 * Name : HDESK WIN32API OpenDesktopA
2172 * Purpose : The OpenDesktop function returns a handle to an existing desktop.
2173 * A desktop is a secure object contained within a window station
2174 * object. A desktop has a logical display surface and contains
2175 * windows, menus and hooks.
2176 * Parameters: LPCTSTR lpszDesktopName name of the desktop to open
2177 * DWORD dwFlags flags to control interaction with other applications
2178 * BOOL fInherit specifies whether returned handle is inheritable
2179 * DWORD dwDesiredAccess specifies access of returned handle
2180 * Variables :
2181 * Result : If the function succeeds, the return value is the handle to the
2182 * opened desktop.
2183 * If the function fails, the return value is NULL. To get extended
2184 * error information, call GetLastError.
2185 * Remark :
2186 * Status : UNTESTED STUB
2187 *
2188 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2189 *****************************************************************************/
2190HDESK WIN32API OpenDesktopA(LPCTSTR lpszDesktopName,
2191 DWORD dwFlags,
2192 BOOL fInherit,
2193 DWORD dwDesiredAccess)
2194{
2195 dprintf(("USER32:OpenDesktopA (%s,%08xh,%08xh,%08x) not implemented.\n",
2196 lpszDesktopName,
2197 dwFlags,
2198 fInherit,
2199 dwDesiredAccess));
2200
2201 return (NULL);
2202}
2203/*****************************************************************************
2204 * Name : HDESK WIN32API OpenDesktopW
2205 * Purpose : The OpenDesktop function returns a handle to an existing desktop.
2206 * A desktop is a secure object contained within a window station
2207 * object. A desktop has a logical display surface and contains
2208 * windows, menus and hooks.
2209 * Parameters: LPCTSTR lpszDesktopName name of the desktop to open
2210 * DWORD dwFlags flags to control interaction with other applications
2211 * BOOL fInherit specifies whether returned handle is inheritable
2212 * DWORD dwDesiredAccess specifies access of returned handle
2213 * Variables :
2214 * Result : If the function succeeds, the return value is the handle to the
2215 * opened desktop.
2216 * If the function fails, the return value is NULL. To get extended
2217 * error information, call GetLastError.
2218 * Remark :
2219 * Status : UNTESTED STUB
2220 *
2221 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2222 *****************************************************************************/
2223HDESK WIN32API OpenDesktopW(LPCTSTR lpszDesktopName,
2224 DWORD dwFlags,
2225 BOOL fInherit,
2226 DWORD dwDesiredAccess)
2227{
2228 dprintf(("USER32:OpenDesktopW (%s,%08xh,%08xh,%08x) not implemented.\n",
2229 lpszDesktopName,
2230 dwFlags,
2231 fInherit,
2232 dwDesiredAccess));
2233
2234 return (NULL);
2235}
2236/*****************************************************************************
2237 * Name : HDESK WIN32API OpenInputDesktop
2238 * Purpose : The OpenInputDesktop function returns a handle to the desktop
2239 * that receives user input. The input desktop is a desktop on the
2240 * window station associated with the logged-on user.
2241 * Parameters: DWORD dwFlags flags to control interaction with other applications
2242 * BOOL fInherit specifies whether returned handle is inheritable
2243 * DWORD dwDesiredAccess specifies access of returned handle
2244 * Variables :
2245 * Result : If the function succeeds, the return value is a handle of the
2246 * desktop that receives user input.
2247 * If the function fails, the return value is NULL. To get extended
2248 * error information, call GetLastError.
2249 * Remark :
2250 * Status : UNTESTED STUB
2251 *
2252 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2253 *****************************************************************************/
2254HDESK WIN32API OpenInputDesktop(DWORD dwFlags,
2255 BOOL fInherit,
2256 DWORD dwDesiredAccess)
2257{
2258 dprintf(("USER32:OpenInputDesktop (%08xh,%08xh,%08x) not implemented.\n",
2259 dwFlags,
2260 fInherit,
2261 dwDesiredAccess));
2262
2263 return (NULL);
2264}
2265/*****************************************************************************
2266 * Name : HWINSTA WIN32API OpenWindowStationA
2267 * Purpose : The OpenWindowStation function returns a handle to an existing
2268 * window station.
2269 * Parameters: LPCTSTR lpszWinStaName name of the window station to open
2270 * BOOL fInherit specifies whether returned handle is inheritable
2271 * DWORD dwDesiredAccess specifies access of returned handle
2272 * Variables :
2273 * Result : If the function succeeds, the return value is the handle to the
2274 * specified window station.
2275 * If the function fails, the return value is NULL. To get extended
2276 * error information, call GetLastError.
2277 * Remark :
2278 * Status : UNTESTED STUB
2279 *
2280 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2281 *****************************************************************************/
2282HWINSTA WIN32API OpenWindowStationA(LPCTSTR lpszWinStaName,
2283 BOOL fInherit,
2284 DWORD dwDesiredAccess)
2285{
2286 dprintf(("USER32:OpenWindowStatieonA (%s,%08xh,%08x) not implemented.\n",
2287 lpszWinStaName,
2288 fInherit,
2289 dwDesiredAccess));
2290
2291 return (NULL);
2292}
2293/*****************************************************************************
2294 * Name : HWINSTA WIN32API OpenWindowStationW
2295 * Purpose : The OpenWindowStation function returns a handle to an existing
2296 * window station.
2297 * Parameters: LPCTSTR lpszWinStaName name of the window station to open
2298 * BOOL fInherit specifies whether returned handle is inheritable
2299 * DWORD dwDesiredAccess specifies access of returned handle
2300 * Variables :
2301 * Result : If the function succeeds, the return value is the handle to the
2302 * specified window station.
2303 * If the function fails, the return value is NULL. To get extended
2304 * error information, call GetLastError.
2305
2306
2307 * Remark :
2308 * Status : UNTESTED STUB
2309 *
2310 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2311 *****************************************************************************/
2312HWINSTA WIN32API OpenWindowStationW(LPCTSTR lpszWinStaName,
2313 BOOL fInherit,
2314 DWORD dwDesiredAccess)
2315{
2316 dprintf(("USER32:OpenWindowStatieonW (%s,%08xh,%08x) not implemented.\n",
2317 lpszWinStaName,
2318 fInherit,
2319 dwDesiredAccess));
2320
2321 return (NULL);
2322}
2323/*****************************************************************************
2324 * Name : BOOL WIN32API SetProcessWindowStation
2325 * Purpose : The SetProcessWindowStation function assigns a window station
2326 * to the calling process. This enables the process to access
2327 * objects in the window station such as desktops, the clipboard,
2328 * and global atoms. All subsequent operations on the window station
2329 * use the access rights granted to hWinSta.
2330 * Parameters:
2331 * Variables :
2332 * Result : If the function succeeds, the return value is TRUE.
2333 * If the function fails, the return value is FALSE. To get extended
2334 * error information, call GetLastError.
2335 * Remark :
2336 * Status : UNTESTED STUB
2337 *
2338 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2339 *****************************************************************************/
2340BOOL WIN32API SetProcessWindowStation(HWINSTA hWinSta)
2341{
2342 dprintf(("USER32:SetProcessWindowStation (%08x) not implemented.\n",
2343 hWinSta));
2344
2345 return (FALSE);
2346}
2347/*****************************************************************************
2348 * Name : BOOL WIN32API SetThreadDesktop
2349 * Purpose : The SetThreadDesktop function assigns a desktop to the calling
2350 * thread. All subsequent operations on the desktop use the access
2351 * rights granted to hDesk.
2352 * Parameters: HDESK hDesk handle of the desktop to assign to this thread
2353 * Variables :
2354 * Result : If the function succeeds, the return value is TRUE.
2355 * If the function fails, the return value is FALSE. To get extended
2356 * error information, call GetLastError.
2357 * Remark :
2358 * Status : UNTESTED STUB
2359 *
2360 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2361 *****************************************************************************/
2362BOOL WIN32API SetThreadDesktop(HDESK hDesktop)
2363{
2364 dprintf(("USER32:SetThreadDesktop (%08x) not implemented.\n",
2365 hDesktop));
2366
2367 return (FALSE);
2368}
2369/*****************************************************************************
2370 * Name : BOOL WIN32API SetUserObjectInformationA
2371 * Purpose : The SetUserObjectInformation function sets information about a
2372 * window station or desktop object.
2373 * Parameters: HANDLE hObject handle of the object for which to set information
2374 * int nIndex type of information to set
2375 * PVOID lpvInfo points to a buffer that contains the information
2376 * DWORD cbInfo size, in bytes, of lpvInfo buffer
2377 * Variables :
2378 * Result : If the function succeeds, the return value is TRUE.
2379 * If the function fails the return value is FALSE. To get extended
2380 * error information, call GetLastError.
2381 * Remark :
2382 * Status : UNTESTED STUB
2383 *
2384 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2385 *****************************************************************************/
2386BOOL WIN32API SetUserObjectInformationA(HANDLE hObject,
2387 int nIndex,
2388 PVOID lpvInfo,
2389 DWORD cbInfo)
2390{
2391 dprintf(("USER32:SetUserObjectInformationA (%08xh,%u,%08xh,%08x) not implemented.\n",
2392 hObject,
2393 nIndex,
2394 lpvInfo,
2395 cbInfo));
2396
2397 return (FALSE);
2398}
2399/*****************************************************************************
2400 * Name : BOOL WIN32API SetUserObjectInformationW
2401 * Purpose : The SetUserObjectInformation function sets information about a
2402 * window station or desktop object.
2403 * Parameters: HANDLE hObject handle of the object for which to set information
2404 * int nIndex type of information to set
2405 * PVOID lpvInfo points to a buffer that contains the information
2406 * DWORD cbInfo size, in bytes, of lpvInfo buffer
2407 * Variables :
2408 * Result : If the function succeeds, the return value is TRUE.
2409 * If the function fails the return value is FALSE. To get extended
2410 * error information, call GetLastError.
2411 * Remark :
2412 * Status : UNTESTED STUB
2413 *
2414 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2415 *****************************************************************************/
2416BOOL WIN32API SetUserObjectInformationW(HANDLE hObject,
2417 int nIndex,
2418 PVOID lpvInfo,
2419 DWORD cbInfo)
2420{
2421 dprintf(("USER32:SetUserObjectInformationW (%08xh,%u,%08xh,%08x) not implemented.\n",
2422 hObject,
2423 nIndex,
2424 lpvInfo,
2425 cbInfo));
2426
2427 return (FALSE);
2428}
2429/*****************************************************************************
2430 * Name : BOOL WIN32API SetUserObjectSecurity
2431 * Purpose : The SetUserObjectSecurity function sets the security of a user
2432 * object. This can be, for example, a window or a DDE conversation
2433 * Parameters: HANDLE hObject handle of user object
2434 * SECURITY_INFORMATION * psi address of security information
2435 * LPSECURITY_DESCRIPTOR psd address of security descriptor
2436 * Variables :
2437 * Result : If the function succeeds, the return value is TRUE.
2438 * If the function fails, the return value is FALSE. To get extended
2439 * error information, call GetLastError.
2440 * Remark :
2441 * Status : UNTESTED STUB
2442 *
2443 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2444 *****************************************************************************/
2445BOOL WIN32API SetUserObjectSecurity(HANDLE hObject,
2446 PSECURITY_INFORMATION psi,
2447 PSECURITY_DESCRIPTOR psd)
2448{
2449 dprintf(("USER32:SetUserObjectSecuroty (%08xh,%08xh,%08x) not implemented.\n",
2450 hObject,
2451 psi,
2452 psd));
2453
2454 return (FALSE);
2455}
2456/*****************************************************************************
2457 * Name : BOOL WIN32API SwitchDesktop
2458 * Purpose : The SwitchDesktop function makes a desktop visible and activates
2459 * it. This enables the desktop to receive input from the user. The
2460 * calling process must have DESKTOP_SWITCHDESKTOP access to the
2461 * desktop for the SwitchDesktop function to succeed.
2462 * Parameters:
2463 * Variables :
2464 * Result : If the function succeeds, the return value is TRUE.
2465 * If the function fails, the return value is FALSE. To get extended
2466 * error information, call GetLastError.
2467 * Remark :
2468 * Status : UNTESTED STUB
2469 *
2470 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2471 *****************************************************************************/
2472BOOL WIN32API SwitchDesktop(HDESK hDesktop)
2473{
2474 dprintf(("USER32:SwitchDesktop (%08x) not implemented.\n",
2475 hDesktop));
2476
2477 return (FALSE);
2478}
2479
2480/* Debugging Functions */
2481
2482/*****************************************************************************
2483 * Name : VOID WIN32API SetDebugErrorLevel
2484 * Purpose : The SetDebugErrorLevel function sets the minimum error level at
2485 * which Windows will generate debugging events and pass them to a debugger.
2486 * Parameters: DWORD dwLevel debugging error level
2487 * Variables :
2488 * Result :
2489 * Remark :
2490 * Status : UNTESTED STUB
2491 *
2492 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2493 *****************************************************************************/
2494VOID WIN32API SetDebugErrorLevel(DWORD dwLevel)
2495{
2496 dprintf(("USER32:SetDebugErrorLevel (%08x) not implemented.\n",
2497 dwLevel));
2498}
2499
2500/* Drag'n'drop */
2501
2502/*****************************************************************************
2503 * Name : BOOL WIN32API DragObject
2504 * Purpose : Unknown
2505 * Parameters: Unknown
2506 * Variables :
2507 * Result :
2508 * Remark :
2509 * Status : UNTESTED UNKNOWN STUB
2510 *
2511 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2512 *****************************************************************************/
2513DWORD WIN32API DragObject(HWND x1,HWND x2,UINT x3,DWORD x4,HCURSOR x5)
2514{
2515 dprintf(("USER32: DragObject(%08x,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
2516 x1,
2517 x2,
2518 x3,
2519 x4,
2520 x5));
2521
2522 return (FALSE); /* default */
2523}
2524
2525/* Unknown */
2526
2527/*****************************************************************************
2528 * Name : BOOL WIN32API SetShellWindow
2529 * Purpose : Unknown
2530 * Parameters: Unknown
2531 * Variables :
2532 * Result :
2533 * Remark :
2534 * Status : UNTESTED UNKNOWN STUB
2535 *
2536 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2537 *****************************************************************************/
2538BOOL WIN32API SetShellWindow(DWORD x1)
2539{
2540 dprintf(("USER32: SetShellWindow(%08x) not implemented.\n",
2541 x1));
2542
2543 return (FALSE); /* default */
2544}
2545/*****************************************************************************
2546 * Name : BOOL WIN32API PlaySoundEvent
2547 * Purpose : Unknown
2548 * Parameters: Unknown
2549 * Variables :
2550 * Result :
2551 * Remark :
2552 * Status : UNTESTED UNKNOWN STUB
2553 *
2554 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2555 *****************************************************************************/
2556BOOL WIN32API PlaySoundEvent(DWORD x1)
2557{
2558 dprintf(("USER32: PlaySoundEvent(%08x) not implemented.\n",
2559 x1));
2560
2561 return (FALSE); /* default */
2562}
2563/*****************************************************************************
2564 * Name : BOOL WIN32API SetSysColorsTemp
2565 * Purpose : Unknown
2566 * Parameters: Unknown
2567 * Variables :
2568 * Result :
2569 * Remark :
2570 * Status : UNTESTED UNKNOWN STUB
2571 *
2572 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2573 *****************************************************************************/
2574BOOL WIN32API SetSysColorsTemp(void)
2575{
2576 dprintf(("USER32: SetSysColorsTemp() not implemented.\n"));
2577
2578 return (FALSE); /* default */
2579}
2580/*****************************************************************************
2581 * Name : BOOL WIN32API RegisterNetworkCapabilities
2582 * Purpose : Unknown
2583 * Parameters: Unknown
2584 * Variables :
2585 * Result :
2586 * Remark :
2587 * Status : UNTESTED UNKNOWN STUB
2588 *
2589 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2590 *****************************************************************************/
2591BOOL WIN32API RegisterNetworkCapabilities(DWORD x1,
2592 DWORD x2)
2593{
2594 dprintf(("USER32: RegisterNetworkCapabilities(%08xh,%08xh) not implemented.\n",
2595 x1,
2596 x2));
2597
2598 return (FALSE); /* default */
2599}
2600/*****************************************************************************
2601 * Name : BOOL WIN32API EndTask
2602 * Purpose : Unknown
2603 * Parameters: Unknown
2604 * Variables :
2605 * Result :
2606 * Remark :
2607 * Status : UNTESTED UNKNOWN STUB
2608 *
2609 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2610 *****************************************************************************/
2611BOOL WIN32API EndTask(DWORD x1,
2612 DWORD x2,
2613 DWORD x3)
2614{
2615 dprintf(("USER32: EndTask(%08xh,%08xh,%08xh) not implemented.\n",
2616 x1,
2617 x2,
2618 x3));
2619
2620 return (FALSE); /* default */
2621}
2622/*****************************************************************************
2623 * Name : BOOL WIN32API GetNextQueueWindow
2624 * Purpose : Unknown
2625 * Parameters: Unknown
2626 * Variables :
2627 * Result :
2628 * Remark :
2629 * Status : UNTESTED UNKNOWN STUB
2630 *
2631 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2632 *****************************************************************************/
2633BOOL WIN32API GetNextQueueWindow(DWORD x1,
2634 DWORD x2)
2635{
2636 dprintf(("USER32: GetNextQueueWindow(%08xh,%08xh) not implemented.\n",
2637 x1,
2638 x2));
2639
2640 return (FALSE); /* default */
2641}
2642/*****************************************************************************
2643 * Name : BOOL WIN32API YieldTask
2644 * Purpose : Unknown
2645 * Parameters: Unknown
2646 * Variables :
2647 * Result :
2648 * Remark :
2649 * Status : UNTESTED UNKNOWN STUB
2650 *
2651 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2652 *****************************************************************************/
2653BOOL WIN32API YieldTask(void)
2654{
2655 dprintf(("USER32: YieldTask() not implemented.\n"));
2656
2657 return (FALSE); /* default */
2658}
2659/*****************************************************************************
2660 * Name : BOOL WIN32API WinOldAppHackoMatic
2661 * Purpose : Unknown
2662 * Parameters: Unknown
2663 * Variables :
2664 * Result :
2665 * Remark :
2666 * Status : UNTESTED UNKNOWN STUB
2667 *
2668 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2669 *****************************************************************************/
2670BOOL WIN32API WinOldAppHackoMatic(DWORD x1)
2671{
2672 dprintf(("USER32: WinOldAppHackoMatic(%08x) not implemented.\n",
2673 x1));
2674
2675 return (FALSE); /* default */
2676}
2677/*****************************************************************************
2678 * Name : BOOL WIN32API RegisterSystemThread
2679 * Purpose : Unknown
2680 * Parameters: Unknown
2681 * Variables :
2682 * Result :
2683 * Remark :
2684 * Status : UNTESTED UNKNOWN STUB
2685 *
2686 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2687 *****************************************************************************/
2688BOOL WIN32API RegisterSystemThread(DWORD x1,
2689 DWORD x2)
2690{
2691 dprintf(("USER32: RegisterSystemThread(%08xh,%08xh) not implemented.\n",
2692 x1,
2693 x2));
2694
2695 return (FALSE); /* default */
2696}
2697/*****************************************************************************
2698 * Name : BOOL WIN32API IsHungThread
2699 * Purpose : Unknown
2700 * Parameters: Unknown
2701 * Variables :
2702 * Result :
2703 * Remark :
2704 * Status : UNTESTED UNKNOWN STUB
2705 *
2706 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2707 *****************************************************************************/
2708BOOL WIN32API IsHungThread(DWORD x1)
2709{
2710 dprintf(("USER32: IsHungThread(%08xh) not implemented.\n",
2711 x1));
2712
2713 return (FALSE); /* default */
2714}
2715/*****************************************************************************
2716 * Name : BOOL WIN32API UserSignalProc
2717 * Purpose : Unknown
2718 * Parameters: Unknown
2719 * Variables :
2720 * Result :
2721 * Remark :
2722 * Status : UNTESTED UNKNOWN STUB
2723 *
2724 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2725 *****************************************************************************/
2726BOOL WIN32API UserSignalProc(DWORD x1,
2727 DWORD x2,
2728 DWORD x3,
2729 DWORD x4)
2730{
2731 dprintf(("USER32: SysErrorBox(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
2732 x1,
2733 x2,
2734 x3,
2735 x4));
2736
2737 return (FALSE); /* default */
2738}
2739/*****************************************************************************
2740 * Name : BOOL WIN32API GetShellWindow
2741 * Purpose : Unknown
2742 * Parameters: Unknown
2743 * Variables :
2744 * Result :
2745 * Remark :
2746 * Status : UNTESTED UNKNOWN STUB
2747 *
2748 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
2749 *****************************************************************************/
2750HWND WIN32API GetShellWindow(void)
2751{
2752 dprintf(("USER32: GetShellWindow() not implemented.\n"));
2753
2754 return (0); /* default */
2755}
2756/***********************************************************************
2757 * RegisterTasklist32 [USER32.436]
2758 */
2759DWORD WIN32API RegisterTasklist (DWORD x)
2760{
2761 dprintf(("USER32: RegisterTasklist(%08xh) not implemented.\n",
2762 x));
2763
2764 return TRUE;
2765}
2766/***********************************************************************
2767 * SetLogonNotifyWindow (USER32.486)
2768 */
2769DWORD WIN32API SetLogonNotifyWindow(HWINSTA hwinsta,HWND hwnd)
2770{
2771 dprintf(("USER32: SetLogonNotifyWindow - empty stub!"));
2772
2773 return 1;
2774}
2775
Note: See TracBrowser for help on using the repository browser.