source: trunk/src/user32/new/user32.cpp@ 395

Last change on this file since 395 was 395, checked in by sandervl, 26 years ago

* empty log message *

File size: 131.9 KB
Line 
1/* $Id: user32.cpp,v 1.12 1999-07-25 17:47:25 sandervl 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 *
11 *
12 * Project Odin Software License can be found in LICENSE.TXT
13 *
14 */
15/*****************************************************************************
16 * Name : USER32.CPP
17 * Purpose : This module maps all Win32 functions contained in USER32.DLL
18 * to their OS/2-specific counterparts as far as possible.
19 *****************************************************************************/
20
21/*
22 CB:
23 - don't replace GDI functions (hdc), only convert window handle
24 - always use OSRECTL for PM functions
25 - POINT == POINTL
26*/
27
28#include <os2win.h>
29#include "misc.h"
30
31#include "user32.h"
32#include "icon.h"
33#include "usrcall.h"
34#include "syscolor.h"
35
36#include <wchar.h>
37#include <stdlib.h>
38#include <string.h>
39#include <oslibwin.h>
40#include <win32wnd.h>
41
42//undocumented stuff
43// WIN32API CalcChildScroll
44// WIN32API CascadeChildWindows
45// WIN32API ClientThreadConnect
46// WIN32API DragObject
47// WIN32API DrawFrame
48// WIN32API EditWndProc
49// WIN32API EndTask
50// WIN32API GetInputDesktop
51// WIN32API GetNextQueueWindow
52// WIN32API GetShellWindow
53// WIN32API InitSharedTable
54// WIN32API InitTask
55// WIN32API IsHungThread
56// WIN32API LockWindowStation
57// WIN32API ModifyAccess
58// WIN32API PlaySoundEvent
59// WIN32API RegisterLogonProcess
60// WIN32API RegisterNetworkCapabilities
61// WIN32API RegisterSystemThread
62// WIN32API SetDeskWallpaper
63// WIN32API SetDesktopBitmap
64// WIN32API SetInternalWindowPos
65// WIN32API SetLogonNotifyWindow
66// WIN32API SetShellWindow
67// WIN32API SetSysColorsTemp
68// WIN32API SetWindowFullScreenState
69// WIN32API SwitchToThisWindow
70// WIN32API SysErrorBox
71// WIN32API TileChildWindows
72// WIN32API UnlockWindowStation
73// WIN32API UserClientDllInitialize
74// WIN32API UserSignalProc
75// WIN32API WinOldAppHackoMatic
76// WIN32API WNDPROC_CALLBACK
77// WIN32API YieldTask
78
79//Coordinate transformation
80
81inline void OS2ToWin32ScreenPos(POINT *dest,POINT *source)
82{
83 dest->x = source->x;
84 dest->y = OSLibWinQuerySysValue(OSLIB_HWND_DESKTOP,SVOS_CYSCREEN)-source->y;
85}
86
87inline void Win32ToOS2ScreenPos(POINT *dest,POINT *source)
88{
89 OS2ToWin32ScreenPos(dest,source); //transform back
90}
91
92//******************************************************************************
93//******************************************************************************
94int __cdecl wsprintfA(char *lpOut, LPCSTR lpFmt, ...)
95{
96 int rc;
97 va_list argptr;
98
99#ifdef DEBUG
100 WriteLog("USER32: wsprintfA\n");
101 WriteLog("USER32: %s\n", lpFmt);
102#endif
103 va_start(argptr, lpFmt);
104 rc = O32_wvsprintf(lpOut, (char *)lpFmt, argptr);
105 va_end(argptr);
106#ifdef DEBUG
107 WriteLog("USER32: %s\n", lpOut);
108#endif
109 return(rc);
110}
111//******************************************************************************
112//******************************************************************************
113int __cdecl wsprintfW(LPWSTR lpOut, LPCWSTR lpFmt, ...)
114{
115 int rc;
116 char *lpFmtA;
117 char szOut[512];
118 va_list argptr;
119
120 dprintf(("USER32: wsprintfW(%08xh,%08xh).\n",
121 lpOut,
122 lpFmt));
123
124 lpFmtA = UnicodeToAsciiString((LPWSTR)lpFmt);
125
126 /* @@@PH 98/07/13 transform "%s" to "%ls" does the unicode magic */
127 {
128 PCHAR pszTemp;
129 PCHAR pszTemp1;
130 ULONG ulStrings;
131 ULONG ulIndex; /* temporary string counter */
132
133 for (ulStrings = 0, /* determine number of placeholders */
134 pszTemp = lpFmtA;
135
136 (pszTemp != NULL) &&
137 (*pszTemp != 0);
138
139 ulStrings++)
140 {
141 pszTemp = strstr(pszTemp,
142 "%s");
143 if (pszTemp != NULL) /* skip 2 characters */
144 {
145 pszTemp++;
146 pszTemp++;
147 }
148 else
149 break; /* leave loop immediately */
150 }
151
152 if (ulStrings != 0) /* transformation required ? */
153 {
154 /* now reallocate lpFmt */
155 ulStrings += strlen(lpFmtA); /* calculate total string length */
156 pszTemp = lpFmtA; /* save string pointer */
157 pszTemp1 = lpFmtA; /* save string pointer */
158
159 /* @@@PH allocation has to be compatible to FreeAsciiString !!! */
160 lpFmtA = (char *)malloc(ulStrings + 1);
161 if (lpFmtA == NULL) /* check proper allocation */
162 return (0); /* raise error condition */
163
164 for (ulIndex = 0;
165 ulIndex <= ulStrings;
166 ulIndex++,
167 pszTemp++)
168 {
169 if ((pszTemp[0] == '%') &&
170 (pszTemp[1] == 's') )
171 {
172 /* replace %s by %ls */
173 lpFmtA[ulIndex++] = '%';
174 lpFmtA[ulIndex ] = 'l';
175 lpFmtA[ulIndex+1] = 's';
176 }
177 else
178 lpFmtA[ulIndex] = *pszTemp; /* just copy over the character */
179 }
180
181 lpFmtA[ulStrings] = 0; /* string termination */
182
183 FreeAsciiString(pszTemp1); /* the original string is obsolete */
184 }
185 }
186
187 dprintf(("USER32: wsprintfW (%s).\n",
188 lpFmt));
189
190 va_start(argptr,
191 lpFmt);
192
193 rc = O32_wvsprintf(szOut,
194 lpFmtA,
195 argptr);
196
197 AsciiToUnicode(szOut,
198 lpOut);
199
200 FreeAsciiString(lpFmtA);
201 return(rc);
202}
203//******************************************************************************
204//******************************************************************************
205BOOL WIN32API MessageBeep( UINT uType)
206{
207 INT flStyle;
208
209#ifdef DEBUG
210 WriteLog("USER32: MessageBeep\n");
211#endif
212
213 switch (uType)
214 {
215 case 0xFFFFFFFF:
216 OSLibDosBeep(500,50);
217 return TRUE;
218 case MB_ICONASTERISK:
219 flStyle = WAOS_NOTE;
220 break;
221 case MB_ICONEXCLAMATION:
222 flStyle = WAOS_WARNING;
223 break;
224 case MB_ICONHAND:
225 case MB_ICONQUESTION:
226 case MB_OK:
227 flStyle = WAOS_NOTE;
228 break;
229 default:
230 flStyle = WAOS_ERROR; //CB: should be right
231 break;
232 }
233 return OSLibWinAlarm(OSLIB_HWND_DESKTOP,flStyle);
234}
235//******************************************************************************
236//******************************************************************************
237
238//******************************************************************************
239//******************************************************************************
240BOOL WIN32API OffsetRect( PRECT lprc, int x, int y)
241{
242#ifdef DEBUG
243//// WriteLog("USER32: OffsetRect\n");
244#endif
245 if (lprc)
246 {
247 lprc->left += x;
248 lprc->right += x;
249 lprc->top += y;
250 lprc->bottom += y;
251
252 return TRUE;
253 } else return FALSE;
254}
255//******************************************************************************
256//******************************************************************************
257BOOL WIN32API CopyRect( PRECT lprcDst, const RECT * lprcSrc)
258{
259// ddprintf(("USER32: CopyRect\n"));
260 if (!lprcDst || !lprcSrc) {
261 SetLastError(ERROR_INVALID_PARAMETER);
262 return FALSE;
263 }
264
265 memcpy(lprcDst,lprcSrc,sizeof(RECT));
266
267 return TRUE;
268}
269//******************************************************************************
270//******************************************************************************
271int WIN32API GetSystemMetrics(int nIndex)
272{
273 int rc = 0;
274
275 switch(nIndex) {
276 case SM_CXICONSPACING: //TODO: size of grid cell for large icons
277 rc = OSLibWinQuerySysValue(OSLIB_HWND_DESKTOP,SVOS_CXICON);
278 //CB: return standard windows icon size?
279 //rc = 32;
280 break;
281 case SM_CYICONSPACING:
282 rc = OSLibWinQuerySysValue(OSLIB_HWND_DESKTOP,SVOS_CYICON);
283 //read SM_CXICONSPACING comment
284 //rc = 32;
285 break;
286 case SM_PENWINDOWS:
287 rc = FALSE;
288 break;
289 case SM_DBCSENABLED:
290 rc = FALSE;
291 break;
292 case SM_CXEDGE: //size of 3D window edge (not supported)
293 rc = 1;
294 break;
295 case SM_CYEDGE:
296 rc = 1;
297 break;
298 case SM_CXMINSPACING: //can be SM_CXMINIMIZED or larger
299 //CB: replace with const
300 rc = O32_GetSystemMetrics(SM_CXMINIMIZED);
301 break;
302 case SM_CYMINSPACING:
303 //CB: replace with const
304 rc = GetSystemMetrics(SM_CYMINIMIZED);
305 break;
306 case SM_CXSMICON: //recommended size of small icons (TODO: adjust to screen res.)
307 rc = 16;
308 break;
309 case SM_CYSMICON:
310 rc = 16;
311 break;
312 case SM_CYSMCAPTION: //size in pixels of a small caption (TODO: ????)
313 rc = 8;
314 break;
315 case SM_CXSMSIZE: //size of small caption buttons (pixels) (TODO: implement properly)
316 rc = 16;
317 break;
318 case SM_CYSMSIZE:
319 rc = 16;
320 break;
321 case SM_CXMENUSIZE: //TODO: size of menu bar buttons (such as MDI window close)
322 rc = 16;
323 break;
324 case SM_CYMENUSIZE:
325 rc = 16;
326 break;
327 case SM_ARRANGE:
328 rc = ARW_BOTTOMLEFT | ARW_LEFT;
329 break;
330 case SM_CXMINIMIZED:
331 break;
332 case SM_CYMINIMIZED:
333 break;
334 case SM_CXMAXTRACK: //max window size
335 case SM_CXMAXIMIZED: //max toplevel window size
336 rc = OSLibWinQuerySysValue(OSLIB_HWND_DESKTOP,SVOS_CXSCREEN);
337 break;
338 case SM_CYMAXTRACK:
339 case SM_CYMAXIMIZED:
340 rc = OSLibWinQuerySysValue(OSLIB_HWND_DESKTOP,SVOS_CYSCREEN);
341 break;
342 case SM_NETWORK:
343 rc = 0x01; //TODO: default = yes
344 break;
345 case SM_CLEANBOOT:
346 rc = 0; //normal boot
347 break;
348 case SM_CXDRAG: //nr of pixels before drag becomes a real one
349 rc = 2;
350 break;
351 case SM_CYDRAG:
352 rc = 2;
353 break;
354 case SM_SHOWSOUNDS: //show instead of play sound
355 rc = FALSE;
356 break;
357 case SM_CXMENUCHECK:
358 rc = 4; //TODO
359 break;
360 case SM_CYMENUCHECK:
361 rc = OSLibWinQuerySysValue(OSLIB_HWND_DESKTOP,SVOS_CYMENU);
362 break;
363 case SM_SLOWMACHINE:
364 rc = FALSE; //even a slow machine is fast with OS/2 :)
365 break;
366 case SM_MIDEASTENABLED:
367 rc = FALSE;
368 break;
369 case SM_CMETRICS:
370 //CB: replace with const
371 rc = O32_GetSystemMetrics(44); //Open32 changed this one
372 break;
373 default:
374 //better than nothing
375 rc = O32_GetSystemMetrics(nIndex);
376 break;
377 }
378#ifdef DEBUG
379 WriteLog("USER32: GetSystemMetrics %d returned %d\n", nIndex, rc);
380#endif
381 return(rc);
382}
383//******************************************************************************
384//******************************************************************************
385UINT WIN32API SetTimer( HWND hwnd, UINT idTimer, UINT uTimeout, TIMERPROC tmprc)
386{
387#ifdef DEBUG
388 WriteLog("USER32: SetTimer INCORRECT CALLING CONVENTION FOR HANDLER!!!!!\n");
389#endif
390 hwnd = Win32Window::Win32ToOS2Handle(hwnd);
391 //SvL: Write callback handler class for this one
392 //CB: replace
393 return O32_SetTimer(hwnd,idTimer,uTimeout,(TIMERPROC_O32)tmprc);
394}
395//******************************************************************************
396//******************************************************************************
397BOOL WIN32API KillTimer(HWND hWnd, UINT uIDEvent)
398{
399#ifdef DEBUG
400 WriteLog("USER32: KillTimer\n");
401#endif
402 hWnd = Win32Window::Win32ToOS2Handle(hWnd);
403 //WinStopTimer
404 //CB: replace
405 return O32_KillTimer(hWnd,uIDEvent);
406}
407//******************************************************************************
408//******************************************************************************
409BOOL WIN32API InflateRect( PRECT lprc, int dx, int dy)
410{
411#ifdef DEBUG
412 WriteLog("USER32: InflateRect\n");
413#endif
414 if (!lprc) return FALSE;
415 //right?
416 lprc->left -= dx;
417 lprc->right += dx;
418 lprc->top -= dy;
419 lprc->bottom += dy;
420
421 return TRUE;
422}
423//******************************************************************************
424//TODO:How can we emulate this one in OS/2???
425//******************************************************************************
426DWORD WIN32API WaitForInputIdle(HANDLE hProcess, DWORD dwTimeOut)
427{
428#ifdef DEBUG
429 WriteLog("USER32: WaitForInputIdle (Not Implemented) %d\n", dwTimeOut);
430#endif
431
432 if(dwTimeOut == INFINITE) return(0);
433
434// DosSleep(dwTimeOut/16);
435 return(0);
436}
437//******************************************************************************
438//******************************************************************************
439int WIN32API ShowCursor( BOOL arg1)
440{
441#ifdef DEBUG
442 WriteLog("USER32: ShowCursor\n");
443#endif
444 //WinShowCursor(OSLIB_HWND_DESKTOP,arg1); //CB: not the same
445 return O32_ShowCursor(arg1);
446}
447//******************************************************************************
448//******************************************************************************
449BOOL WIN32API SetRect( PRECT lprc, int nLeft, int nTop, int nRight, int nBottom)
450{
451 if (!lprc) return FALSE;
452 lprc->left = nLeft;
453 lprc->top = nTop;
454 lprc->right = nRight;
455 lprc->bottom = nBottom;
456
457 return TRUE;
458}
459//******************************************************************************
460//******************************************************************************
461BOOL WIN32API WinHelpA( HWND hwnd, LPCSTR lpszHelp, UINT uCommand, DWORD dwData)
462{
463#ifdef DEBUG
464 WriteLog("USER32: WinHelp not implemented %s\n", lpszHelp);
465#endif
466// hwnd = Win32Window::Win32ToOS2Handle(hwnd);
467// return O32_WinHelp(arg1, arg2, arg3, arg4);
468
469 return(TRUE);
470}
471//******************************************************************************
472//******************************************************************************
473BOOL WIN32API SubtractRect( PRECT lprcDest, const RECT * lprcSrc1, const RECT * lprcSrc2)
474{
475#ifdef DEBUG
476 WriteLog("USER32: SubtractRect");
477#endif
478 //CB: how?
479 return O32_SubtractRect(lprcDest,lprcSrc1,lprcSrc2);
480}
481//******************************************************************************
482//SvL: 24-6-'97 - Added
483//******************************************************************************
484BOOL WIN32API ClipCursor(const RECT * lpRect)
485{
486#ifdef DEBUG
487 WriteLog("USER32: ClipCursor\n");
488#endif
489 //CB: how to replace?
490 return O32_ClipCursor(lpRect);
491}
492//******************************************************************************
493//SvL: 24-6-'97 - Added
494//TODO: Not implemented
495//******************************************************************************
496WORD WIN32API GetAsyncKeyState(INT nVirtKey)
497{
498#ifdef DEBUG
499//// WriteLog("USER32: GetAsyncKeyState Not implemented\n");
500#endif
501 return 0;
502}
503//******************************************************************************
504//SvL: 24-6-'97 - Added
505//******************************************************************************
506HCURSOR WIN32API GetCursor(void)
507{
508#ifdef DEBUG
509//// WriteLog("USER32: GetCursor\n");
510#endif
511 return O32_GetCursor();
512}
513//******************************************************************************
514//SvL: 24-6-'97 - Added
515//******************************************************************************
516BOOL WIN32API GetCursorPos( PPOINT lpPoint)
517{
518 BOOL rc;
519 POINT point;
520#ifdef DEBUG
521//// WriteLog("USER32: GetCursorPos\n");
522#endif
523 if (!lpPoint) return FALSE;
524 if (OSLibWinQueryPointerPos(OSLIB_HWND_DESKTOP,&point)) //POINT == POINTL
525 {
526 OS2ToWin32ScreenPos(lpPoint,&point);
527 return TRUE;
528 } else return FALSE;
529}
530//******************************************************************************
531//SvL: 24-6-'97 - Added
532//******************************************************************************
533WORD WIN32API VkKeyScanA( char ch)
534{
535#ifdef DEBUG
536 WriteLog("USER32: VkKeyScanA\n");
537#endif
538 return O32_VkKeyScan(ch);
539}
540//******************************************************************************
541//SvL: 24-6-'97 - Added
542//******************************************************************************
543SHORT WIN32API GetKeyState( int nVirtKey)
544{
545#ifdef DEBUG
546 WriteLog("USER32: GetKeyState %d\n", nVirtKey);
547#endif
548 return O32_GetKeyState(nVirtKey);
549}
550//******************************************************************************
551//******************************************************************************
552HCURSOR WIN32API SetCursor( HCURSOR hcur)
553{
554#ifdef DEBUG
555 WriteLog("USER32: SetCursor\n");
556#endif
557 return O32_SetCursor(hcur);
558}
559//******************************************************************************
560//******************************************************************************
561BOOL WIN32API SetCursorPos( int arg1, int arg2)
562{
563#ifdef DEBUG
564 WriteLog("USER32: SetCursorPos\n");
565#endif
566//CB:{a} stopped here
567 return O32_SetCursorPos(arg1, arg2);
568}
569//******************************************************************************
570//******************************************************************************
571HWND WIN32API SetCapture( HWND arg1)
572{
573#ifdef DEBUG
574 WriteLog("USER32: SetCapture\n");
575#endif
576 return O32_SetCapture(arg1);
577}
578//******************************************************************************
579//******************************************************************************
580BOOL WIN32API ReleaseCapture(void)
581{
582#ifdef DEBUG
583 WriteLog("USER32: ReleaseCapture\n");
584#endif
585 return O32_ReleaseCapture();
586}
587//******************************************************************************
588//******************************************************************************
589DWORD WIN32API MsgWaitForMultipleObjects( DWORD arg1, LPHANDLE arg2, BOOL arg3, DWORD arg4, DWORD arg5)
590{
591#ifdef DEBUG
592 WriteLog("USER32: MsgWaitForMultipleObjects\n");
593#endif
594 return O32_MsgWaitForMultipleObjects(arg1, arg2, arg3, arg4, arg5);
595}
596//******************************************************************************
597//******************************************************************************
598BOOL WIN32API CheckRadioButton( HWND arg1, UINT arg2, UINT arg3, UINT arg4)
599{
600#ifdef DEBUG
601 WriteLog("USER32: CheckRadioButton\n");
602#endif
603 //CB: check radio buttons in interval
604 if (arg2 > arg3) return (FALSE);
605 for (UINT x=arg2;x <= arg3;x++)
606 {
607 SendDlgItemMessageA(arg1,x,BM_SETCHECK,(x == arg4) ? BST_CHECKED : BST_UNCHECKED,0);
608 }
609 return (TRUE);
610}
611//******************************************************************************
612//******************************************************************************
613BOOL WIN32API CreateCaret( HWND arg1, HBITMAP arg2, int arg3, int arg4)
614{
615#ifdef DEBUG
616 WriteLog("USER32: CreateCaret\n");
617#endif
618 return O32_CreateCaret(arg1, arg2, arg3, arg4);
619}
620//******************************************************************************
621//******************************************************************************
622HCURSOR WIN32API CreateCursor( HINSTANCE arg1, int arg2, int arg3, int arg4, int arg5, const VOID * arg6, const VOID * arg7)
623{
624#ifdef DEBUG
625 WriteLog("USER32: CreateCursor\n");
626#endif
627 return O32_CreateCursor(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
628}
629//******************************************************************************
630//******************************************************************************
631//******************************************************************************
632//******************************************************************************
633BOOL WIN32API DestroyCaret(void)
634{
635#ifdef DEBUG
636 WriteLog("USER32: DestroyCaret\n");
637#endif
638 return O32_DestroyCaret();
639}
640//******************************************************************************
641//******************************************************************************
642BOOL WIN32API DestroyCursor( HCURSOR arg1)
643{
644#ifdef DEBUG
645 WriteLog("USER32: DestroyCursor\n");
646#endif
647 return O32_DestroyCursor(arg1);
648}
649//******************************************************************************
650//******************************************************************************
651BOOL WIN32API EndDeferWindowPos( HDWP arg1)
652{
653#ifdef DEBUG
654 WriteLog("USER32: EndDeferWindowPos\n");
655#endif
656 return O32_EndDeferWindowPos(arg1);
657}
658//******************************************************************************
659//******************************************************************************
660BOOL WIN32API EnumChildWindows(HWND hwnd, WNDENUMPROC lpfn, LPARAM lParam)
661{
662 BOOL rc;
663 EnumWindowCallback *callback = new EnumWindowCallback(lpfn, lParam);
664
665#ifdef DEBUG
666 WriteLog("USER32: EnumChildWindows\n");
667#endif
668 rc = O32_EnumChildWindows(hwnd, callback->GetOS2Callback(), (LPARAM)callback);
669 if(callback)
670 delete callback;
671 return(rc);
672}
673//******************************************************************************
674//******************************************************************************
675BOOL WIN32API EnumWindows(WNDENUMPROC lpfn, LPARAM lParam)
676{
677 BOOL rc;
678 EnumWindowCallback *callback = new EnumWindowCallback(lpfn, lParam);
679
680#ifdef DEBUG
681 WriteLog("USER32: EnumWindows\n");
682#endif
683 rc = O32_EnumWindows(callback->GetOS2Callback(), (LPARAM)callback);
684 if(callback)
685 delete callback;
686 return(rc);
687}
688//******************************************************************************
689//******************************************************************************
690BOOL WIN32API EqualRect( const RECT * arg1, const RECT * arg2)
691{
692#ifdef DEBUG
693 WriteLog("USER32: EqualRect\n");
694#endif
695 return O32_EqualRect(arg1, arg2);
696}
697//******************************************************************************
698//******************************************************************************
699BOOL WIN32API ExcludeUpdateRgn( HDC arg1, HWND arg2)
700{
701#ifdef DEBUG
702 WriteLog("USER32: ExcludeUpdateRgn\n");
703#endif
704 return O32_ExcludeUpdateRgn(arg1, arg2);
705}
706//******************************************************************************
707//******************************************************************************
708BOOL WIN32API ExitWindowsEx( UINT arg1, DWORD arg2)
709{
710#ifdef DEBUG
711 WriteLog("USER32: ExitWindowsEx\n");
712#endif
713 return O32_ExitWindowsEx(arg1, arg2);
714}
715//******************************************************************************
716//******************************************************************************
717int WIN32API FillRect(HDC arg1, const RECT * arg2, HBRUSH arg3)
718{
719#ifdef DEBUG
720 WriteLog("USER32: FillRect (%d,%d)(%d,%d) brush %X\n", arg2->left, arg2->top, arg2->right, arg2->bottom, arg3);
721#endif
722 return O32_FillRect(arg1, arg2, arg3);
723}
724//******************************************************************************
725//******************************************************************************
726HWND WIN32API FindWindowW( LPCWSTR arg1, LPCWSTR arg2)
727{
728 char *astring1 = UnicodeToAsciiString((LPWSTR)arg1);
729 char *astring2 = UnicodeToAsciiString((LPWSTR)arg2);
730 HWND rc;
731
732#ifdef DEBUG
733 WriteLog("USER32: FindWindowW\n");
734#endif
735 rc = O32_FindWindow(astring1, astring2);
736 FreeAsciiString(astring1);
737 FreeAsciiString(astring2);
738 return rc;
739}
740//******************************************************************************
741//******************************************************************************
742int WIN32API FrameRect( HDC arg1, const RECT * arg2, HBRUSH arg3)
743{
744#ifdef DEBUG
745 WriteLog("USER32: FrameRect\n");
746#endif
747 return O32_FrameRect(arg1, arg2, arg3);
748}
749//******************************************************************************
750//******************************************************************************
751HWND WIN32API GetCapture(void)
752{
753#ifdef DEBUG
754 WriteLog("USER32: GetCapture\n");
755#endif
756 return O32_GetCapture();
757}
758//******************************************************************************
759//******************************************************************************
760UINT WIN32API GetCaretBlinkTime(void)
761{
762#ifdef DEBUG
763 WriteLog("USER32: GetCaretBlinkTime\n");
764#endif
765 return O32_GetCaretBlinkTime();
766}
767//******************************************************************************
768//******************************************************************************
769BOOL WIN32API GetCaretPos( PPOINT arg1)
770{
771#ifdef DEBUG
772 WriteLog("USER32: GetCaretPos\n");
773#endif
774 return O32_GetCaretPos(arg1);
775}
776//******************************************************************************
777//******************************************************************************
778BOOL WIN32API GetClipCursor( PRECT arg1)
779{
780#ifdef DEBUG
781 WriteLog("USER32: GetClipCursor\n");
782#endif
783 return O32_GetClipCursor(arg1);
784}
785//******************************************************************************
786//******************************************************************************
787UINT WIN32API GetDoubleClickTime(void)
788{
789#ifdef DEBUG
790 WriteLog("USER32: GetDoubleClickTime\n");
791#endif
792 return O32_GetDoubleClickTime();
793}
794//******************************************************************************
795//******************************************************************************
796HWND WIN32API GetForegroundWindow(void)
797{
798#ifdef DEBUG
799 WriteLog("USER32: GetForegroundWindow\n");
800#endif
801 return O32_GetForegroundWindow();
802}
803//******************************************************************************
804//******************************************************************************
805int WIN32API GetKeyNameTextA( LPARAM arg1, LPSTR arg2, int arg3)
806{
807#ifdef DEBUG
808 WriteLog("USER32: GetKeyNameTextA\n");
809#endif
810 return O32_GetKeyNameText(arg1, arg2, arg3);
811}
812//******************************************************************************
813//******************************************************************************
814int WIN32API GetKeyNameTextW( LPARAM arg1, LPWSTR arg2, int arg3)
815{
816#ifdef DEBUG
817 WriteLog("USER32: GetKeyNameTextW DOES NOT WORK\n");
818#endif
819 // NOTE: This will not work as is (needs UNICODE support)
820 return 0;
821// return O32_GetKeyNameText(arg1, arg2, arg3);
822}
823//******************************************************************************
824//******************************************************************************
825int WIN32API GetKeyboardType( int arg1)
826{
827#ifdef DEBUG
828 WriteLog("USER32: GetKeyboardType\n");
829#endif
830 return O32_GetKeyboardType(arg1);
831}
832//******************************************************************************
833//******************************************************************************
834HWND WIN32API GetLastActivePopup( HWND arg1)
835{
836#ifdef DEBUG
837 WriteLog("USER32: GetLastActivePopup\n");
838#endif
839 return O32_GetLastActivePopup(arg1);
840}
841//******************************************************************************
842//******************************************************************************
843//******************************************************************************
844//******************************************************************************
845DWORD WIN32API GetQueueStatus( UINT arg1)
846{
847#ifdef DEBUG
848 WriteLog("USER32: GetQueueStatus\n");
849#endif
850 return O32_GetQueueStatus(arg1);
851}
852//******************************************************************************
853//******************************************************************************
854DWORD WIN32API GetTabbedTextExtentA( HDC arg1, LPCSTR arg2, int arg3, int arg4, int * arg5)
855{
856#ifdef DEBUG
857 WriteLog("USER32: GetTabbedTextExtentA\n");
858#endif
859 return O32_GetTabbedTextExtent(arg1, arg2, arg3, arg4, arg5);
860}
861//******************************************************************************
862//******************************************************************************
863DWORD WIN32API GetTabbedTextExtentW( HDC arg1, LPCWSTR arg2, int arg3, int arg4, int * arg5)
864{
865 char *astring = UnicodeToAsciiString((LPWSTR)arg2);
866 DWORD rc;
867
868#ifdef DEBUG
869 WriteLog("USER32: GetTabbedTextExtentW\n");
870#endif
871 rc = O32_GetTabbedTextExtent(arg1, astring, arg3, arg4, arg5);
872 FreeAsciiString(astring);
873 return rc;
874}
875//******************************************************************************
876//******************************************************************************
877int WIN32API GetUpdateRgn( HWND arg1, HRGN arg2, BOOL arg3)
878{
879#ifdef DEBUG
880 WriteLog("USER32: GetUpdateRgn\n");
881#endif
882 return O32_GetUpdateRgn(arg1, arg2, arg3);
883}
884//******************************************************************************
885
886
887//******************************************************************************
888//******************************************************************************
889//******************************************************************************
890DWORD WIN32API GetWindowThreadProcessId(HWND arg1, PDWORD arg2)
891{
892#ifdef DEBUG
893 WriteLog("USER32: GetWindowThreadProcessId\n");
894#endif
895 return O32_GetWindowThreadProcessId(arg1, arg2);
896}
897//******************************************************************************
898//******************************************************************************
899BOOL WIN32API HideCaret( HWND arg1)
900{
901#ifdef DEBUG
902 WriteLog("USER32: HideCaret\n");
903#endif
904 return O32_HideCaret(arg1);
905}
906//******************************************************************************
907//******************************************************************************
908BOOL WIN32API IntersectRect( PRECT arg1, const RECT * arg2, const RECT * arg3)
909{
910#ifdef DEBUG
911//// WriteLog("USER32: IntersectRect\n");
912#endif
913 return O32_IntersectRect(arg1, arg2, arg3);
914}
915//******************************************************************************
916//******************************************************************************
917BOOL WIN32API InvalidateRgn( HWND arg1, HRGN arg2, BOOL arg3)
918{
919#ifdef DEBUG
920 WriteLog("USER32: InvalidateRgn\n");
921#endif
922 return O32_InvalidateRgn(arg1, arg2, arg3);
923}
924//******************************************************************************
925//******************************************************************************
926BOOL WIN32API InvertRect( HDC arg1, const RECT * arg2)
927{
928#ifdef DEBUG
929 WriteLog("USER32: InvertRect\n");
930#endif
931 return O32_InvertRect(arg1, arg2);
932}
933//******************************************************************************
934//******************************************************************************
935BOOL WIN32API IsRectEmpty( const RECT * arg1)
936{
937#ifdef DEBUG
938 WriteLog("USER32: IsRectEmpty\n");
939#endif
940 return O32_IsRectEmpty(arg1);
941}
942//******************************************************************************
943//******************************************************************************
944BOOL WIN32API MapDialogRect( HWND arg1, PRECT arg2)
945{
946#ifdef DEBUG
947 WriteLog("USER32: MapDialogRect\n");
948#endif
949 return O32_MapDialogRect(arg1, arg2);
950}
951//******************************************************************************
952//******************************************************************************
953UINT WIN32API MapVirtualKeyA( UINT arg1, UINT arg2)
954{
955#ifdef DEBUG
956 WriteLog("USER32: MapVirtualKeyA\n");
957#endif
958 return O32_MapVirtualKey(arg1, arg2);
959}
960//******************************************************************************
961//******************************************************************************
962UINT WIN32API MapVirtualKeyW( UINT arg1, UINT arg2)
963{
964#ifdef DEBUG
965 WriteLog("USER32: MapVirtualKeyW\n");
966#endif
967 // NOTE: This will not work as is (needs UNICODE support)
968 return O32_MapVirtualKey(arg1, arg2);
969}
970//******************************************************************************
971//******************************************************************************
972int WIN32API MapWindowPoints( HWND arg1, HWND arg2, LPPOINT arg3, UINT arg4)
973{
974#ifdef DEBUG
975 WriteLog("USER32: MapWindowPoints\n");
976#endif
977 return O32_MapWindowPoints(arg1, arg2, arg3, arg4);
978}
979//******************************************************************************
980//******************************************************************************
981BOOL WIN32API PtInRect( const RECT * arg1, POINT arg2)
982{
983#ifdef DEBUG1
984 WriteLog("USER32: PtInRect\n");
985#endif
986 return O32_PtInRect(arg1, arg2);
987}
988//******************************************************************************
989//******************************************************************************
990BOOL WIN32API ScreenToClient( HWND arg1, LPPOINT arg2)
991{
992#ifdef DEBUG
993 WriteLog("USER32: ScreenToClient\n");
994#endif
995 return O32_ScreenToClient(arg1, arg2);
996}
997//******************************************************************************
998//******************************************************************************
999BOOL WIN32API ScrollDC( HDC arg1, int arg2, int arg3, const RECT * arg4, const RECT * arg5, HRGN arg6, PRECT arg7)
1000{
1001#ifdef DEBUG
1002 WriteLog("USER32: ScrollDC\n");
1003#endif
1004 return O32_ScrollDC(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1005}
1006//******************************************************************************
1007//******************************************************************************
1008BOOL WIN32API SetCaretBlinkTime( UINT arg1)
1009{
1010#ifdef DEBUG
1011 WriteLog("USER32: SetCaretBlinkTime\n");
1012#endif
1013 return O32_SetCaretBlinkTime(arg1);
1014}
1015//******************************************************************************
1016//******************************************************************************
1017BOOL WIN32API SetCaretPos( int arg1, int arg2)
1018{
1019 dprintf(("USER32: SetCaretPos\n"));
1020 return O32_SetCaretPos(arg1, arg2);
1021}
1022//******************************************************************************
1023//******************************************************************************
1024BOOL WIN32API SetDoubleClickTime( UINT arg1)
1025{
1026#ifdef DEBUG
1027 WriteLog("USER32: SetDoubleClickTime\n");
1028#endif
1029 return O32_SetDoubleClickTime(arg1);
1030}
1031//******************************************************************************
1032//******************************************************************************
1033BOOL WIN32API SetRectEmpty( PRECT arg1)
1034{
1035#ifdef DEBUG
1036 WriteLog("USER32: SetRectEmpty\n");
1037#endif
1038 return O32_SetRectEmpty(arg1);
1039}
1040//******************************************************************************
1041//******************************************************************************
1042BOOL WIN32API ShowCaret( HWND arg1)
1043{
1044 dprintf(("USER32: ShowCaret\n"));
1045 return O32_ShowCaret(arg1);
1046}
1047//******************************************************************************
1048//******************************************************************************
1049BOOL WIN32API SwapMouseButton( BOOL arg1)
1050{
1051#ifdef DEBUG
1052 WriteLog("USER32: SwapMouseButton\n");
1053#endif
1054 return O32_SwapMouseButton(arg1);
1055}
1056//******************************************************************************
1057//******************************************************************************
1058BOOL WIN32API SystemParametersInfoA(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
1059{
1060 BOOL rc;
1061 NONCLIENTMETRICSA *cmetric = (NONCLIENTMETRICSA *)pvParam;
1062
1063 switch(uiAction) {
1064 case SPI_SCREENSAVERRUNNING:
1065 *(BOOL *)pvParam = FALSE;
1066 rc = TRUE;
1067 break;
1068 case SPI_GETDRAGFULLWINDOWS:
1069 *(BOOL *)pvParam = FALSE;
1070 rc = TRUE;
1071 break;
1072 case SPI_GETNONCLIENTMETRICS:
1073 memset(cmetric, 0, sizeof(NONCLIENTMETRICSA));
1074 cmetric->cbSize = sizeof(NONCLIENTMETRICSA);
1075 //CB: font info not valid, needs improvements
1076 O32_SystemParametersInfo(SPI_GETICONTITLELOGFONT, 0, (LPVOID)&(cmetric->lfCaptionFont),0);
1077 O32_SystemParametersInfo(SPI_GETICONTITLELOGFONT, 0, (LPVOID)&(cmetric->lfMenuFont),0);
1078 //CB: experimental change for statusbar (and tooltips)
1079
1080 //O32_SystemParametersInfo(SPI_GETICONTITLELOGFONT, 0, (LPVOID)&(cmetric->lfStatusFont),0);
1081 lstrcpyA(cmetric->lfStatusFont.lfFaceName,"WarpSans");
1082 cmetric->lfStatusFont.lfHeight = 9;
1083
1084 O32_SystemParametersInfo(SPI_GETICONTITLELOGFONT, 0, (LPVOID)&(cmetric->lfMessageFont),0);
1085 cmetric->iBorderWidth = GetSystemMetrics(SM_CXBORDER);
1086 cmetric->iScrollWidth = GetSystemMetrics(SM_CXHSCROLL);
1087 cmetric->iScrollHeight = GetSystemMetrics(SM_CYHSCROLL);
1088 cmetric->iCaptionWidth = 32; //TODO
1089 cmetric->iCaptionHeight = 16; //TODO
1090 cmetric->iSmCaptionWidth = GetSystemMetrics(SM_CXSMSIZE);
1091 cmetric->iSmCaptionHeight = GetSystemMetrics(SM_CYSMSIZE);
1092 cmetric->iMenuWidth = 32; //TODO
1093 cmetric->iMenuHeight = GetSystemMetrics(SM_CYMENU);
1094 rc = TRUE;
1095 break;
1096 case 104: //TODO: Undocumented
1097 rc = 16;
1098 break;
1099 default:
1100 rc = O32_SystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
1101 break;
1102 }
1103#ifdef DEBUG
1104 WriteLog("USER32: SystemParametersInfoA %d, returned %d\n", uiAction, rc);
1105#endif
1106 return(rc);
1107}
1108//******************************************************************************
1109//TODO: Check for more options that have different structs for Unicode!!!!
1110//******************************************************************************
1111BOOL WIN32API SystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
1112{
1113 BOOL rc;
1114 NONCLIENTMETRICSW *clientMetricsW = (NONCLIENTMETRICSW *)pvParam;
1115 NONCLIENTMETRICSA clientMetricsA = {0};
1116 PVOID pvParamA;
1117 UINT uiParamA;
1118
1119 switch(uiAction) {
1120 case SPI_SETNONCLIENTMETRICS:
1121 clientMetricsA.cbSize = sizeof(NONCLIENTMETRICSA);
1122 clientMetricsA.iBorderWidth = clientMetricsW->iBorderWidth;
1123 clientMetricsA.iScrollWidth = clientMetricsW->iScrollWidth;
1124 clientMetricsA.iScrollHeight = clientMetricsW->iScrollHeight;
1125 clientMetricsA.iCaptionWidth = clientMetricsW->iCaptionWidth;
1126 clientMetricsA.iCaptionHeight = clientMetricsW->iCaptionHeight;
1127 ConvertFontWA(&clientMetricsW->lfCaptionFont, &clientMetricsA.lfCaptionFont);
1128 clientMetricsA.iSmCaptionWidth = clientMetricsW->iSmCaptionWidth;
1129 clientMetricsA.iSmCaptionHeight = clientMetricsW->iSmCaptionHeight;
1130 ConvertFontWA(&clientMetricsW->lfSmCaptionFont, &clientMetricsA.lfSmCaptionFont);
1131 clientMetricsA.iMenuWidth = clientMetricsW->iMenuWidth;
1132 clientMetricsA.iMenuHeight = clientMetricsW->iMenuHeight;
1133 ConvertFontWA(&clientMetricsW->lfMenuFont, &clientMetricsA.lfMenuFont);
1134 ConvertFontWA(&clientMetricsW->lfStatusFont, &clientMetricsA.lfStatusFont);
1135 ConvertFontWA(&clientMetricsW->lfMessageFont, &clientMetricsA.lfMessageFont);
1136 //no break
1137 case SPI_GETNONCLIENTMETRICS:
1138 uiParamA = sizeof(NONCLIENTMETRICSA);
1139 pvParamA = &clientMetricsA;
1140 break;
1141 default:
1142 pvParamA = pvParam;
1143 uiParamA = uiParam;
1144 break;
1145 }
1146 rc = SystemParametersInfoA(uiAction, uiParamA, pvParamA, fWinIni);
1147
1148 switch(uiAction) {
1149 case SPI_GETNONCLIENTMETRICS:
1150 clientMetricsW->cbSize = sizeof(*clientMetricsW);
1151 clientMetricsW->iBorderWidth = clientMetricsA.iBorderWidth;
1152 clientMetricsW->iScrollWidth = clientMetricsA.iScrollWidth;
1153 clientMetricsW->iScrollHeight = clientMetricsA.iScrollHeight;
1154 clientMetricsW->iCaptionWidth = clientMetricsA.iCaptionWidth;
1155 clientMetricsW->iCaptionHeight = clientMetricsA.iCaptionHeight;
1156 ConvertFontAW(&clientMetricsA.lfCaptionFont, &clientMetricsW->lfCaptionFont);
1157
1158 clientMetricsW->iSmCaptionWidth = clientMetricsA.iSmCaptionWidth;
1159 clientMetricsW->iSmCaptionHeight = clientMetricsA.iSmCaptionHeight;
1160 ConvertFontAW(&clientMetricsA.lfSmCaptionFont, &clientMetricsW->lfSmCaptionFont);
1161
1162 clientMetricsW->iMenuWidth = clientMetricsA.iMenuWidth;
1163 clientMetricsW->iMenuHeight = clientMetricsA.iMenuHeight;
1164 ConvertFontAW(&clientMetricsA.lfMenuFont, &clientMetricsW->lfMenuFont);
1165 ConvertFontAW(&clientMetricsA.lfStatusFont, &clientMetricsW->lfStatusFont);
1166 ConvertFontAW(&clientMetricsA.lfMessageFont, &clientMetricsW->lfMessageFont);
1167 break;
1168 }
1169#ifdef DEBUG
1170 WriteLog("USER32: SystemParametersInfoW %d, returned %d\n", uiAction, rc);
1171#endif
1172 return(rc);
1173}
1174//******************************************************************************
1175//******************************************************************************
1176LONG WIN32API TabbedTextOutA( HDC arg1, int arg2, int arg3, LPCSTR arg4, int arg5, int arg6, int * arg7, int arg8)
1177{
1178#ifdef DEBUG
1179 WriteLog("USER32: TabbedTextOutA\n");
1180#endif
1181 return O32_TabbedTextOut(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
1182}
1183//******************************************************************************
1184//******************************************************************************
1185LONG WIN32API TabbedTextOutW( HDC arg1, int arg2, int arg3, LPCWSTR arg4, int arg5, int arg6, int * arg7, int arg8)
1186{
1187 char *astring = UnicodeToAsciiString((LPWSTR)arg4);
1188 LONG rc;
1189
1190#ifdef DEBUG
1191 WriteLog("USER32: TabbedTextOutW\n");
1192#endif
1193 rc = O32_TabbedTextOut(arg1, arg2, arg3, astring, arg5, arg6, arg7, arg8);
1194 FreeAsciiString(astring);
1195 return rc;
1196}
1197//******************************************************************************
1198//******************************************************************************
1199BOOL WIN32API UnionRect( PRECT arg1, const RECT * arg2, const RECT * arg3)
1200{
1201#ifdef DEBUG
1202 WriteLog("USER32: UnionRect\n");
1203#endif
1204 return O32_UnionRect(arg1, arg2, arg3);
1205}
1206//******************************************************************************
1207//******************************************************************************
1208BOOL WIN32API ValidateRect( HWND arg1, const RECT * arg2)
1209{
1210#ifdef DEBUG
1211 WriteLog("USER32: ValidateRect\n");
1212#endif
1213 return O32_ValidateRect(arg1, arg2);
1214}
1215//******************************************************************************
1216//******************************************************************************
1217BOOL WIN32API ValidateRgn( HWND arg1, HRGN arg2)
1218{
1219#ifdef DEBUG
1220 WriteLog("USER32: ValidateRgn\n");
1221#endif
1222 return O32_ValidateRgn(arg1, arg2);
1223}
1224//******************************************************************************
1225//******************************************************************************
1226WORD WIN32API VkKeyScanW( WCHAR arg1)
1227{
1228#ifdef DEBUG
1229 WriteLog("USER32: VkKeyScanW\n");
1230#endif
1231 // NOTE: This will not work as is (needs UNICODE support)
1232 return O32_VkKeyScan((char)arg1);
1233}
1234//******************************************************************************
1235//******************************************************************************
1236BOOL WIN32API WinHelpW( HWND arg1, LPCWSTR arg2, UINT arg3, DWORD arg4)
1237{
1238 char *astring = UnicodeToAsciiString((LPWSTR)arg2);
1239 BOOL rc;
1240
1241#ifdef DEBUG
1242 WriteLog("USER32: WinHelpW\n");
1243#endif
1244 rc = WinHelpA(arg1, astring, arg3, arg4);
1245 FreeAsciiString(astring);
1246 return rc;
1247}
1248//******************************************************************************
1249//******************************************************************************
1250int WIN32API wvsprintfA( LPSTR arg1, LPCSTR arg2, va_list arg3)
1251{
1252#ifdef DEBUG
1253 WriteLog("USER32: wvsprintfA\n");
1254#endif
1255 return O32_wvsprintf(arg1, arg2, (LPCVOID *)arg3);
1256}
1257//******************************************************************************
1258//******************************************************************************
1259int WIN32API wvsprintfW(LPWSTR lpOut, LPCWSTR lpFmt, va_list argptr)
1260{
1261 int rc;
1262 char szOut[256];
1263 char *lpFmtA;
1264
1265 lpFmtA = UnicodeToAsciiString((LPWSTR)lpFmt);
1266#ifdef DEBUG
1267 WriteLog("USER32: wvsprintfW, DOES NOT HANDLE UNICODE STRINGS!\n");
1268 WriteLog("USER32: %s\n", lpFmt);
1269#endif
1270 rc = O32_wvsprintf(szOut, lpFmtA, (LPCVOID)argptr);
1271
1272 AsciiToUnicode(szOut, lpOut);
1273#ifdef DEBUG
1274 WriteLog("USER32: %s\n", lpOut);
1275#endif
1276 FreeAsciiString(lpFmtA);
1277 return(rc);
1278}
1279//******************************************************************************
1280//TODO: Not complete
1281//******************************************************************************
1282BOOL WIN32API GrayStringA(HDC hdc, HBRUSH hBrush, GRAYSTRINGPROC lpOutputFunc,
1283 LPARAM lpData, int nCount, int X, int Y, int nWidth,
1284 int nHeight)
1285{
1286 BOOL rc;
1287 COLORREF curclr;
1288
1289#ifdef DEBUG
1290 WriteLog("USER32: GrayStringA, not completely implemented\n");
1291#endif
1292 if(lpOutputFunc == NULL && lpData == NULL) {
1293#ifdef DEBUG
1294 WriteLog("USER32: lpOutputFunc == NULL && lpData == NULL\n");
1295#endif
1296 return(FALSE);
1297 }
1298 if(lpOutputFunc) {
1299 return(lpOutputFunc(hdc, lpData, nCount));
1300 }
1301 curclr = SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT));
1302 rc = TextOutA(hdc, X, Y, (char *)lpData, nCount);
1303 SetTextColor(hdc, curclr);
1304
1305 return(rc);
1306}
1307//******************************************************************************
1308//******************************************************************************
1309BOOL WIN32API GrayStringW(HDC hdc, HBRUSH hBrush, GRAYSTRINGPROC lpOutputFunc,
1310 LPARAM lpData, int nCount, int X, int Y, int nWidth,
1311 int nHeight)
1312{
1313 BOOL rc;
1314 char *astring;
1315 COLORREF curclr;
1316
1317#ifdef DEBUG
1318 WriteLog("USER32: GrayStringW, not completely implemented\n");
1319#endif
1320
1321 if(lpOutputFunc == NULL && lpData == NULL) {
1322#ifdef DEBUG
1323 WriteLog("USER32: lpOutputFunc == NULL && lpData == NULL\n");
1324#endif
1325 return(FALSE);
1326 }
1327 if(nCount == 0)
1328 nCount = UniStrlen((UniChar*)lpData);
1329
1330 if(lpOutputFunc) {
1331 return(lpOutputFunc(hdc, lpData, nCount));
1332 }
1333 astring = UnicodeToAsciiString((LPWSTR)lpData);
1334
1335 curclr = SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT));
1336 rc = TextOutA(hdc, X, Y, astring, nCount);
1337 SetTextColor(hdc, curclr);
1338
1339 FreeAsciiString(astring);
1340 return(rc);
1341}
1342//******************************************************************************
1343//TODO:
1344//******************************************************************************
1345HANDLE WIN32API CopyImage(HANDLE hImage, UINT uType, int cxDesired, int cyDesired, UINT fuFlags)
1346{
1347#ifdef DEBUG
1348 WriteLog("USER32: CopyImage, not implemented\n");
1349#endif
1350 switch(uType) {
1351 case IMAGE_BITMAP:
1352 case IMAGE_CURSOR:
1353 case IMAGE_ICON:
1354 default:
1355#ifdef DEBUG
1356 WriteLog("USER32: CopyImage, unknown type\n");
1357#endif
1358 return(NULL);
1359 }
1360 return(NULL);
1361}
1362//******************************************************************************
1363//******************************************************************************
1364BOOL WIN32API GetKeyboardState(PBYTE lpKeyState)
1365{
1366#ifdef DEBUG
1367 WriteLog("USER32: GetKeyboardState, not properly implemented\n");
1368#endif
1369 memset(lpKeyState, 0, 256);
1370 return(TRUE);
1371}
1372//******************************************************************************
1373//******************************************************************************
1374BOOL WIN32API SetKeyboardState(PBYTE lpKeyState)
1375{
1376#ifdef DEBUG
1377 WriteLog("USER32: SetKeyboardState, not implemented\n");
1378#endif
1379 return(TRUE);
1380}
1381//******************************************************************************
1382//2nd parameter not used according to SDK (yet?)
1383//******************************************************************************
1384VOID WIN32API SetLastErrorEx(DWORD dwErrCode, DWORD dwType)
1385{
1386#ifdef DEBUG
1387 WriteLog("USER32: SetLastErrorEx\n");
1388#endif
1389 SetLastError(dwErrCode);
1390}
1391//******************************************************************************
1392//******************************************************************************
1393BOOL WIN32API ActivateKeyboardLayout(HKL hkl, UINT fuFlags)
1394{
1395#ifdef DEBUG
1396 WriteLog("USER32: ActivateKeyboardLayout, not implemented\n");
1397#endif
1398 return(TRUE);
1399}
1400//******************************************************************************
1401//******************************************************************************
1402int WIN32API GetKeyboardLayoutList(int nBuff, HKL *lpList)
1403{
1404#ifdef DEBUG
1405 WriteLog("USER32: GetKeyboardLayoutList, not implemented\n");
1406#endif
1407 return(0);
1408}
1409//******************************************************************************
1410//******************************************************************************
1411HKL WIN32API GetKeyboardLayout(DWORD dwLayout)
1412{
1413#ifdef DEBUG
1414 WriteLog("USER32: GetKeyboardLayout, not implemented\n");
1415#endif
1416 return(0);
1417}
1418//******************************************************************************
1419//******************************************************************************
1420int WIN32API LookupIconIdFromDirectory(PBYTE presbits, BOOL fIcon)
1421{
1422#ifdef DEBUG
1423 WriteLog("USER32: LookupIconIdFromDirectory, not implemented\n");
1424#endif
1425 return(0);
1426}
1427//******************************************************************************
1428//******************************************************************************
1429int WIN32API LookupIconIdFromDirectoryEx(PBYTE presbits, BOOL fIcon,
1430 int cxDesired, int cyDesired,
1431 UINT Flags)
1432{
1433#ifdef DEBUG
1434 WriteLog("USER32: LookupIconIdFromDirectoryEx, not implemented\n");
1435#endif
1436 return(0);
1437}
1438//******************************************************************************
1439//DWORD idAttach; /* thread to attach */
1440//DWORD idAttachTo; /* thread to attach to */
1441//BOOL fAttach; /* attach or detach */
1442//******************************************************************************
1443BOOL WIN32API AttachThreadInput(DWORD idAttach, DWORD idAttachTo, BOOL fAttach)
1444{
1445#ifdef DEBUG
1446 WriteLog("USER32: AttachThreadInput, not implemented\n");
1447#endif
1448 return(TRUE);
1449}
1450//******************************************************************************
1451//******************************************************************************
1452BOOL WIN32API RegisterHotKey(HWND hwnd, int idHotKey, UINT fuModifiers, UINT uVirtKey)
1453{
1454#ifdef DEBUG
1455 WriteLog("USER32: RegisterHotKey, not implemented\n");
1456#endif
1457 return(TRUE);
1458}
1459//******************************************************************************
1460//******************************************************************************
1461BOOL WIN32API UnregisterHotKey(HWND hwnd, int idHotKey)
1462{
1463#ifdef DEBUG
1464 WriteLog("USER32: UnregisterHotKey, not implemented\n");
1465#endif
1466 return(TRUE);
1467}
1468//******************************************************************************
1469//******************************************************************************
1470BOOL WIN32API SetWindowContextHelpId(HWND hwnd, DWORD dwContextHelpId)
1471{
1472#ifdef DEBUG
1473 WriteLog("USER32: SetWindowContextHelpId, not implemented\n");
1474#endif
1475 return(TRUE);
1476}
1477//******************************************************************************
1478//******************************************************************************
1479DWORD WIN32API GetWindowContextHelpId(HWND hwnd)
1480{
1481#ifdef DEBUG
1482 WriteLog("USER32: GetWindowContextHelpId, not implemented\n");
1483#endif
1484 return(0);
1485}
1486//******************************************************************************
1487//******************************************************************************
1488BOOL WIN32API GetMonitorInfoA(HMONITOR,LPMONITORINFO)
1489{
1490#ifdef DEBUG
1491 WriteLog("USER32: GetMonitorInfoA not supported!!\n");
1492#endif
1493 return(FALSE);
1494}
1495//******************************************************************************
1496//******************************************************************************
1497BOOL WIN32API GetMonitorInfoW(HMONITOR,LPMONITORINFO)
1498{
1499#ifdef DEBUG
1500 WriteLog("USER32: GetMonitorInfoW not supported!!\n");
1501#endif
1502 return(FALSE);
1503}
1504//******************************************************************************
1505//******************************************************************************
1506HMONITOR WIN32API MonitorFromWindow(HWND hwnd, DWORD dwFlags)
1507{
1508#ifdef DEBUG
1509 WriteLog("USER32: MonitorFromWindow not correctly supported??\n");
1510#endif
1511 return(0);
1512}
1513//******************************************************************************
1514//******************************************************************************
1515HMONITOR WIN32API MonitorFromRect(LPRECT rect, DWORD dwFlags)
1516{
1517#ifdef DEBUG
1518 WriteLog("USER32: MonitorFromRect not correctly supported??\n");
1519#endif
1520 return(0);
1521}
1522//******************************************************************************
1523//******************************************************************************
1524HMONITOR WIN32API MonitorFromPoint(POINT point, DWORD dwflags)
1525{
1526#ifdef DEBUG
1527 WriteLog("USER32: MonitorFromPoint not correctly supported??\n");
1528#endif
1529 return(0);
1530}
1531//******************************************************************************
1532//******************************************************************************
1533BOOL WIN32API EnumDisplayMonitors(HDC,LPRECT,MONITORENUMPROC,LPARAM)
1534{
1535#ifdef DEBUG
1536 WriteLog("USER32: EnumDisplayMonitors not supported??\n");
1537#endif
1538 return(FALSE);
1539}
1540//******************************************************************************
1541//******************************************************************************
1542BOOL WIN32API EnumDisplaySettingsA(LPCSTR lpszDeviceName, DWORD iModeNum,
1543 LPDEVMODEA lpDevMode)
1544{
1545#ifdef DEBUG
1546 WriteLog("USER32: EnumDisplaySettingsA FAKED\n");
1547#endif
1548 switch(iModeNum) {
1549 case 0:
1550 lpDevMode->dmBitsPerPel = 16;
1551 lpDevMode->dmPelsWidth = 768;
1552 lpDevMode->dmPelsHeight = 1024;
1553 lpDevMode->dmDisplayFlags = 0;
1554 lpDevMode->dmDisplayFrequency = 70;
1555 break;
1556 case 1:
1557 lpDevMode->dmBitsPerPel = 16;
1558 lpDevMode->dmPelsWidth = 640;
1559 lpDevMode->dmPelsHeight = 480;
1560 lpDevMode->dmDisplayFlags = 0;
1561 lpDevMode->dmDisplayFrequency = 70;
1562 break;
1563 default:
1564 return(FALSE);
1565 }
1566 return(TRUE);
1567}
1568//******************************************************************************
1569//******************************************************************************
1570LONG WIN32API ChangeDisplaySettingsA(LPDEVMODEA lpDevMode, DWORD dwFlags)
1571{
1572#ifdef DEBUG
1573 if(lpDevMode) {
1574 WriteLog("USER32: ChangeDisplaySettingsA FAKED %X\n", dwFlags);
1575 WriteLog("USER32: ChangeDisplaySettingsA lpDevMode->dmBitsPerPel %d\n", lpDevMode->dmBitsPerPel);
1576 WriteLog("USER32: ChangeDisplaySettingsA lpDevMode->dmPelsWidth %d\n", lpDevMode->dmPelsWidth);
1577 WriteLog("USER32: ChangeDisplaySettingsA lpDevMode->dmPelsHeight %d\n", lpDevMode->dmPelsHeight);
1578 }
1579#endif
1580 return(DISP_CHANGE_SUCCESSFUL);
1581}
1582//******************************************************************************
1583//******************************************************************************
1584
1585
1586/*****************************************************************************
1587 * Name : BOOL WIN32API AnyPopup
1588 * Purpose : The AnyPopup function indicates whether an owned, visible,
1589 * top-level pop-up, or overlapped window exists on the screen. The
1590 * function searches the entire Windows screen, not just the calling
1591 * application's client area.
1592 * Parameters: VOID
1593 * Variables :
1594 * Result : If a pop-up window exists, the return value is TRUE even if the
1595 * pop-up window is completely covered by other windows. Otherwise,
1596 * it is FALSE.
1597 * Remark : AnyPopup is a Windows version 1.x function and is retained for
1598 * compatibility purposes. It is generally not useful.
1599 * Status : UNTESTED STUB
1600 *
1601 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1602 *****************************************************************************/
1603
1604BOOL WIN32API AnyPopup(VOID)
1605{
1606 dprintf(("USER32:AnyPopup() not implemented.\n"));
1607
1608 return (FALSE);
1609}
1610
1611
1612
1613/*****************************************************************************
1614 * Name : LONG WIN32API ChangeDisplaySettingsW
1615 * Purpose : The ChangeDisplaySettings function changes the display settings
1616 * to the specified graphics mode.
1617 * Parameters: LPDEVMODEW lpDevModeW
1618 * DWORD dwFlags
1619 * Variables :
1620 * Result : DISP_CHANGE_SUCCESSFUL The settings change was successful.
1621 * DISP_CHANGE_RESTART The computer must be restarted in order for the graphics mode to work.
1622 * DISP_CHANGE_BADFLAGS An invalid set of flags was passed in.
1623 * DISP_CHANGE_FAILED The display driver failed the specified graphics mode.
1624 * DISP_CHANGE_BADMODE The graphics mode is not supported.
1625 * DISP_CHANGE_NOTUPDATED Unable to write settings to the registry.
1626 * Remark :
1627 * Status : UNTESTED STUB
1628 *
1629 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1630 *****************************************************************************/
1631
1632LONG WIN32API ChangeDisplaySettingsW(LPDEVMODEW lpDevMode,
1633 DWORD dwFlags)
1634{
1635 dprintf(("USER32:ChangeDisplaySettingsW(%08xh,%08x) not implemented.\n",
1636 lpDevMode,
1637 dwFlags));
1638
1639 return (ChangeDisplaySettingsA((LPDEVMODEA)lpDevMode,
1640 dwFlags));
1641}
1642
1643/*****************************************************************************
1644 * Name : BOOL WIN32API CloseDesktop
1645 * Purpose : The CloseDesktop function closes an open handle of a desktop
1646 * object. A desktop is a secure object contained within a window
1647 * station object. A desktop has a logical display surface and
1648 * contains windows, menus and hooks.
1649 * Parameters: HDESK hDesktop
1650 * Variables :
1651 * Result : If the function succeeds, the return value is TRUE.
1652 * If the functions fails, the return value is FALSE. To get
1653 * extended error information, call GetLastError.
1654 * Remark :
1655 * Status : UNTESTED STUB
1656 *
1657 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1658 *****************************************************************************/
1659
1660BOOL WIN32API CloseDesktop(HDESK hDesktop)
1661{
1662 dprintf(("USER32:CloseDesktop(%08x) not implemented.\n",
1663 hDesktop));
1664
1665 return (FALSE);
1666}
1667
1668
1669/*****************************************************************************
1670 * Name : BOOL WIN32API CloseWindowStation
1671 * Purpose : The CloseWindowStation function closes an open window station handle.
1672 * Parameters: HWINSTA hWinSta
1673 * Variables :
1674 * Result :
1675 * Remark : If the function succeeds, the return value is TRUE.
1676 * If the functions fails, the return value is FALSE. To get
1677 * extended error information, call GetLastError.
1678 * Status : UNTESTED STUB
1679 *
1680 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1681 *****************************************************************************/
1682
1683BOOL WIN32API CloseWindowStation(HWINSTA hWinSta)
1684{
1685 dprintf(("USER32:CloseWindowStation(%08x) not implemented.\n",
1686 hWinSta));
1687
1688 return (FALSE);
1689}
1690
1691
1692/*****************************************************************************
1693 * Name : HDESK WIN32API CreateDesktopA
1694 * Purpose : The CreateDesktop function creates a new desktop on the window
1695 * station associated with the calling process.
1696 * Parameters: LPCTSTR lpszDesktop name of the new desktop
1697 * LPCTSTR lpszDevice name of display device to assign to the desktop
1698 * LPDEVMODE pDevMode reserved; must be NULL
1699 * DWORD dwFlags flags to control interaction with other applications
1700 * DWORD dwDesiredAccess specifies access of returned handle
1701 * LPSECURITY_ATTRIBUTES lpsa specifies security attributes of the desktop
1702 * Variables :
1703 * Result : If the function succeeds, the return value is a handle of the
1704 * newly created desktop.
1705 * If the function fails, the return value is NULL. To get extended
1706 * error information, call GetLastError.
1707 * Remark :
1708 * Status : UNTESTED STUB
1709 *
1710 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1711 *****************************************************************************/
1712
1713HDESK WIN32API CreateDesktopA(LPCTSTR lpszDesktop,
1714 LPCTSTR lpszDevice,
1715 LPDEVMODEA pDevMode,
1716 DWORD dwFlags,
1717 DWORD dwDesiredAccess,
1718 LPSECURITY_ATTRIBUTES lpsa)
1719{
1720 dprintf(("USER32:CreateDesktopA(%s,%s,%08xh,%08xh,%08xh,%08x) not implemented.\n",
1721 lpszDesktop,
1722 lpszDevice,
1723 pDevMode,
1724 dwFlags,
1725 dwDesiredAccess,
1726 lpsa));
1727
1728 return (NULL);
1729}
1730
1731
1732/*****************************************************************************
1733 * Name : HDESK WIN32API CreateDesktopW
1734 * Purpose : The CreateDesktop function creates a new desktop on the window
1735 * station associated with the calling process.
1736 * Parameters: LPCTSTR lpszDesktop name of the new desktop
1737 * LPCTSTR lpszDevice name of display device to assign to the desktop
1738 * LPDEVMODE pDevMode reserved; must be NULL
1739 * DWORD dwFlags flags to control interaction with other applications
1740 * DWORD dwDesiredAccess specifies access of returned handle
1741 * LPSECURITY_ATTRIBUTES lpsa specifies security attributes of the desktop
1742 * Variables :
1743 * Result : If the function succeeds, the return value is a handle of the
1744 * newly created desktop.
1745 * If the function fails, the return value is NULL. To get extended
1746 * error information, call GetLastError.
1747 * Remark :
1748 * Status : UNTESTED STUB
1749 *
1750 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1751 *****************************************************************************/
1752
1753HDESK WIN32API CreateDesktopW(LPCTSTR lpszDesktop,
1754 LPCTSTR lpszDevice,
1755 LPDEVMODEW pDevMode,
1756 DWORD dwFlags,
1757 DWORD dwDesiredAccess,
1758 LPSECURITY_ATTRIBUTES lpsa)
1759{
1760 dprintf(("USER32:CreateDesktopW(%s,%s,%08xh,%08xh,%08xh,%08x) not implemented.\n",
1761 lpszDesktop,
1762 lpszDevice,
1763 pDevMode,
1764 dwFlags,
1765 dwDesiredAccess,
1766 lpsa));
1767
1768 return (NULL);
1769}
1770
1771
1772/*****************************************************************************
1773 * Name : HWINSTA WIN32API CreateWindowStationA
1774 * Purpose : The CreateWindowStation function creates a window station object.
1775 * It returns a handle that can be used to access the window station.
1776 * A window station is a secure object that contains a set of global
1777 * atoms, a clipboard, and a set of desktop objects.
1778 * Parameters: LPTSTR lpwinsta name of the new window station
1779 * DWORD dwReserved reserved; must be NULL
1780 * DWORD dwDesiredAccess specifies access of returned handle
1781 * LPSECURITY_ATTRIBUTES lpsa specifies security attributes of the window station
1782 * Variables :
1783 * Result : If the function succeeds, the return value is the handle to the
1784 * newly created window station.
1785 * If the function fails, the return value is NULL. To get extended
1786 * error information, call GetLastError.
1787 * Remark :
1788 * Status : UNTESTED STUB
1789 *
1790 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1791 *****************************************************************************/
1792
1793HWINSTA WIN32API CreateWindowStationA(LPTSTR lpWinSta,
1794 DWORD dwReserved,
1795 DWORD dwDesiredAccess,
1796 LPSECURITY_ATTRIBUTES lpsa)
1797{
1798 dprintf(("USER32:CreateWindowStationA(%s,%08xh,%08xh,%08x) not implemented.\n",
1799 lpWinSta,
1800 dwReserved,
1801 dwDesiredAccess,
1802 lpsa));
1803
1804 return (NULL);
1805}
1806
1807
1808/*****************************************************************************
1809 * Name : HWINSTA WIN32API CreateWindowStationW
1810 * Purpose : The CreateWindowStation function creates a window station object.
1811 * It returns a handle that can be used to access the window station.
1812 * A window station is a secure object that contains a set of global
1813 * atoms, a clipboard, and a set of desktop objects.
1814 * Parameters: LPTSTR lpwinsta name of the new window station
1815 * DWORD dwReserved reserved; must be NULL
1816 * DWORD dwDesiredAccess specifies access of returned handle
1817 * LPSECURITY_ATTRIBUTES lpsa specifies security attributes of the window station
1818 * Variables :
1819 * Result : If the function succeeds, the return value is the handle to the
1820 * newly created window station.
1821 * If the function fails, the return value is NULL. To get extended
1822 * error information, call GetLastError.
1823 * Remark :
1824 * Status : UNTESTED STUB
1825 *
1826 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1827 *****************************************************************************/
1828
1829HWINSTA WIN32API CreateWindowStationW(LPWSTR lpWinSta,
1830 DWORD dwReserved,
1831 DWORD dwDesiredAccess,
1832 LPSECURITY_ATTRIBUTES lpsa)
1833{
1834 dprintf(("USER32:CreateWindowStationW(%s,%08xh,%08xh,%08x) not implemented.\n",
1835 lpWinSta,
1836 dwReserved,
1837 dwDesiredAccess,
1838 lpsa));
1839
1840 return (NULL);
1841}
1842
1843/*****************************************************************************
1844 * Name : BOOL WIN32API DragDetect
1845 * Purpose : The DragDetect function captures the mouse and tracks its movement
1846 * Parameters: HWND hwnd
1847 * POINT pt
1848 * Variables :
1849 * Result : If the user moved the mouse outside of the drag rectangle while
1850 * holding the left button down, the return value is TRUE.
1851 * If the user did not move the mouse outside of the drag rectangle
1852 * while holding the left button down, the return value is FALSE.
1853 * Remark :
1854 * Status : UNTESTED STUB
1855 *
1856 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1857 *****************************************************************************/
1858
1859BOOL WIN32API DragDetect(HWND hwnd,
1860 POINT pt)
1861{
1862 dprintf(("USER32:DragDetect(%08xh,...) not implemented.\n",
1863 hwnd));
1864
1865 return (FALSE);
1866}
1867
1868
1869
1870/*****************************************************************************
1871 * Name : BOOL WIN32API EnumDesktopWindows
1872 * Purpose : The EnumDesktopWindows function enumerates all windows in a
1873 * desktop by passing the handle of each window, in turn, to an
1874 * application-defined callback function.
1875 * Parameters: HDESK hDesktop handle of desktop to enumerate
1876 * WNDENUMPROC lpfn points to application's callback function
1877 * LPARAM lParam 32-bit value to pass to the callback function
1878 * Variables :
1879 * Result : If the function succeeds, the return value is TRUE.
1880 * If the function fails, the return value is FALSE. To get
1881 * extended error information, call GetLastError.
1882 * Remark :
1883 * Status : UNTESTED STUB
1884 *
1885 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1886 *****************************************************************************/
1887
1888BOOL WIN32API EnumDesktopWindows(HDESK hDesktop,
1889 WNDENUMPROC lpfn,
1890 LPARAM lParam)
1891{
1892 dprintf(("USER32:EnumDesktopWindows (%08xh,%08xh,%08x) not implemented.\n",
1893 hDesktop,
1894 lpfn,
1895 lParam));
1896
1897 return (FALSE);
1898}
1899
1900
1901/*****************************************************************************
1902 * Name : BOOL WIN32API EnumDesktopsA
1903 * Purpose : The EnumDesktops function enumerates all desktops in the window
1904 * station assigned to the calling process. The function does so by
1905 * passing the name of each desktop, in turn, to an application-
1906 * defined callback function.
1907 * Parameters: HWINSTA hwinsta handle of window station to enumerate
1908 * DESKTOPENUMPROC lpEnumFunc points to application's callback function
1909 * LPARAM lParam 32-bit value to pass to the callback function
1910 * Variables :
1911 * Result : If the function succeeds, the return value is TRUE.
1912 * If the function fails, the return value is FALSE. To get extended
1913 * error information, call GetLastError.
1914 * Remark :
1915 * Status : UNTESTED STUB
1916 *
1917 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1918 *****************************************************************************/
1919
1920BOOL WIN32API EnumDesktopsA(HWINSTA hWinSta,
1921 DESKTOPENUMPROCA lpEnumFunc,
1922 LPARAM lParam)
1923{
1924 dprintf(("USER32:EnumDesktopsA (%08xh,%08xh,%08x) not implemented.\n",
1925 hWinSta,
1926 lpEnumFunc,
1927 lParam));
1928
1929 return (FALSE);
1930}
1931
1932
1933/*****************************************************************************
1934 * Name : BOOL WIN32API EnumDesktopsW
1935 * Purpose : The EnumDesktops function enumerates all desktops in the window
1936 * station assigned to the calling process. The function does so by
1937 * passing the name of each desktop, in turn, to an application-
1938 * defined callback function.
1939 * Parameters: HWINSTA hwinsta handle of window station to enumerate
1940 * DESKTOPENUMPROC lpEnumFunc points to application's callback function
1941 * LPARAM lParam 32-bit value to pass to the callback function
1942 * Variables :
1943 * Result : If the function succeeds, the return value is TRUE.
1944 * If the function fails, the return value is FALSE. To get extended
1945 * error information, call GetLastError.
1946 * Remark :
1947 * Status : UNTESTED STUB
1948 *
1949 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1950 *****************************************************************************/
1951
1952BOOL WIN32API EnumDesktopsW(HWINSTA hWinSta,
1953 DESKTOPENUMPROCW lpEnumFunc,
1954 LPARAM lParam)
1955{
1956 dprintf(("USER32:EnumDesktopsW (%08xh,%08xh,%08x) not implemented.\n",
1957 hWinSta,
1958 lpEnumFunc,
1959 lParam));
1960
1961 return (FALSE);
1962}
1963
1964
1965
1966/*****************************************************************************
1967 * Name : BOOL WIN32API EnumDisplaySettingsW
1968 * Purpose : The EnumDisplaySettings function obtains information about one
1969 * of a display device's graphics modes. You can obtain information
1970 * for all of a display device's graphics modes by making a series
1971 * of calls to this function.
1972 * Parameters: LPCTSTR lpszDeviceName specifies the display device
1973 * DWORD iModeNum specifies the graphics mode
1974 * LPDEVMODE lpDevMode points to structure to receive settings
1975 * Variables :
1976 * Result : If the function succeeds, the return value is TRUE.
1977 * If the function fails, the return value is FALSE.
1978 * Remark :
1979 * Status : UNTESTED STUB
1980 *
1981 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
1982 *****************************************************************************/
1983
1984BOOL WIN32API EnumDisplaySettingsW(LPCSTR lpszDeviceName,
1985 DWORD iModeNum,
1986 LPDEVMODEW lpDevMode)
1987{
1988 dprintf(("USER32:EnumDisplaySettingsW (%s,%08xh,%08x) not implemented.\n",
1989 lpszDeviceName,
1990 iModeNum,
1991 lpDevMode));
1992
1993 return (EnumDisplaySettingsA(lpszDeviceName,
1994 iModeNum,
1995 (LPDEVMODEA)lpDevMode));
1996}
1997
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 *****************************************************************************/
2015
2016BOOL WIN32API EnumWindowStationsA(WINSTAENUMPROCA lpEnumFunc,
2017 LPARAM lParam)
2018{
2019 dprintf(("USER32:EnumWindowStationsA (%08xh,%08x) not implemented.\n",
2020 lpEnumFunc,
2021 lParam));
2022
2023 return (FALSE);
2024}
2025
2026
2027/*****************************************************************************
2028 * Name : BOOL WIN32API EnumWindowStationsW
2029 * Purpose : The EnumWindowStations function enumerates all windowstations
2030 * in the system by passing the name of each window station, in
2031 * turn, to an application-defined callback function.
2032 * Parameters:
2033 * Variables : WINSTAENUMPROC lpEnumFunc points to application's callback function
2034 * LPARAM lParam 32-bit value to pass to the callback function
2035 * Result : If the function succeeds, the return value is TRUE.
2036 * If the function fails the return value is FALSE. To get extended
2037 * error information, call GetLastError.
2038 * Remark :
2039 * Status : UNTESTED STUB
2040 *
2041 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2042 *****************************************************************************/
2043
2044BOOL WIN32API EnumWindowStationsW(WINSTAENUMPROCW lpEnumFunc,
2045 LPARAM lParam)
2046{
2047 dprintf(("USER32:EnumWindowStationsW (%08xh,%08x) not implemented.\n",
2048 lpEnumFunc,
2049 lParam));
2050
2051 return (FALSE);
2052}
2053
2054
2055
2056/*****************************************************************************
2057 * Name : BOOL WIN32API GetInputState
2058 * Purpose : The GetInputState function determines whether there are
2059 * mouse-button or keyboard messages in the calling thread's message queue.
2060 * Parameters:
2061 * Variables :
2062 * Result : If the queue contains one or more new mouse-button or keyboard
2063 * messages, the return value is TRUE.
2064 * If the function fails, the return value is FALSE.
2065 * Remark :
2066 * Status : UNTESTED STUB
2067 *
2068 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2069 *****************************************************************************/
2070
2071BOOL WIN32API GetInputState(VOID)
2072{
2073 dprintf(("USER32:GetInputState () not implemented.\n"));
2074
2075 return (FALSE);
2076}
2077
2078
2079/*****************************************************************************
2080 * Name : UINT WIN32API GetKBCodePage
2081 * Purpose : The GetKBCodePage function is provided for compatibility with
2082 * earlier versions of Windows. In the Win32 application programming
2083 * interface (API) it just calls the GetOEMCP function.
2084 * Parameters:
2085 * Variables :
2086 * Result : If the function succeeds, the return value is an OEM code-page
2087 * identifier, or it is the default identifier if the registry
2088 * value is not readable. For a list of OEM code-page identifiers,
2089 * see GetOEMCP.
2090 * Remark :
2091 * Status : UNTESTED
2092 *
2093 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2094 *****************************************************************************/
2095
2096UINT WIN32API GetKBCodePage(VOID)
2097{
2098 return (GetOEMCP());
2099}
2100
2101
2102/*****************************************************************************
2103 * Name : BOOL WIN32API GetKeyboardLayoutNameA
2104 * Purpose : The GetKeyboardLayoutName function retrieves the name of the
2105 * active keyboard layout.
2106 * Parameters: LPTSTR pwszKLID address of buffer for layout name
2107 * Variables :
2108 * Result : If the function succeeds, the return value is TRUE.
2109 * If the function fails, the return value is FALSE. To get extended
2110 * error information, call GetLastError.
2111 * Remark :
2112 * Status : UNTESTED STUB
2113 *
2114 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2115 *****************************************************************************/
2116
2117BOOL WIN32API GetKeyboardLayoutNameA(LPTSTR pwszKLID)
2118{
2119 dprintf(("USER32:GetKeyboardLayoutNameA (%08x) not implemented.",
2120 pwszKLID));
2121
2122 return(FALSE);
2123}
2124
2125
2126/*****************************************************************************
2127 * Name : BOOL WIN32API GetKeyboardLayoutNameW
2128 * Purpose : The GetKeyboardLayoutName function retrieves the name of the
2129 * active keyboard layout.
2130 * Parameters: LPTSTR pwszKLID address of buffer for layout name
2131 * Variables :
2132 * Result : If the function succeeds, the return value is TRUE.
2133 * If the function fails, the return value is FALSE. To get extended
2134 * error information, call GetLastError.
2135 * Remark :
2136 * Status : UNTESTED STUB
2137 *
2138 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2139 *****************************************************************************/
2140
2141BOOL WIN32API GetKeyboardLayoutNameW(LPWSTR pwszKLID)
2142{
2143 dprintf(("USER32:GetKeyboardLayoutNameW (%08x) not implemented.",
2144 pwszKLID));
2145
2146 return(FALSE);
2147}
2148
2149
2150
2151
2152/*****************************************************************************
2153 * Name : HWINSTA WIN32API GetProcessWindowStation
2154 * Purpose : The GetProcessWindowStation function returns a handle of the
2155 * window station associated with the calling process.
2156 * Parameters:
2157 * Variables :
2158 * Result : If the function succeeds, the return value is a handle of the
2159 * window station associated with the calling process.
2160 * If the function fails, the return value is NULL. This can occur
2161 * if the calling process is not an application written for Windows
2162 * NT. To get extended error information, call GetLastError.
2163 * Remark :
2164 * Status : UNTESTED STUB
2165 *
2166 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2167 *****************************************************************************/
2168
2169HWINSTA WIN32API GetProcessWindowStation(VOID)
2170{
2171 dprintf(("USER32:GetProcessWindowStation () not implemented.\n"));
2172
2173 return (NULL);
2174}
2175
2176
2177
2178/*****************************************************************************
2179 * Name : HDESK WIN32API GetThreadDesktop
2180 * Purpose : The GetThreadDesktop function returns a handle to the desktop
2181 * associated with a specified thread.
2182 * Parameters: DWORD dwThreadId thread identifier
2183 * Variables :
2184 * Result : If the function succeeds, the return value is the handle of the
2185 * desktop associated with the specified thread.
2186 * Remark :
2187 * Status : UNTESTED STUB
2188 *
2189 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2190 *****************************************************************************/
2191
2192HDESK WIN32API GetThreadDesktop(DWORD dwThreadId)
2193{
2194 dprintf(("USER32:GetThreadDesktop (%u) not implemented.\n",
2195 dwThreadId));
2196
2197 return (NULL);
2198}
2199
2200
2201/*****************************************************************************
2202 * Name : BOOL WIN32API GetUserObjectInformationA
2203 * Purpose : The GetUserObjectInformation function returns information about
2204 * a window station or desktop object.
2205 * Parameters: HANDLE hObj handle of object to get information for
2206 * int nIndex type of information to get
2207 * PVOID pvInfo points to buffer that receives the information
2208 * DWORD nLength size, in bytes, of pvInfo buffer
2209 * LPDWORD lpnLengthNeeded receives required size, in bytes, of pvInfo buffer
2210 * Variables :
2211 * Result : If the function succeeds, the return value is TRUE.
2212 * If the function fails, the return value is FALSE. To get extended
2213 * error information, call GetLastError.
2214 * Remark :
2215 * Status : UNTESTED STUB
2216 *
2217 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2218 *****************************************************************************/
2219
2220BOOL WIN32API GetUserObjectInformationA(HANDLE hObj,
2221 int nIndex,
2222 PVOID pvInfo,
2223 DWORD nLength,
2224 LPDWORD lpnLengthNeeded)
2225{
2226 dprintf(("USER32:GetUserObjectInformationA (%08xh,%08xh,%08xh,%u,%08x) not implemented.\n",
2227 hObj,
2228 nIndex,
2229 pvInfo,
2230 nLength,
2231 lpnLengthNeeded));
2232
2233 return (FALSE);
2234}
2235
2236
2237/*****************************************************************************
2238 * Name : BOOL WIN32API GetUserObjectInformationW
2239 * Purpose : The GetUserObjectInformation function returns information about
2240 * a window station or desktop object.
2241 * Parameters: HANDLE hObj handle of object to get information for
2242 * int nIndex type of information to get
2243 * PVOID pvInfo points to buffer that receives the information
2244 * DWORD nLength size, in bytes, of pvInfo buffer
2245 * LPDWORD lpnLengthNeeded receives required size, in bytes, of pvInfo buffer
2246 * Variables :
2247 * Result : If the function succeeds, the return value is TRUE.
2248 * If the function fails, the return value is FALSE. To get extended
2249 * error information, call GetLastError.
2250 * Remark :
2251 * Status : UNTESTED STUB
2252 *
2253 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2254 *****************************************************************************/
2255
2256BOOL WIN32API GetUserObjectInformationW(HANDLE hObj,
2257 int nIndex,
2258 PVOID pvInfo,
2259 DWORD nLength,
2260 LPDWORD lpnLengthNeeded)
2261{
2262 dprintf(("USER32:GetUserObjectInformationW (%08xh,%08xh,%08xh,%u,%08x) not implemented.\n",
2263 hObj,
2264 nIndex,
2265 pvInfo,
2266 nLength,
2267 lpnLengthNeeded));
2268
2269 return (FALSE);
2270}
2271
2272
2273/*****************************************************************************
2274 * Name : BOOL WIN32API GetUserObjectSecurity
2275 * Purpose : The GetUserObjectSecurity function retrieves security information
2276 * for the specified user object.
2277 * Parameters: HANDLE hObj handle of user object
2278 * SECURITY_INFORMATION * pSIRequested address of requested security information
2279 * LPSECURITY_DESCRIPTOR pSID address of security descriptor
2280 * DWORD nLength size of buffer for security descriptor
2281 * LPDWORD lpnLengthNeeded address of required size of buffer
2282 * Variables :
2283 * Result : If the function succeeds, the return value is TRUE.
2284 * If the function fails, the return value is FALSE. To get extended
2285 * error information, call GetLastError.
2286 * Remark :
2287 * Status : UNTESTED STUB
2288 *
2289 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2290 *****************************************************************************/
2291
2292BOOL WIN32API GetUserObjectSecurity(HANDLE hObj,
2293 SECURITY_INFORMATION * pSIRequested,
2294 LPSECURITY_DESCRIPTOR pSID,
2295 DWORD nLength,
2296 LPDWORD lpnLengthNeeded)
2297{
2298 dprintf(("USER32:GetUserObjectSecurity (%08xh,%08xh,%08xh,%u,%08x) not implemented.\n",
2299 hObj,
2300 pSIRequested,
2301 pSID,
2302 nLength,
2303 lpnLengthNeeded));
2304
2305 return (FALSE);
2306}
2307
2308
2309
2310/*****************************************************************************
2311 * Name : int WIN32API GetWindowRgn
2312 * Purpose : The GetWindowRgn function obtains a copy of the window region of a window.
2313 * Parameters: HWND hWnd handle to window whose window region is to be obtained
2314 * HRGN hRgn handle to region that receives a copy of the window region
2315 * Variables :
2316 * Result : NULLREGION, SIMPLEREGION, COMPLEXREGION, ERROR
2317 * Remark :
2318 * Status : UNTESTED STUB
2319 *
2320 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2321 *****************************************************************************/
2322
2323int WIN32API GetWindowRgn (HWND hWnd,
2324 HRGN hRgn)
2325{
2326 dprintf(("USER32:GetWindowRgn (%08xh,%08x) not implemented.\n",
2327 hWnd,
2328 hRgn));
2329
2330 return (NULLREGION);
2331}
2332
2333
2334
2335/*****************************************************************************
2336 * Name : HCURSOR WIN32API LoadCursorFromFileA
2337 * Purpose : The LoadCursorFromFile function creates a cursor based on data
2338 * contained in a file. The file is specified by its name or by a
2339 * system cursor identifier. The function returns a handle to the
2340 * newly created cursor. Files containing cursor data may be in
2341 * either cursor (.CUR) or animated cursor (.ANI) format.
2342 * Parameters: LPCTSTR lpFileName pointer to cursor file, or system cursor id
2343 * Variables :
2344 * Result : If the function is successful, the return value is a handle to
2345 * the new cursor.
2346 * If the function fails, the return value is NULL. To get extended
2347 * error information, call GetLastError. GetLastError may return
2348 * the following
2349 * Remark :
2350 * Status : UNTESTED STUB
2351 *
2352 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2353 *****************************************************************************/
2354
2355HCURSOR WIN32API LoadCursorFromFileA(LPCTSTR lpFileName)
2356{
2357 dprintf(("USER32:LoadCursorFromFileA (%s) not implemented.\n",
2358 lpFileName));
2359
2360 return (NULL);
2361}
2362
2363
2364/*****************************************************************************
2365 * Name : HCURSOR WIN32API LoadCursorFromFileW
2366 * Purpose : The LoadCursorFromFile function creates a cursor based on data
2367 * contained in a file. The file is specified by its name or by a
2368 * system cursor identifier. The function returns a handle to the
2369 * newly created cursor. Files containing cursor data may be in
2370 * either cursor (.CUR) or animated cursor (.ANI) format.
2371 * Parameters: LPCTSTR lpFileName pointer to cursor file, or system cursor id
2372 * Variables :
2373 * Result : If the function is successful, the return value is a handle to
2374 * the new cursor.
2375 * If the function fails, the return value is NULL. To get extended
2376 * error information, call GetLastError. GetLastError may return
2377 * the following
2378 * Remark :
2379 * Status : UNTESTED STUB
2380 *
2381 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2382 *****************************************************************************/
2383
2384HCURSOR WIN32API LoadCursorFromFileW(LPCWSTR lpFileName)
2385{
2386 dprintf(("USER32:LoadCursorFromFileW (%s) not implemented.\n",
2387 lpFileName));
2388
2389 return (NULL);
2390}
2391
2392
2393/*****************************************************************************
2394 * Name : HLK WIN32API LoadKeyboardLayoutA
2395 * Purpose : The LoadKeyboardLayout function loads a new keyboard layout into
2396 * the system. Several keyboard layouts can be loaded at a time, but
2397 * only one per process is active at a time. Loading multiple keyboard
2398 * layouts makes it possible to rapidly switch between layouts.
2399 * Parameters:
2400 * Variables :
2401 * Result : If the function succeeds, the return value is the handle of the
2402 * keyboard layout.
2403 * If the function fails, the return value is NULL. To get extended
2404 * error information, call GetLastError.
2405 * Remark :
2406 * Status : UNTESTED STUB
2407 *
2408 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2409 *****************************************************************************/
2410
2411HKL WIN32API LoadKeyboardLayoutA(LPCTSTR pwszKLID,
2412 UINT Flags)
2413{
2414 dprintf(("USER32:LeadKeyboardLayoutA (%s,%u) not implemented.\n",
2415 pwszKLID,
2416 Flags));
2417
2418 return (NULL);
2419}
2420
2421
2422/*****************************************************************************
2423 * Name : HLK WIN32API LoadKeyboardLayoutW
2424 * Purpose : The LoadKeyboardLayout function loads a new keyboard layout into
2425 * the system. Several keyboard layouts can be loaded at a time, but
2426 * only one per process is active at a time. Loading multiple keyboard
2427 * layouts makes it possible to rapidly switch between layouts.
2428 * Parameters:
2429 * Variables :
2430 * Result : If the function succeeds, the return value is the handle of the
2431 * keyboard layout.
2432 * If the function fails, the return value is NULL. To get extended
2433 * error information, call GetLastError.
2434 * Remark :
2435 * Status : UNTESTED STUB
2436 *
2437 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2438 *****************************************************************************/
2439
2440HKL WIN32API LoadKeyboardLayoutW(LPCWSTR pwszKLID,
2441 UINT Flags)
2442{
2443 dprintf(("USER32:LeadKeyboardLayoutW (%s,%u) not implemented.\n",
2444 pwszKLID,
2445 Flags));
2446
2447 return (NULL);
2448}
2449
2450
2451/*****************************************************************************
2452 * Name : UINT WIN32API MapVirtualKeyExA
2453 * Purpose : The MapVirtualKeyEx function translates (maps) a virtual-key
2454 * code into a scan code or character value, or translates a scan
2455 * code into a virtual-key code. The function translates the codes
2456 * using the input language and physical keyboard layout identified
2457 * by the given keyboard layout handle.
2458 * Parameters:
2459 * Variables :
2460 * Result : The return value is either a scan code, a virtual-key code, or
2461 * a character value, depending on the value of uCode and uMapType.
2462 * If there is no translation, the return value is zero.
2463 * Remark :
2464 * Status : UNTESTED STUB
2465 *
2466 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2467 *****************************************************************************/
2468
2469UINT WIN32API MapVirtualKeyExA(UINT uCode,
2470 UINT uMapType,
2471 HKL dwhkl)
2472{
2473 dprintf(("USER32:MapVirtualKeyExA (%u,%u,%08x) not implemented.\n",
2474 uCode,
2475 uMapType,
2476 dwhkl));
2477
2478 return (0);
2479}
2480
2481
2482/*****************************************************************************
2483 * Name : UINT WIN32API MapVirtualKeyExW
2484 * Purpose : The MapVirtualKeyEx function translates (maps) a virtual-key
2485 * code into a scan code or character value, or translates a scan
2486 * code into a virtual-key code. The function translates the codes
2487 * using the input language and physical keyboard layout identified
2488 * by the given keyboard layout handle.
2489 * Parameters:
2490 * Variables :
2491 * Result : The return value is either a scan code, a virtual-key code, or
2492 * a character value, depending on the value of uCode and uMapType.
2493 * If there is no translation, the return value is zero.
2494 * Remark :
2495 * Status : UNTESTED STUB
2496
2497 *
2498 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2499 *****************************************************************************/
2500
2501UINT WIN32API MapVirtualKeyExW(UINT uCode,
2502 UINT uMapType,
2503 HKL dwhkl)
2504{
2505 dprintf(("USER32:MapVirtualKeyExW (%u,%u,%08x) not implemented.\n",
2506 uCode,
2507 uMapType,
2508 dwhkl));
2509
2510 return (0);
2511}
2512
2513/*****************************************************************************
2514 * Name : DWORD WIN32API OemKeyScan
2515 * Purpose : The OemKeyScan function maps OEM ASCII codes 0 through 0x0FF
2516 * into the OEM scan codes and shift states. The function provides
2517 * information that allows a program to send OEM text to another
2518 * program by simulating keyboard input.
2519 * Parameters:
2520 * Variables :
2521 * Result :
2522 * Remark :
2523 * Status : UNTESTED STUB
2524 *
2525 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2526 *****************************************************************************/
2527
2528DWORD WIN32API OemKeyScan(WORD wOemChar)
2529{
2530 dprintf(("USER32:OemKeyScan (%u) not implemented.\n",
2531 wOemChar));
2532
2533 return (wOemChar);
2534}
2535
2536
2537/*****************************************************************************
2538 * Name : HDESK WIN32API OpenDesktopA
2539 * Purpose : The OpenDesktop function returns a handle to an existing desktop.
2540 * A desktop is a secure object contained within a window station
2541 * object. A desktop has a logical display surface and contains
2542 * windows, menus and hooks.
2543 * Parameters: LPCTSTR lpszDesktopName name of the desktop to open
2544 * DWORD dwFlags flags to control interaction with other applications
2545 * BOOL fInherit specifies whether returned handle is inheritable
2546 * DWORD dwDesiredAccess specifies access of returned handle
2547 * Variables :
2548 * Result : If the function succeeds, the return value is the handle to the
2549 * opened desktop.
2550 * If the function fails, the return value is NULL. To get extended
2551 * error information, call GetLastError.
2552 * Remark :
2553 * Status : UNTESTED STUB
2554 *
2555 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2556 *****************************************************************************/
2557
2558HDESK WIN32API OpenDesktopA(LPCTSTR lpszDesktopName,
2559 DWORD dwFlags,
2560 BOOL fInherit,
2561 DWORD dwDesiredAccess)
2562{
2563 dprintf(("USER32:OpenDesktopA (%s,%08xh,%08xh,%08x) not implemented.\n",
2564 lpszDesktopName,
2565 dwFlags,
2566 fInherit,
2567 dwDesiredAccess));
2568
2569 return (NULL);
2570}
2571
2572
2573/*****************************************************************************
2574 * Name : HDESK WIN32API OpenDesktopW
2575 * Purpose : The OpenDesktop function returns a handle to an existing desktop.
2576 * A desktop is a secure object contained within a window station
2577 * object. A desktop has a logical display surface and contains
2578 * windows, menus and hooks.
2579 * Parameters: LPCTSTR lpszDesktopName name of the desktop to open
2580 * DWORD dwFlags flags to control interaction with other applications
2581 * BOOL fInherit specifies whether returned handle is inheritable
2582 * DWORD dwDesiredAccess specifies access of returned handle
2583 * Variables :
2584 * Result : If the function succeeds, the return value is the handle to the
2585 * opened desktop.
2586 * If the function fails, the return value is NULL. To get extended
2587 * error information, call GetLastError.
2588 * Remark :
2589 * Status : UNTESTED STUB
2590 *
2591 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2592 *****************************************************************************/
2593
2594HDESK WIN32API OpenDesktopW(LPCTSTR lpszDesktopName,
2595 DWORD dwFlags,
2596 BOOL fInherit,
2597 DWORD dwDesiredAccess)
2598{
2599 dprintf(("USER32:OpenDesktopW (%s,%08xh,%08xh,%08x) not implemented.\n",
2600 lpszDesktopName,
2601 dwFlags,
2602 fInherit,
2603 dwDesiredAccess));
2604
2605 return (NULL);
2606}
2607
2608
2609/*****************************************************************************
2610 * Name : HDESK WIN32API OpenInputDesktop
2611 * Purpose : The OpenInputDesktop function returns a handle to the desktop
2612 * that receives user input. The input desktop is a desktop on the
2613 * window station associated with the logged-on user.
2614 * Parameters: DWORD dwFlags flags to control interaction with other applications
2615 * BOOL fInherit specifies whether returned handle is inheritable
2616 * DWORD dwDesiredAccess specifies access of returned handle
2617 * Variables :
2618 * Result : If the function succeeds, the return value is a handle of the
2619 * desktop that receives user input.
2620 * If the function fails, the return value is NULL. To get extended
2621 * error information, call GetLastError.
2622 * Remark :
2623 * Status : UNTESTED STUB
2624 *
2625 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2626 *****************************************************************************/
2627
2628HDESK WIN32API OpenInputDesktop(DWORD dwFlags,
2629 BOOL fInherit,
2630 DWORD dwDesiredAccess)
2631{
2632 dprintf(("USER32:OpenInputDesktop (%08xh,%08xh,%08x) not implemented.\n",
2633 dwFlags,
2634 fInherit,
2635 dwDesiredAccess));
2636
2637 return (NULL);
2638}
2639
2640
2641/*****************************************************************************
2642 * Name : HWINSTA WIN32API OpenWindowStationA
2643 * Purpose : The OpenWindowStation function returns a handle to an existing
2644 * window station.
2645 * Parameters: LPCTSTR lpszWinStaName name of the window station to open
2646 * BOOL fInherit specifies whether returned handle is inheritable
2647 * DWORD dwDesiredAccess specifies access of returned handle
2648 * Variables :
2649 * Result : If the function succeeds, the return value is the handle to the
2650 * specified window station.
2651 * If the function fails, the return value is NULL. To get extended
2652 * error information, call GetLastError.
2653 * Remark :
2654 * Status : UNTESTED STUB
2655 *
2656 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2657 *****************************************************************************/
2658
2659HWINSTA WIN32API OpenWindowStationA(LPCTSTR lpszWinStaName,
2660 BOOL fInherit,
2661 DWORD dwDesiredAccess)
2662{
2663 dprintf(("USER32:OpenWindowStatieonA (%s,%08xh,%08x) not implemented.\n",
2664 lpszWinStaName,
2665 fInherit,
2666 dwDesiredAccess));
2667
2668 return (NULL);
2669}
2670
2671
2672/*****************************************************************************
2673 * Name : HWINSTA WIN32API OpenWindowStationW
2674 * Purpose : The OpenWindowStation function returns a handle to an existing
2675 * window station.
2676 * Parameters: LPCTSTR lpszWinStaName name of the window station to open
2677 * BOOL fInherit specifies whether returned handle is inheritable
2678 * DWORD dwDesiredAccess specifies access of returned handle
2679 * Variables :
2680 * Result : If the function succeeds, the return value is the handle to the
2681 * specified window station.
2682 * If the function fails, the return value is NULL. To get extended
2683 * error information, call GetLastError.
2684
2685
2686 * Remark :
2687 * Status : UNTESTED STUB
2688 *
2689 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2690 *****************************************************************************/
2691
2692HWINSTA WIN32API OpenWindowStationW(LPCTSTR lpszWinStaName,
2693 BOOL fInherit,
2694 DWORD dwDesiredAccess)
2695{
2696 dprintf(("USER32:OpenWindowStatieonW (%s,%08xh,%08x) not implemented.\n",
2697 lpszWinStaName,
2698 fInherit,
2699 dwDesiredAccess));
2700
2701 return (NULL);
2702}
2703
2704
2705/*****************************************************************************
2706 * Name : BOOL WIN32API PaintDesktop
2707 * Purpose : The PaintDesktop function fills the clipping region in the
2708 * specified device context with the desktop pattern or wallpaper.
2709 * The function is provided primarily for shell desktops.
2710 * Parameters:
2711 * Variables :
2712 * Result : If the function succeeds, the return value is TRUE.
2713 * If the function fails, the return value is FALSE.
2714 * Remark :
2715 * Status : UNTESTED STUB
2716 *
2717 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2718 *****************************************************************************/
2719
2720BOOL WIN32API PaintDesktop(HDC hdc)
2721{
2722 dprintf(("USER32:PaintDesktop (%08x) not implemented.\n",
2723 hdc));
2724
2725 return (FALSE);
2726}
2727
2728
2729
2730/*****************************************************************************
2731 * Name : VOID WIN32API SetDebugErrorLevel
2732 * Purpose : The SetDebugErrorLevel function sets the minimum error level at
2733 * which Windows will generate debugging events and pass them to a debugger.
2734 * Parameters: DWORD dwLevel debugging error level
2735 * Variables :
2736 * Result :
2737 * Remark :
2738 * Status : UNTESTED STUB
2739 *
2740 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2741 *****************************************************************************/
2742
2743VOID WIN32API SetDebugErrorLevel(DWORD dwLevel)
2744{
2745 dprintf(("USER32:SetDebugErrorLevel (%08x) not implemented.\n",
2746 dwLevel));
2747}
2748
2749
2750/*****************************************************************************
2751 * Name : BOOL WIN32API SetProcessWindowStation
2752 * Purpose : The SetProcessWindowStation function assigns a window station
2753 * to the calling process. This enables the process to access
2754 * objects in the window station such as desktops, the clipboard,
2755 * and global atoms. All subsequent operations on the window station
2756 * use the access rights granted to hWinSta.
2757 * Parameters:
2758 * Variables :
2759 * Result : If the function succeeds, the return value is TRUE.
2760 * If the function fails, the return value is FALSE. To get extended
2761 * error information, call GetLastError.
2762 * Remark :
2763 * Status : UNTESTED STUB
2764 *
2765 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2766 *****************************************************************************/
2767
2768BOOL WIN32API SetProcessWindowStation(HWINSTA hWinSta)
2769{
2770 dprintf(("USER32:SetProcessWindowStation (%08x) not implemented.\n",
2771 hWinSta));
2772
2773 return (FALSE);
2774}
2775
2776
2777/*****************************************************************************
2778 * Name : BOOL WIN32API SetSystemCursor
2779 * Purpose : The SetSystemCursor function replaces the contents of the system
2780 * cursor specified by dwCursorId with the contents of the cursor
2781 * specified by hCursor, and then destroys hCursor. This function
2782 * lets an application customize the system cursors.
2783 * Parameters: HCURSOR hCursor set specified system cursor to this cursor's
2784 * contents, then destroy this
2785 * DWORD dwCursorID system cursor specified by its identifier
2786 * Variables :
2787 * Result : If the function succeeds, the return value is TRUE.
2788 * If the function fails, the return value is FALSE. To get extended
2789 * error information, call GetLastError.
2790 * Remark :
2791 * Status : UNTESTED STUB
2792 *
2793 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2794 *****************************************************************************/
2795
2796BOOL WIN32API SetSystemCursor(HCURSOR hCursor,
2797 DWORD dwCursorId)
2798{
2799 dprintf(("USER32:SetSystemCursor (%08xh,%08x) not implemented.\n",
2800 hCursor,
2801 dwCursorId));
2802
2803 return (FALSE);
2804}
2805
2806
2807/*****************************************************************************
2808 * Name : BOOL WIN32API SetThreadDesktop
2809 * Purpose : The SetThreadDesktop function assigns a desktop to the calling
2810 * thread. All subsequent operations on the desktop use the access
2811 * rights granted to hDesk.
2812 * Parameters: HDESK hDesk handle of the desktop to assign to this thread
2813 * Variables :
2814 * Result : If the function succeeds, the return value is TRUE.
2815 * If the function fails, the return value is FALSE. To get extended
2816 * error information, call GetLastError.
2817 * Remark :
2818 * Status : UNTESTED STUB
2819 *
2820 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2821 *****************************************************************************/
2822
2823BOOL WIN32API SetThreadDesktop(HDESK hDesktop)
2824{
2825 dprintf(("USER32:SetThreadDesktop (%08x) not implemented.\n",
2826 hDesktop));
2827
2828 return (FALSE);
2829}
2830
2831
2832/*****************************************************************************
2833 * Name : BOOL WIN32API SetUserObjectInformationA
2834 * Purpose : The SetUserObjectInformation function sets information about a
2835 * window station or desktop object.
2836 * Parameters: HANDLE hObject handle of the object for which to set information
2837 * int nIndex type of information to set
2838 * PVOID lpvInfo points to a buffer that contains the information
2839 * DWORD cbInfo size, in bytes, of lpvInfo buffer
2840 * Variables :
2841 * Result : If the function succeeds, the return value is TRUE.
2842 * If the function fails the return value is FALSE. To get extended
2843 * error information, call GetLastError.
2844 * Remark :
2845 * Status : UNTESTED STUB
2846 *
2847 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2848 *****************************************************************************/
2849
2850BOOL WIN32API SetUserObjectInformationA(HANDLE hObject,
2851 int nIndex,
2852 PVOID lpvInfo,
2853 DWORD cbInfo)
2854{
2855 dprintf(("USER32:SetUserObjectInformationA (%08xh,%u,%08xh,%08x) not implemented.\n",
2856 hObject,
2857 nIndex,
2858 lpvInfo,
2859 cbInfo));
2860
2861 return (FALSE);
2862}
2863
2864
2865/*****************************************************************************
2866 * Name : BOOL WIN32API SetUserObjectInformationW
2867 * Purpose : The SetUserObjectInformation function sets information about a
2868 * window station or desktop object.
2869 * Parameters: HANDLE hObject handle of the object for which to set information
2870 * int nIndex type of information to set
2871 * PVOID lpvInfo points to a buffer that contains the information
2872 * DWORD cbInfo size, in bytes, of lpvInfo buffer
2873 * Variables :
2874 * Result : If the function succeeds, the return value is TRUE.
2875 * If the function fails the return value is FALSE. To get extended
2876 * error information, call GetLastError.
2877 * Remark :
2878 * Status : UNTESTED STUB
2879 *
2880 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2881 *****************************************************************************/
2882
2883BOOL WIN32API SetUserObjectInformationW(HANDLE hObject,
2884 int nIndex,
2885 PVOID lpvInfo,
2886 DWORD cbInfo)
2887{
2888 dprintf(("USER32:SetUserObjectInformationW (%08xh,%u,%08xh,%08x) not implemented.\n",
2889 hObject,
2890 nIndex,
2891 lpvInfo,
2892 cbInfo));
2893
2894 return (FALSE);
2895}
2896
2897
2898/*****************************************************************************
2899 * Name : BOOL WIN32API SetUserObjectSecurity
2900 * Purpose : The SetUserObjectSecurity function sets the security of a user
2901 * object. This can be, for example, a window or a DDE conversation
2902 * Parameters: HANDLE hObject handle of user object
2903 * SECURITY_INFORMATION * psi address of security information
2904 * LPSECURITY_DESCRIPTOR psd address of security descriptor
2905 * Variables :
2906 * Result : If the function succeeds, the return value is TRUE.
2907 * If the function fails, the return value is FALSE. To get extended
2908 * error information, call GetLastError.
2909 * Remark :
2910 * Status : UNTESTED STUB
2911 *
2912 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2913 *****************************************************************************/
2914
2915BOOL WIN32API SetUserObjectSecurity(HANDLE hObject,
2916 SECURITY_INFORMATION * psi,
2917 LPSECURITY_DESCRIPTOR psd)
2918{
2919 dprintf(("USER32:SetUserObjectSecuroty (%08xh,%08xh,%08x) not implemented.\n",
2920 hObject,
2921 psi,
2922 psd));
2923
2924 return (FALSE);
2925}
2926
2927
2928/*****************************************************************************
2929 * Name : int WIN32API SetWindowRgn
2930 * Purpose : The SetWindowRgn function sets the window region of a window. The
2931 * window region determines the area within the window where the
2932 * operating system permits drawing. The operating system does not
2933 * display any portion of a window that lies outside of the window region
2934 * Parameters: HWND hWnd handle to window whose window region is to be set
2935 * HRGN hRgn handle to region
2936 * BOOL bRedraw window redraw flag
2937 * Variables :
2938 * Result : If the function succeeds, the return value is non-zero.
2939 * If the function fails, the return value is zero.
2940 * Remark :
2941 * Status : UNTESTED STUB
2942 *
2943 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2944 *****************************************************************************/
2945
2946int WIN32API SetWindowRgn(HWND hWnd,
2947 HRGN hRgn,
2948 BOOL bRedraw)
2949{
2950 dprintf(("USER32:SetWindowRgn (%08xh,%08xh,%u) not implemented.\n",
2951 hWnd,
2952 hRgn,
2953 bRedraw));
2954
2955 return (0);
2956}
2957
2958
2959/*****************************************************************************
2960 * Name : BOOL WIN32API SetWindowsHookW
2961 * Purpose : The SetWindowsHook function is not implemented in the Win32 API.
2962 * Win32-based applications should use the SetWindowsHookEx function.
2963 * Parameters:
2964 * Variables :
2965 * Result :
2966 * Remark : ARGH ! MICROSOFT !
2967 * Status : UNTESTED STUB
2968 *
2969 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2970 *****************************************************************************/
2971
2972HHOOK WIN32API SetWindowsHookW(int nFilterType, HOOKPROC pfnFilterProc)
2973
2974{
2975 return (FALSE);
2976}
2977
2978
2979/*****************************************************************************
2980 * Name : BOOL WIN32API ShowWindowAsync
2981 * Purpose : The ShowWindowAsync function sets the show state of a window
2982 * created by a different thread.
2983 * Parameters: HWND hwnd handle of window
2984 * int nCmdShow show state of window
2985 * Variables :
2986 * Result : If the window was previously visible, the return value is TRUE.
2987 * If the window was previously hidden, the return value is FALSE.
2988 * Remark :
2989 * Status : UNTESTED STUB
2990 *
2991 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
2992 *****************************************************************************/
2993
2994BOOL WIN32API ShowWindowAsync (HWND hWnd,
2995 int nCmdShow)
2996{
2997 dprintf(("USER32:ShowWindowAsync (%08xh,%08x) not implemented.\n",
2998 hWnd,
2999 nCmdShow));
3000
3001 return (FALSE);
3002}
3003
3004
3005/*****************************************************************************
3006 * Name : BOOL WIN32API SwitchDesktop
3007 * Purpose : The SwitchDesktop function makes a desktop visible and activates
3008 * it. This enables the desktop to receive input from the user. The
3009 * calling process must have DESKTOP_SWITCHDESKTOP access to the
3010 * desktop for the SwitchDesktop function to succeed.
3011 * Parameters:
3012 * Variables :
3013 * Result : If the function succeeds, the return value is TRUE.
3014 * If the function fails, the return value is FALSE. To get extended
3015 * error information, call GetLastError.
3016 * Remark :
3017 * Status : UNTESTED STUB
3018 *
3019 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3020 *****************************************************************************/
3021
3022BOOL WIN32API SwitchDesktop(HDESK hDesktop)
3023{
3024 dprintf(("USER32:SwitchDesktop (%08x) not implemented.\n",
3025 hDesktop));
3026
3027 return (FALSE);
3028}
3029
3030
3031/*****************************************************************************
3032 * Name : WORD WIN32API TileWindows
3033 * Purpose : The TileWindows function tiles the specified windows, or the child
3034 * windows of the specified parent window.
3035 * Parameters: HWND hwndParent handle of parent window
3036 * WORD wFlags types of windows not to arrange
3037 * LPCRECT lpRect rectangle to arrange windows in
3038 * WORD cChildrenb number of windows to arrange
3039 * const HWND *ahwndChildren array of window handles
3040 * Variables :
3041 * Result : If the function succeeds, the return value is the number of
3042 * windows arranged.
3043 * If the function fails, the return value is zero.
3044 * Remark :
3045 * Status : UNTESTED STUB
3046 *
3047 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3048 *****************************************************************************/
3049
3050WORD WIN32API TileWindows(HWND hwndParent,
3051 UINT wFlags,
3052 const LPRECT lpRect,
3053 UINT cChildrenb,
3054 const HWND *ahwndChildren)
3055{
3056 dprintf(("USER32:TileWindows (%08xh,%08xh,%08xh,%08xh,%08x) not implemented.\n",
3057 hwndParent,
3058 wFlags,
3059 lpRect,
3060 cChildrenb,
3061 ahwndChildren));
3062
3063 return (0);
3064}
3065
3066
3067/*****************************************************************************
3068 * Name : int WIN32API ToAscii
3069 * Purpose : The ToAscii function translates the specified virtual-key code
3070 * and keyboard state to the corresponding Windows character or characters.
3071 * Parameters: UINT uVirtKey virtual-key code
3072 * UINT uScanCode scan code
3073 * PBYTE lpbKeyState address of key-state array
3074 * LPWORD lpwTransKey buffer for translated key
3075 * UINT fuState active-menu flag
3076 * Variables :
3077 * Result : 0 The specified virtual key has no translation for the current
3078 * state of the keyboard.
3079 * 1 One Windows character was copied to the buffer.
3080 * 2 Two characters were copied to the buffer. This usually happens
3081 * when a dead-key character (accent or diacritic) stored in the
3082 * keyboard layout cannot be composed with the specified virtual
3083 * key to form a single character.
3084 * Remark :
3085 * Status : UNTESTED STUB
3086 *
3087 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3088 *****************************************************************************/
3089
3090int WIN32API ToAscii(UINT uVirtKey,
3091 UINT uScanCode,
3092 PBYTE lpbKeyState,
3093 LPWORD lpwTransKey,
3094 UINT fuState)
3095{
3096 dprintf(("USER32:ToAscii (%u,%u,%08xh,%08xh,%u) not implemented.\n",
3097 uVirtKey,
3098 uScanCode,
3099 lpbKeyState,
3100 lpwTransKey,
3101 fuState));
3102
3103 return (0);
3104}
3105
3106
3107/*****************************************************************************
3108 * Name : int WIN32API ToAsciiEx
3109 * Purpose : The ToAscii function translates the specified virtual-key code
3110 * and keyboard state to the corresponding Windows character or characters.
3111 * Parameters: UINT uVirtKey virtual-key code
3112 * UINT uScanCode scan code
3113 * PBYTE lpbKeyState address of key-state array
3114 * LPWORD lpwTransKey buffer for translated key
3115 * UINT fuState active-menu flag
3116 * HLK hlk keyboard layout handle
3117 * Variables :
3118 * Result : 0 The specified virtual key has no translation for the current
3119 * state of the keyboard.
3120 * 1 One Windows character was copied to the buffer.
3121 * 2 Two characters were copied to the buffer. This usually happens
3122 * when a dead-key character (accent or diacritic) stored in the
3123 * keyboard layout cannot be composed with the specified virtual
3124 * key to form a single character.
3125 * Remark :
3126 * Status : UNTESTED STUB
3127 *
3128 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3129 *****************************************************************************/
3130
3131int WIN32API ToAsciiEx(UINT uVirtKey,
3132 UINT uScanCode,
3133 PBYTE lpbKeyState,
3134 LPWORD lpwTransKey,
3135 UINT fuState,
3136 HKL hkl)
3137{
3138 dprintf(("USER32:ToAsciiEx (%u,%u,%08xh,%08xh,%u,%08x) not implemented.\n",
3139 uVirtKey,
3140 uScanCode,
3141 lpbKeyState,
3142 lpwTransKey,
3143 fuState,
3144 hkl));
3145
3146 return (0);
3147}
3148
3149
3150/*****************************************************************************
3151 * Name : int WIN32API ToUnicode
3152 * Purpose : The ToUnicode function translates the specified virtual-key code
3153 * and keyboard state to the corresponding Unicode character or characters.
3154 * Parameters: UINT wVirtKey virtual-key code
3155 * UINT wScanCode scan code
3156 * PBYTE lpKeyState address of key-state array
3157 * LPWSTR pwszBuff buffer for translated key
3158 * int cchBuff size of translated key buffer
3159 * UINT wFlags set of function-conditioning flags
3160 * Variables :
3161 * Result : - 1 The specified virtual key is a dead-key character (accent or
3162 * diacritic). This value is returned regardless of the keyboard
3163 * layout, even if several characters have been typed and are
3164 * stored in the keyboard state. If possible, even with Unicode
3165 * keyboard layouts, the function has written a spacing version of
3166 * the dead-key character to the buffer specified by pwszBuffer.
3167 * For example, the function writes the character SPACING ACUTE
3168 * (0x00B4), rather than the character NON_SPACING ACUTE (0x0301).
3169 * 0 The specified virtual key has no translation for the current
3170 * state of the keyboard. Nothing was written to the buffer
3171 * specified by pwszBuffer.
3172 * 1 One character was written to the buffer specified by pwszBuffer.
3173 * 2 or more Two or more characters were written to the buffer specified by
3174 * pwszBuff. The most common cause for this is that a dead-key
3175 * character (accent or diacritic) stored in the keyboard layout
3176 * could not be combined with the specified virtual key to form a
3177 * single character.
3178 * Remark :
3179 * Status : UNTESTED STUB
3180 *
3181 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3182 *****************************************************************************/
3183
3184int WIN32API ToUnicode(UINT uVirtKey,
3185 UINT uScanCode,
3186 PBYTE lpKeyState,
3187 LPWSTR pwszBuff,
3188 int cchBuff,
3189 UINT wFlags)
3190{
3191 dprintf(("USER32:ToUnicode (%u,%u,%08xh,%08xh,%u,%08x) not implemented.\n",
3192 uVirtKey,
3193 uScanCode,
3194 lpKeyState,
3195 pwszBuff,
3196 cchBuff,
3197 wFlags));
3198
3199 return (0);
3200}
3201
3202
3203/*****************************************************************************
3204 * Name : BOOL WIN32API UnloadKeyboardLayout
3205 * Purpose : The UnloadKeyboardLayout function removes a keyboard layout.
3206 * Parameters: HKL hkl handle of keyboard layout
3207 * Variables :
3208 * Result : If the function succeeds, the return value is the handle of the
3209 * keyboard layout; otherwise, it is NULL. To get extended error
3210 * information, use the GetLastError function.
3211 * Remark :
3212 * Status : UNTESTED STUB
3213 *
3214 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3215 *****************************************************************************/
3216
3217BOOL WIN32API UnloadKeyboardLayout (HKL hkl)
3218{
3219 dprintf(("USER32:UnloadKeyboardLayout (%08x) not implemented.\n",
3220 hkl));
3221
3222 return (0);
3223}
3224
3225
3226/*****************************************************************************
3227 * Name : SHORT WIN32API VkKeyScanExW
3228 * Purpose : The VkKeyScanEx function translates a character to the
3229 * corresponding virtual-key code and shift state. The function
3230 * translates the character using the input language and physical
3231 * keyboard layout identified by the given keyboard layout handle.
3232 * Parameters: UINT uChar character to translate
3233 * HKL hkl keyboard layout handle
3234 * Variables :
3235 * Result : see docs
3236 * Remark :
3237 * Status : UNTESTED STUB
3238 *
3239 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3240 *****************************************************************************/
3241
3242WORD WIN32API VkKeyScanExW(WCHAR uChar,
3243 HKL hkl)
3244{
3245 dprintf(("USER32:VkKeyScanExW (%u,%08x) not implemented.\n",
3246 uChar,
3247 hkl));
3248
3249 return (uChar);
3250}
3251
3252
3253/*****************************************************************************
3254 * Name : SHORT WIN32API VkKeyScanExA
3255 * Purpose : The VkKeyScanEx function translates a character to the
3256 * corresponding virtual-key code and shift state. The function
3257 * translates the character using the input language and physical
3258 * keyboard layout identified by the given keyboard layout handle.
3259 * Parameters: UINT uChar character to translate
3260 * HKL hkl keyboard layout handle
3261 * Variables :
3262 * Result : see docs
3263 * Remark :
3264 * Status : UNTESTED STUB
3265 *
3266 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3267 *****************************************************************************/
3268
3269WORD WIN32API VkKeyScanExA(CHAR uChar,
3270 HKL hkl)
3271{
3272 dprintf(("USER32:VkKeyScanExA (%u,%08x) not implemented.\n",
3273 uChar,
3274 hkl));
3275
3276 return (uChar);
3277}
3278
3279
3280/*****************************************************************************
3281 * Name : VOID WIN32API keybd_event
3282 * Purpose : The keybd_event function synthesizes a keystroke. The system
3283 * can use such a synthesized keystroke to generate a WM_KEYUP or
3284 * WM_KEYDOWN message. The keyboard driver's interrupt handler calls
3285 * the keybd_event function.
3286 * Parameters: BYTE bVk virtual-key code
3287
3288 * BYTE bScan hardware scan code
3289 * DWORD dwFlags flags specifying various function options
3290 * DWORD dwExtraInfo additional data associated with keystroke
3291 * Variables :
3292 * Result :
3293 * Remark :
3294 * Status : UNTESTED STUB
3295 *
3296 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3297 *****************************************************************************/
3298
3299VOID WIN32API keybd_event (BYTE bVk,
3300 BYTE bScan,
3301 DWORD dwFlags,
3302 DWORD dwExtraInfo)
3303{
3304 dprintf(("USER32:keybd_event (%u,%u,%08xh,%08x) not implemented.\n",
3305 bVk,
3306 bScan,
3307 dwFlags,
3308 dwExtraInfo));
3309}
3310
3311
3312/*****************************************************************************
3313 * Name : VOID WIN32API mouse_event
3314 * Purpose : The mouse_event function synthesizes mouse motion and button clicks.
3315 * Parameters: DWORD dwFlags flags specifying various motion/click variants
3316 * DWORD dx horizontal mouse position or position change
3317 * DWORD dy vertical mouse position or position change
3318 * DWORD cButtons unused, reserved for future use, set to zero
3319 * DWORD dwExtraInfo 32 bits of application-defined information
3320 * Variables :
3321 * Result :
3322 * Remark :
3323 * Status : UNTESTED STUB
3324 *
3325 * Author : Patrick Haller [Thu, 1998/02/26 11:55]
3326 *****************************************************************************/
3327
3328VOID WIN32API mouse_event(DWORD dwFlags,
3329 DWORD dx,
3330 DWORD dy,
3331 DWORD cButtons,
3332 DWORD dwExtraInfo)
3333{
3334 dprintf(("USER32:mouse_event (%08xh,%u,%u,%u,%08x) not implemented.\n",
3335 dwFlags,
3336 dx,
3337 dy,
3338 cButtons,
3339 dwExtraInfo));
3340}
3341
3342
3343/*****************************************************************************
3344 * Name : BOOL WIN32API SetShellWindow
3345 * Purpose : Unknown
3346 * Parameters: Unknown
3347 * Variables :
3348 * Result :
3349 * Remark :
3350 * Status : UNTESTED UNKNOWN STUB
3351 *
3352 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3353 *****************************************************************************/
3354
3355BOOL WIN32API SetShellWindow(DWORD x1)
3356{
3357 dprintf(("USER32: SetShellWindow(%08x) not implemented.\n",
3358 x1));
3359
3360 return (FALSE); /* default */
3361}
3362
3363
3364/*****************************************************************************
3365 * Name : BOOL WIN32API PlaySoundEvent
3366 * Purpose : Unknown
3367 * Parameters: Unknown
3368 * Variables :
3369 * Result :
3370 * Remark :
3371 * Status : UNTESTED UNKNOWN STUB
3372 *
3373 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3374 *****************************************************************************/
3375
3376BOOL WIN32API PlaySoundEvent(DWORD x1)
3377{
3378 dprintf(("USER32: PlaySoundEvent(%08x) not implemented.\n",
3379 x1));
3380
3381 return (FALSE); /* default */
3382}
3383
3384
3385/*****************************************************************************
3386 * Name : BOOL WIN32API TileChildWindows
3387 * Purpose : Unknown
3388 * Parameters: Unknown
3389 * Variables :
3390 * Result :
3391 * Remark :
3392 * Status : UNTESTED UNKNOWN STUB
3393 *
3394 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3395 *****************************************************************************/
3396
3397BOOL WIN32API TileChildWindows(DWORD x1,
3398 DWORD x2)
3399{
3400 dprintf(("USER32: TileChildWindows(%08xh,%08xh) not implemented.\n",
3401 x1,
3402 x2));
3403
3404 return (FALSE); /* default */
3405}
3406
3407
3408/*****************************************************************************
3409 * Name : BOOL WIN32API SetSysColorsTemp
3410 * Purpose : Unknown
3411 * Parameters: Unknown
3412 * Variables :
3413 * Result :
3414 * Remark :
3415 * Status : UNTESTED UNKNOWN STUB
3416 *
3417 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3418 *****************************************************************************/
3419
3420BOOL WIN32API SetSysColorsTemp(void)
3421{
3422 dprintf(("USER32: SetSysColorsTemp() not implemented.\n"));
3423
3424 return (FALSE); /* default */
3425}
3426
3427
3428/*****************************************************************************
3429 * Name : BOOL WIN32API RegisterNetworkCapabilities
3430 * Purpose : Unknown
3431 * Parameters: Unknown
3432 * Variables :
3433 * Result :
3434 * Remark :
3435 * Status : UNTESTED UNKNOWN STUB
3436 *
3437 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3438 *****************************************************************************/
3439
3440BOOL WIN32API RegisterNetworkCapabilities(DWORD x1,
3441 DWORD x2)
3442{
3443 dprintf(("USER32: RegisterNetworkCapabilities(%08xh,%08xh) not implemented.\n",
3444 x1,
3445 x2));
3446
3447 return (FALSE); /* default */
3448}
3449
3450
3451/*****************************************************************************
3452 * Name : BOOL WIN32API EndTask
3453 * Purpose : Unknown
3454 * Parameters: Unknown
3455 * Variables :
3456 * Result :
3457 * Remark :
3458 * Status : UNTESTED UNKNOWN STUB
3459 *
3460 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3461 *****************************************************************************/
3462
3463BOOL WIN32API EndTask(DWORD x1,
3464 DWORD x2,
3465 DWORD x3)
3466{
3467 dprintf(("USER32: EndTask(%08xh,%08xh,%08xh) not implemented.\n",
3468 x1,
3469 x2,
3470 x3));
3471
3472 return (FALSE); /* default */
3473}
3474
3475
3476
3477/*****************************************************************************
3478 * Name : BOOL WIN32API GetNextQueueWindow
3479 * Purpose : Unknown
3480 * Parameters: Unknown
3481 * Variables :
3482 * Result :
3483 * Remark :
3484 * Status : UNTESTED UNKNOWN STUB
3485 *
3486 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3487 *****************************************************************************/
3488
3489BOOL WIN32API GetNextQueueWindow(DWORD x1,
3490 DWORD x2)
3491{
3492 dprintf(("USER32: GetNextQueueWindow(%08xh,%08xh) not implemented.\n",
3493 x1,
3494 x2));
3495
3496 return (FALSE); /* default */
3497}
3498
3499
3500/*****************************************************************************
3501 * Name : BOOL WIN32API YieldTask
3502 * Purpose : Unknown
3503 * Parameters: Unknown
3504 * Variables :
3505 * Result :
3506 * Remark :
3507 * Status : UNTESTED UNKNOWN STUB
3508 *
3509 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3510 *****************************************************************************/
3511
3512BOOL WIN32API YieldTask(void)
3513{
3514 dprintf(("USER32: YieldTask() not implemented.\n"));
3515
3516 return (FALSE); /* default */
3517}
3518
3519
3520/*****************************************************************************
3521 * Name : BOOL WIN32API WinOldAppHackoMatic
3522 * Purpose : Unknown
3523 * Parameters: Unknown
3524 * Variables :
3525 * Result :
3526 * Remark :
3527 * Status : UNTESTED UNKNOWN STUB
3528 *
3529 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3530 *****************************************************************************/
3531
3532BOOL WIN32API WinOldAppHackoMatic(DWORD x1)
3533{
3534 dprintf(("USER32: WinOldAppHackoMatic(%08x) not implemented.\n",
3535 x1));
3536
3537 return (FALSE); /* default */
3538}
3539
3540
3541/*****************************************************************************
3542 * Name : BOOL WIN32API DragObject
3543 * Purpose : Unknown
3544 * Parameters: Unknown
3545 * Variables :
3546 * Result :
3547 * Remark :
3548 * Status : UNTESTED UNKNOWN STUB
3549 *
3550 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3551 *****************************************************************************/
3552
3553DWORD WIN32API DragObject(HWND x1,HWND x2,UINT x3,DWORD x4,HCURSOR x5)
3554{
3555 dprintf(("USER32: DragObject(%08x,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
3556 x1,
3557 x2,
3558 x3,
3559 x4,
3560 x5));
3561
3562 return (FALSE); /* default */
3563}
3564
3565
3566/*****************************************************************************
3567 * Name : BOOL WIN32API CascadeChildWindows
3568 * Purpose : Unknown
3569 * Parameters: Unknown
3570 * Variables :
3571 * Result :
3572 * Remark :
3573 * Status : UNTESTED UNKNOWN STUB
3574 *
3575 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3576 *****************************************************************************/
3577
3578BOOL WIN32API CascadeChildWindows(DWORD x1,
3579 DWORD x2)
3580{
3581 dprintf(("USER32: CascadeChildWindows(%08xh,%08xh) not implemented.\n",
3582 x1,
3583 x2));
3584
3585 return (FALSE); /* default */
3586}
3587
3588
3589/*****************************************************************************
3590 * Name : BOOL WIN32API RegisterSystemThread
3591 * Purpose : Unknown
3592 * Parameters: Unknown
3593 * Variables :
3594 * Result :
3595 * Remark :
3596 * Status : UNTESTED UNKNOWN STUB
3597 *
3598 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3599 *****************************************************************************/
3600
3601BOOL WIN32API RegisterSystemThread(DWORD x1,
3602 DWORD x2)
3603{
3604 dprintf(("USER32: RegisterSystemThread(%08xh,%08xh) not implemented.\n",
3605 x1,
3606 x2));
3607
3608 return (FALSE); /* default */
3609}
3610
3611
3612/*****************************************************************************
3613 * Name : BOOL WIN32API IsHungThread
3614 * Purpose : Unknown
3615 * Parameters: Unknown
3616 * Variables :
3617 * Result :
3618 * Remark :
3619 * Status : UNTESTED UNKNOWN STUB
3620 *
3621 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3622 *****************************************************************************/
3623
3624BOOL WIN32API IsHungThread(DWORD x1)
3625{
3626 dprintf(("USER32: IsHungThread(%08xh) not implemented.\n",
3627 x1));
3628
3629 return (FALSE); /* default */
3630}
3631
3632
3633
3634/*****************************************************************************
3635 * Name : BOOL WIN32API UserSignalProc
3636 * Purpose : Unknown
3637 * Parameters: Unknown
3638 * Variables :
3639 * Result :
3640 * Remark :
3641 * Status : UNTESTED UNKNOWN STUB
3642 *
3643 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3644 *****************************************************************************/
3645
3646BOOL WIN32API UserSignalProc(DWORD x1,
3647 DWORD x2,
3648 DWORD x3,
3649 DWORD x4)
3650{
3651 dprintf(("USER32: SysErrorBox(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
3652 x1,
3653 x2,
3654 x3,
3655 x4));
3656
3657 return (FALSE); /* default */
3658}
3659
3660
3661/*****************************************************************************
3662 * Name : BOOL WIN32API GetShellWindow
3663 * Purpose : Unknown
3664 * Parameters: Unknown
3665 * Variables :
3666 * Result :
3667 * Remark :
3668 * Status : UNTESTED UNKNOWN STUB
3669 *
3670 * Author : Patrick Haller [Wed, 1998/06/16 11:55]
3671 *****************************************************************************/
3672
3673HWND WIN32API GetShellWindow(void)
3674{
3675 dprintf(("USER32: GetShellWindow() not implemented.\n"));
3676
3677 return (0); /* default */
3678}
3679
3680
3681
3682/***********************************************************************
3683 * RegisterTasklist32 [USER32.436]
3684 */
3685DWORD WIN32API RegisterTasklist (DWORD x)
3686{
3687 dprintf(("USER32: RegisterTasklist(%08xh) not implemented.\n",
3688 x));
3689
3690 return TRUE;
3691}
3692
3693
Note: See TracBrowser for help on using the repository browser.