mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
user32.dll minimal implementation
svn path=/trunk/; revision=435
This commit is contained in:
parent
ae4cb21e55
commit
3cee782a23
6 changed files with 1776 additions and 0 deletions
63
reactos/lib/user32/makefile_rex
Normal file
63
reactos/lib/user32/makefile_rex
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
include ../../rules.mak
|
||||||
|
|
||||||
|
ifneq ($(HOST),mingw32-windows)
|
||||||
|
ifneq ($(HOST),mingw32-linux)
|
||||||
|
DLLTARGET=user32.a
|
||||||
|
else
|
||||||
|
DLLTARGET=user32.dll
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
DLLTARGET=user32.dll
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: $(DLLTARGET)
|
||||||
|
|
||||||
|
|
||||||
|
MISC_OBJECTS = misc/sprintf.o misc/dllmain.o
|
||||||
|
|
||||||
|
RESOURCE_OBJECT = user32.coff
|
||||||
|
|
||||||
|
|
||||||
|
OBJECTS = $(MISC_OBJECTS) $(RESOURCE_OBJECT)
|
||||||
|
|
||||||
|
ifeq ($(DOSCLI),yes)
|
||||||
|
CLEAN_FILES = misc\*.o \
|
||||||
|
user32.o user32.a junk.tmp base.tmp temp.exp user32.dll user32.sym
|
||||||
|
else
|
||||||
|
CLEAN_FILES = misc/*.o \
|
||||||
|
user32.o user32.a junk.tmp base.tmp temp.exp user32.dll user32.sym
|
||||||
|
endif
|
||||||
|
|
||||||
|
user32.coff: user32.rc ../../include/reactos/resource.h
|
||||||
|
windres user32.rc user32.coff
|
||||||
|
|
||||||
|
user32.a: $(OBJECTS)
|
||||||
|
$(AR) csr user32.a $(OBJECTS)
|
||||||
|
|
||||||
|
user32.dll: $(DLLMAIN) $(OBJECTS) user32.def
|
||||||
|
$(LD) -r $(OBJECTS) -o user32.o
|
||||||
|
$(DLLTOOL) --dllname user32.dll --def user32.def \
|
||||||
|
--output-lib user32.a --add-stdcall-alias \
|
||||||
|
--kill-at
|
||||||
|
$(CC) -specs=user32_specs -mdll -o junk.tmp \
|
||||||
|
-Wl,--base-file,base.tmp user32.o ../ntdll/ntdll.a
|
||||||
|
- $(RM) junk.tmp
|
||||||
|
$(DLLTOOL) --dllname user32.dll --base-file base.tmp \
|
||||||
|
--output-exp temp.exp --def user32.def \
|
||||||
|
--add-stdcall-alias --kill-at
|
||||||
|
- $(RM) base.tmp
|
||||||
|
$(CC) -specs=user32_specs -mdll -o user32.dll user32.o ../ntdll/ntdll.a\
|
||||||
|
-Wl,--image-base,0x70000000 \
|
||||||
|
-Wl,--file-alignment,0x1000 \
|
||||||
|
-Wl,--section-alignment,0x1000 \
|
||||||
|
-Wl,temp.exp
|
||||||
|
- $(RM) temp.exp
|
||||||
|
$(NM) --numeric-sort user32.dll > user32.sym
|
||||||
|
|
||||||
|
clean: $(CLEAN_FILES:%=%_clean)
|
||||||
|
|
||||||
|
$(CLEAN_FILES:%=%_clean): %_clean:
|
||||||
|
- $(RM) $*
|
||||||
|
|
||||||
|
.PHONY: clean $(CLEAN_FILES:%=%_clean)
|
||||||
|
|
23
reactos/lib/user32/misc/dllmain.c
Normal file
23
reactos/lib/user32/misc/dllmain.c
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#include <windows.h>
|
||||||
|
INT
|
||||||
|
STDCALL
|
||||||
|
DllMain(
|
||||||
|
PVOID hinstDll,
|
||||||
|
ULONG dwReason,
|
||||||
|
PVOID reserved
|
||||||
|
)
|
||||||
|
{
|
||||||
|
switch (dwReason)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
break;
|
||||||
|
case DLL_THREAD_ATTACH:
|
||||||
|
break;
|
||||||
|
case DLL_THREAD_DETACH:
|
||||||
|
break;
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
940
reactos/lib/user32/misc/sprintf.c
Normal file
940
reactos/lib/user32/misc/sprintf.c
Normal file
|
@ -0,0 +1,940 @@
|
||||||
|
/* $Id: sprintf.c,v 1.1 1999/05/08 07:09:31 ea Exp $
|
||||||
|
*
|
||||||
|
* user32.dll
|
||||||
|
*
|
||||||
|
* wsprintf functions
|
||||||
|
*
|
||||||
|
* Copyright 1996 Alexandre Julliard
|
||||||
|
*
|
||||||
|
* 1999-05-01 (Emanuele Aliberti)
|
||||||
|
* Adapted from Wine to ReactOS
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "windows.h"
|
||||||
|
|
||||||
|
#define WPRINTF_LEFTALIGN 0x0001 /* Align output on the left ('-' prefix) */
|
||||||
|
#define WPRINTF_PREFIX_HEX 0x0002 /* Prefix hex with 0x ('#' prefix) */
|
||||||
|
#define WPRINTF_ZEROPAD 0x0004 /* Pad with zeros ('0' prefix) */
|
||||||
|
#define WPRINTF_LONG 0x0008 /* Long arg ('l' prefix) */
|
||||||
|
#define WPRINTF_SHORT 0x0010 /* Short arg ('h' prefix) */
|
||||||
|
#define WPRINTF_UPPER_HEX 0x0020 /* Upper-case hex ('X' specifier) */
|
||||||
|
#define WPRINTF_WIDE 0x0040 /* Wide arg ('w' prefix) */
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
WPR_UNKNOWN,
|
||||||
|
WPR_CHAR,
|
||||||
|
WPR_WCHAR,
|
||||||
|
WPR_STRING,
|
||||||
|
WPR_WSTRING,
|
||||||
|
WPR_SIGNED,
|
||||||
|
WPR_UNSIGNED,
|
||||||
|
WPR_HEXA
|
||||||
|
|
||||||
|
} WPRINTF_TYPE;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
UINT flags;
|
||||||
|
UINT width;
|
||||||
|
UINT precision;
|
||||||
|
WPRINTF_TYPE type;
|
||||||
|
|
||||||
|
} WPRINTF_FORMAT;
|
||||||
|
|
||||||
|
|
||||||
|
static const LPSTR null_stringA = "(null)";
|
||||||
|
static const LPWSTR null_stringW = L"(null)";
|
||||||
|
|
||||||
|
|
||||||
|
/* === COMMON === */
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PRIVATE
|
||||||
|
* WPRINTF_GetLen
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
* ?
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
* format
|
||||||
|
* ?
|
||||||
|
* arg
|
||||||
|
* ?
|
||||||
|
* number
|
||||||
|
* ?
|
||||||
|
* maxlen
|
||||||
|
* ?
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
* ?
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
UINT
|
||||||
|
WPRINTF_GetLen(
|
||||||
|
WPRINTF_FORMAT *format,
|
||||||
|
LPCVOID arg,
|
||||||
|
LPSTR number,
|
||||||
|
UINT maxlen
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UINT len;
|
||||||
|
|
||||||
|
if (format->flags & WPRINTF_LEFTALIGN)
|
||||||
|
{
|
||||||
|
format->flags &= ~WPRINTF_ZEROPAD;
|
||||||
|
}
|
||||||
|
if (format->width > maxlen)
|
||||||
|
{
|
||||||
|
format->width = maxlen;
|
||||||
|
}
|
||||||
|
switch(format->type)
|
||||||
|
{
|
||||||
|
case WPR_CHAR:
|
||||||
|
case WPR_WCHAR:
|
||||||
|
return (format->precision = 1);
|
||||||
|
|
||||||
|
case WPR_STRING:
|
||||||
|
if (!*(LPCSTR *)arg)
|
||||||
|
{
|
||||||
|
*(LPCSTR *)arg = null_stringA;
|
||||||
|
}
|
||||||
|
for ( len = 0;
|
||||||
|
(!format->precision || (len < format->precision));
|
||||||
|
len++
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (!*(*(LPCSTR *)arg + len))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (len > maxlen)
|
||||||
|
{
|
||||||
|
len = maxlen;
|
||||||
|
}
|
||||||
|
return (format->precision = len);
|
||||||
|
|
||||||
|
case WPR_WSTRING:
|
||||||
|
if (!*(LPCWSTR *)arg)
|
||||||
|
{
|
||||||
|
*(LPCWSTR *)arg = null_stringW;
|
||||||
|
}
|
||||||
|
for ( len = 0;
|
||||||
|
(!format->precision || (len < format->precision));
|
||||||
|
len++
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (!*(*(LPCWSTR *)arg + len))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (len > maxlen)
|
||||||
|
{
|
||||||
|
len = maxlen;
|
||||||
|
}
|
||||||
|
return (format->precision = len);
|
||||||
|
|
||||||
|
case WPR_SIGNED:
|
||||||
|
len = sprintf(
|
||||||
|
number,
|
||||||
|
"%d",
|
||||||
|
*(INT *) arg
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_UNSIGNED:
|
||||||
|
len = sprintf(
|
||||||
|
number,
|
||||||
|
"%u",
|
||||||
|
*(UINT *) arg
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_HEXA:
|
||||||
|
len = sprintf(
|
||||||
|
number,
|
||||||
|
((format->flags & WPRINTF_UPPER_HEX)
|
||||||
|
? "%X"
|
||||||
|
: "%x"),
|
||||||
|
*(UINT *) arg
|
||||||
|
);
|
||||||
|
if (format->flags & WPRINTF_PREFIX_HEX)
|
||||||
|
{
|
||||||
|
len += 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (len > maxlen)
|
||||||
|
{
|
||||||
|
len = maxlen;
|
||||||
|
}
|
||||||
|
if (format->precision < len)
|
||||||
|
{
|
||||||
|
format->precision = len;
|
||||||
|
}
|
||||||
|
if (format->precision > maxlen)
|
||||||
|
{
|
||||||
|
format->precision = maxlen;
|
||||||
|
}
|
||||||
|
if ( (format->flags & WPRINTF_ZEROPAD)
|
||||||
|
&& (format->width > format->precision)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
format->precision = format->width;
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* === ANSI VERSION === */
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PRIVATE
|
||||||
|
* WPRINTF_ParseFormatA
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
* Parse a format specification. A format specification has the
|
||||||
|
* form:
|
||||||
|
*
|
||||||
|
* [-][#][0][width][.precision]type
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
* format
|
||||||
|
* ?
|
||||||
|
* res
|
||||||
|
* ?
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
* The length of the format specification in characters.
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
INT
|
||||||
|
WPRINTF_ParseFormatA(
|
||||||
|
LPCSTR format,
|
||||||
|
WPRINTF_FORMAT *res
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LPCSTR p = format;
|
||||||
|
|
||||||
|
res->flags = 0;
|
||||||
|
res->width = 0;
|
||||||
|
res->precision = 0;
|
||||||
|
if (*p == '-')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_LEFTALIGN;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
if (*p == '#')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_PREFIX_HEX;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
if (*p == '0')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_ZEROPAD;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
while ((*p >= '0') && (*p <= '9')) /* width field */
|
||||||
|
{
|
||||||
|
res->width =
|
||||||
|
(res->width * 10)
|
||||||
|
+ (*p - '0');
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
if (*p == '.') /* precision field */
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
while ((*p >= '0') && (*p <= '9'))
|
||||||
|
{
|
||||||
|
res->precision =
|
||||||
|
(res->precision * 10)
|
||||||
|
+ (*p - '0');
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (*p == 'l')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_LONG;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (*p == 'h')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_SHORT;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (*p == 'w')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_WIDE;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (*p)
|
||||||
|
{
|
||||||
|
case 'c':
|
||||||
|
res->type =
|
||||||
|
(res->flags & WPRINTF_LONG)
|
||||||
|
? WPR_WCHAR
|
||||||
|
: WPR_CHAR;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'C':
|
||||||
|
res->type =
|
||||||
|
(res->flags & WPRINTF_SHORT)
|
||||||
|
? WPR_CHAR
|
||||||
|
: WPR_WCHAR;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
case 'i':
|
||||||
|
res->type = WPR_SIGNED;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
res->type =
|
||||||
|
(res->flags & (WPRINTF_LONG |WPRINTF_WIDE))
|
||||||
|
? WPR_WSTRING
|
||||||
|
: WPR_STRING;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'S':
|
||||||
|
res->type =
|
||||||
|
(res->flags & (WPRINTF_SHORT|WPRINTF_WIDE))
|
||||||
|
? WPR_STRING
|
||||||
|
: WPR_WSTRING;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'u':
|
||||||
|
res->type = WPR_UNSIGNED;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'X':
|
||||||
|
res->flags |= WPRINTF_UPPER_HEX;
|
||||||
|
/* fall through */
|
||||||
|
|
||||||
|
case 'x':
|
||||||
|
res->type = WPR_HEXA;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* unknown format char */
|
||||||
|
res->type = WPR_UNKNOWN;
|
||||||
|
p--; /* print format as normal char */
|
||||||
|
break;
|
||||||
|
|
||||||
|
} /* switch */
|
||||||
|
|
||||||
|
return (INT) (p - format) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PRIVATE
|
||||||
|
* wvsnprintfA (Not a Windows API)
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
INT
|
||||||
|
STDCALL
|
||||||
|
wvsnprintfA(
|
||||||
|
LPSTR buffer,
|
||||||
|
UINT maxlen,
|
||||||
|
LPCSTR spec,
|
||||||
|
va_list args
|
||||||
|
)
|
||||||
|
{
|
||||||
|
WPRINTF_FORMAT format;
|
||||||
|
LPSTR p = buffer;
|
||||||
|
UINT i;
|
||||||
|
UINT len;
|
||||||
|
CHAR number [20];
|
||||||
|
|
||||||
|
while (*spec && (maxlen > 1))
|
||||||
|
{
|
||||||
|
if (*spec != '%')
|
||||||
|
{
|
||||||
|
*p++ = *spec++;
|
||||||
|
maxlen--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
spec++;
|
||||||
|
if (*spec == '%')
|
||||||
|
{
|
||||||
|
*p++ = *spec++;
|
||||||
|
maxlen--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
spec += WPRINTF_ParseFormatA(
|
||||||
|
spec,
|
||||||
|
& format
|
||||||
|
);
|
||||||
|
len = WPRINTF_GetLen(
|
||||||
|
& format,
|
||||||
|
args,
|
||||||
|
number,
|
||||||
|
(maxlen - 1)
|
||||||
|
);
|
||||||
|
if (!(format.flags & WPRINTF_LEFTALIGN))
|
||||||
|
{
|
||||||
|
for ( i = format.precision;
|
||||||
|
(i < format.width);
|
||||||
|
i++, maxlen--
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (format.type)
|
||||||
|
{
|
||||||
|
case WPR_WCHAR:
|
||||||
|
if ((*p = (CHAR) va_arg( args, WCHAR )))
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (format.width > 1)
|
||||||
|
{
|
||||||
|
*p++ = ' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_CHAR:
|
||||||
|
if ((*p = va_arg( args, CHAR )))
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (format.width > 1)
|
||||||
|
{
|
||||||
|
*p++ = ' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_STRING:
|
||||||
|
memcpy(
|
||||||
|
p,
|
||||||
|
va_arg( args, LPCSTR ),
|
||||||
|
len
|
||||||
|
);
|
||||||
|
p += len;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_WSTRING:
|
||||||
|
{
|
||||||
|
LPCWSTR ptr = va_arg( args, LPCWSTR );
|
||||||
|
|
||||||
|
for ( i = 0;
|
||||||
|
(i < len);
|
||||||
|
i++
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = (CHAR) *ptr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_HEXA:
|
||||||
|
if ( (format.flags & WPRINTF_PREFIX_HEX)
|
||||||
|
&& (maxlen > 3)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = '0';
|
||||||
|
*p++ = (format.flags & WPRINTF_UPPER_HEX)
|
||||||
|
? 'X'
|
||||||
|
: 'x';
|
||||||
|
maxlen -= 2;
|
||||||
|
len -= 2;
|
||||||
|
format.precision -= 2;
|
||||||
|
format.width -= 2;
|
||||||
|
}
|
||||||
|
/* fall through */
|
||||||
|
|
||||||
|
case WPR_SIGNED:
|
||||||
|
case WPR_UNSIGNED:
|
||||||
|
for ( i = len;
|
||||||
|
(i < format.precision);
|
||||||
|
i++, maxlen--
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = '0';
|
||||||
|
}
|
||||||
|
memcpy(
|
||||||
|
p,
|
||||||
|
number,
|
||||||
|
len
|
||||||
|
);
|
||||||
|
p += len;
|
||||||
|
(void) va_arg( args, INT ); /* Go to the next arg */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_UNKNOWN:
|
||||||
|
continue;
|
||||||
|
} /* switch */
|
||||||
|
|
||||||
|
if (format.flags & WPRINTF_LEFTALIGN)
|
||||||
|
{
|
||||||
|
for ( i = format.precision;
|
||||||
|
(i < format.width);
|
||||||
|
i++, maxlen--
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
maxlen -= len;
|
||||||
|
} /* while */
|
||||||
|
|
||||||
|
*p = '\0';
|
||||||
|
return (maxlen > 1)
|
||||||
|
? (INT) (p - buffer)
|
||||||
|
: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PUBLIC
|
||||||
|
* wsprintfA (USER32.585)
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
*/
|
||||||
|
INT
|
||||||
|
CDECL
|
||||||
|
wsprintfA(
|
||||||
|
LPSTR buffer,
|
||||||
|
LPCSTR spec,
|
||||||
|
...
|
||||||
|
)
|
||||||
|
{
|
||||||
|
va_list valist;
|
||||||
|
INT res;
|
||||||
|
|
||||||
|
va_start( valist, spec );
|
||||||
|
res = wvsnprintfA(
|
||||||
|
buffer,
|
||||||
|
0xffffffff,
|
||||||
|
spec,
|
||||||
|
valist
|
||||||
|
);
|
||||||
|
va_end( valist );
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PUBLIC
|
||||||
|
* wvsprintfA (USER32.587)
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
*/
|
||||||
|
INT
|
||||||
|
STDCALL
|
||||||
|
wvsprintfA(
|
||||||
|
LPSTR buffer,
|
||||||
|
LPCSTR spec,
|
||||||
|
va_list args
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return wvsnprintfA(
|
||||||
|
buffer,
|
||||||
|
0xffffffff,
|
||||||
|
spec,
|
||||||
|
args
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* === UNICODE VERSION === */
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PRIVATE
|
||||||
|
* WPRINTF_ParseFormatW
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
* Parse a format specification. A format specification has
|
||||||
|
* the form:
|
||||||
|
*
|
||||||
|
* [-][#][0][width][.precision]type
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
* format
|
||||||
|
* ?
|
||||||
|
* res
|
||||||
|
* ?
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
* The length of the format specification in characters.
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
INT
|
||||||
|
WPRINTF_ParseFormatW(
|
||||||
|
LPCWSTR format,
|
||||||
|
WPRINTF_FORMAT *res
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LPCWSTR p = format;
|
||||||
|
|
||||||
|
res->flags = 0;
|
||||||
|
res->width = 0;
|
||||||
|
res->precision = 0;
|
||||||
|
if (*p == L'-')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_LEFTALIGN;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
if (*p == L'#')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_PREFIX_HEX;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
if (*p == L'0')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_ZEROPAD;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((*p >= L'0') && (*p <= L'9')) /* width field */
|
||||||
|
{
|
||||||
|
res->width =
|
||||||
|
(res->width * 10)
|
||||||
|
+ (*p - L'0');
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*p == L'.') /* precision field */
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
while ((*p >= L'0') && (*p <= L'9'))
|
||||||
|
{
|
||||||
|
res->precision =
|
||||||
|
(res->precision * 10)
|
||||||
|
+ (*p - '0');
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (*p == L'l')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_LONG;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (*p == L'h')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_SHORT;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (*p == L'w')
|
||||||
|
{
|
||||||
|
res->flags |= WPRINTF_WIDE;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ((CHAR)*p)
|
||||||
|
{
|
||||||
|
case L'c':
|
||||||
|
res->type =
|
||||||
|
(res->flags & WPRINTF_SHORT)
|
||||||
|
? WPR_CHAR
|
||||||
|
: WPR_WCHAR;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case L'C':
|
||||||
|
res->type =
|
||||||
|
(res->flags & WPRINTF_LONG)
|
||||||
|
? WPR_WCHAR
|
||||||
|
: WPR_CHAR;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case L'd':
|
||||||
|
case L'i':
|
||||||
|
res->type = WPR_SIGNED;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case L's':
|
||||||
|
res->type =
|
||||||
|
((res->flags & WPRINTF_SHORT)
|
||||||
|
&& !(res->flags & WPRINTF_WIDE)
|
||||||
|
)
|
||||||
|
? WPR_STRING
|
||||||
|
: WPR_WSTRING;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case L'S':
|
||||||
|
res->type =
|
||||||
|
(res->flags & (WPRINTF_LONG | WPRINTF_WIDE))
|
||||||
|
? WPR_WSTRING
|
||||||
|
: WPR_STRING;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case L'u':
|
||||||
|
res->type = WPR_UNSIGNED;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case L'X':
|
||||||
|
res->flags |= WPRINTF_UPPER_HEX;
|
||||||
|
/* fall through */
|
||||||
|
|
||||||
|
case L'x':
|
||||||
|
res->type = WPR_HEXA;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
res->type = WPR_UNKNOWN;
|
||||||
|
p--; /* print format as normal char */
|
||||||
|
break;
|
||||||
|
} /* switch */
|
||||||
|
|
||||||
|
return (INT) (p - format) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PRIVATE
|
||||||
|
* wvsnprintfW (Not a Windows API)
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
INT
|
||||||
|
wvsnprintfW(
|
||||||
|
LPWSTR buffer,
|
||||||
|
UINT maxlen,
|
||||||
|
LPCWSTR spec,
|
||||||
|
va_list args
|
||||||
|
)
|
||||||
|
{
|
||||||
|
WPRINTF_FORMAT format;
|
||||||
|
LPWSTR p = buffer;
|
||||||
|
UINT i;
|
||||||
|
UINT len;
|
||||||
|
CHAR number [20];
|
||||||
|
|
||||||
|
while (*spec && (maxlen > 1))
|
||||||
|
{
|
||||||
|
if (*spec != L'%')
|
||||||
|
{
|
||||||
|
*p++ = *spec++;
|
||||||
|
maxlen--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
spec++;
|
||||||
|
if (*spec == L'%')
|
||||||
|
{
|
||||||
|
*p++ = *spec++;
|
||||||
|
maxlen--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
spec += WPRINTF_ParseFormatW(
|
||||||
|
spec,
|
||||||
|
& format
|
||||||
|
);
|
||||||
|
len = WPRINTF_GetLen(
|
||||||
|
& format,
|
||||||
|
args,
|
||||||
|
number,
|
||||||
|
(maxlen - 1)
|
||||||
|
);
|
||||||
|
if (!(format.flags & WPRINTF_LEFTALIGN))
|
||||||
|
{
|
||||||
|
for ( i = format.precision;
|
||||||
|
(i < format.width);
|
||||||
|
i++, maxlen--
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = L' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (format.type)
|
||||||
|
{
|
||||||
|
case WPR_WCHAR:
|
||||||
|
if ((*p = va_arg( args, WCHAR )))
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (format.width > 1)
|
||||||
|
{
|
||||||
|
*p++ = L' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_CHAR:
|
||||||
|
if ((*p = (WCHAR) va_arg( args, CHAR )))
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (format.width > 1)
|
||||||
|
{
|
||||||
|
*p++ = L' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_STRING:
|
||||||
|
{
|
||||||
|
LPCSTR ptr = va_arg( args, LPCSTR );
|
||||||
|
|
||||||
|
for ( i = 0;
|
||||||
|
(i < len);
|
||||||
|
i++
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = (WCHAR) *ptr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_WSTRING:
|
||||||
|
if (len)
|
||||||
|
{
|
||||||
|
memcpy(
|
||||||
|
p,
|
||||||
|
va_arg( args, LPCWSTR ),
|
||||||
|
(len * sizeof (WCHAR))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
p += len;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_HEXA:
|
||||||
|
if ( (format.flags & WPRINTF_PREFIX_HEX)
|
||||||
|
&& (maxlen > 3)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = L'0';
|
||||||
|
*p++ = (format.flags & WPRINTF_UPPER_HEX)
|
||||||
|
? L'X'
|
||||||
|
: L'x';
|
||||||
|
maxlen -= 2;
|
||||||
|
len -= 2;
|
||||||
|
format.precision -= 2;
|
||||||
|
format.width -= 2;
|
||||||
|
}
|
||||||
|
/* fall through */
|
||||||
|
|
||||||
|
case WPR_SIGNED:
|
||||||
|
case WPR_UNSIGNED:
|
||||||
|
for ( i = len;
|
||||||
|
(i < format.precision);
|
||||||
|
i++, maxlen--
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = L'0';
|
||||||
|
}
|
||||||
|
for ( i = 0;
|
||||||
|
(i < len);
|
||||||
|
i++
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = (WCHAR) number[i];
|
||||||
|
}
|
||||||
|
(void) va_arg( args, INT ); /* Go to the next arg */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPR_UNKNOWN:
|
||||||
|
continue;
|
||||||
|
} /* switch */
|
||||||
|
|
||||||
|
if (format.flags & WPRINTF_LEFTALIGN)
|
||||||
|
{
|
||||||
|
for ( i = format.precision;
|
||||||
|
(i < format.width);
|
||||||
|
i++, maxlen--
|
||||||
|
)
|
||||||
|
{
|
||||||
|
*p++ = L' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
maxlen -= len;
|
||||||
|
} /* while */
|
||||||
|
|
||||||
|
*p = L'\0';
|
||||||
|
return (maxlen > 1)
|
||||||
|
? (INT) (p - buffer)
|
||||||
|
: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PUBLIC
|
||||||
|
* wsprintfW (USER32.586)
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
*/
|
||||||
|
INT
|
||||||
|
CDECL
|
||||||
|
wsprintfW(
|
||||||
|
LPWSTR buffer,
|
||||||
|
LPCWSTR spec,
|
||||||
|
...
|
||||||
|
)
|
||||||
|
{
|
||||||
|
va_list valist;
|
||||||
|
INT res;
|
||||||
|
|
||||||
|
va_start( valist, spec );
|
||||||
|
res = wvsnprintfW(
|
||||||
|
buffer,
|
||||||
|
0xffffffff,
|
||||||
|
spec,
|
||||||
|
valist
|
||||||
|
);
|
||||||
|
va_end( valist );
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NAME PUBLIC
|
||||||
|
* wvsprintfW (USER32.588)
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
*/
|
||||||
|
INT
|
||||||
|
STDCALL
|
||||||
|
wvsprintfW(
|
||||||
|
LPWSTR buffer,
|
||||||
|
LPCWSTR spec,
|
||||||
|
va_list args
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return wvsnprintfW(
|
||||||
|
buffer,
|
||||||
|
0xffffffff,
|
||||||
|
spec,
|
||||||
|
args
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* EOF */
|
634
reactos/lib/user32/user32.def
Normal file
634
reactos/lib/user32/user32.def
Normal file
|
@ -0,0 +1,634 @@
|
||||||
|
LIBRARY user32
|
||||||
|
EXPORTS
|
||||||
|
;ActivateKeyboardLayout
|
||||||
|
;AdjustWindowRect
|
||||||
|
;AdjustWindowRectEx
|
||||||
|
;AnyPopup
|
||||||
|
;AppendMenuA
|
||||||
|
;AppendMenuW
|
||||||
|
;ArrangeIconicWindows
|
||||||
|
;AttachThreadInput
|
||||||
|
;BeginDeferWindowPos
|
||||||
|
;BeginPaint
|
||||||
|
;BringWindowToTop
|
||||||
|
;BroadcastSystemMessage
|
||||||
|
;BroadcastSystemMessageA
|
||||||
|
;BroadcastSystemMessageW
|
||||||
|
;CallMsgFilter
|
||||||
|
;CallMsgFilterA
|
||||||
|
;CallMsgFilterW
|
||||||
|
;CallNextHookEx
|
||||||
|
;CallWindowProcA
|
||||||
|
;CallWindowProcW
|
||||||
|
;CascadeChildWindows
|
||||||
|
;CascadeWindows
|
||||||
|
;ChangeClipboardChain
|
||||||
|
;ChangeDisplaySettingsA
|
||||||
|
;ChangeDisplaySettingsExA
|
||||||
|
;ChangeDisplaySettingsExW
|
||||||
|
;ChangeDisplaySettingsW
|
||||||
|
;ChangeMenuA
|
||||||
|
;ChangeMenuW
|
||||||
|
;CharLowerA
|
||||||
|
;CharLowerBuffA
|
||||||
|
;CharLowerBuffW
|
||||||
|
;CharLowerW
|
||||||
|
;CharNextA
|
||||||
|
;CharNextExA
|
||||||
|
;CharNextW
|
||||||
|
;CharPrevA
|
||||||
|
;CharPrevExA
|
||||||
|
;CharPrevW
|
||||||
|
;CharToOemA
|
||||||
|
;CharToOemBuffA
|
||||||
|
;CharToOemBuffW
|
||||||
|
;CharToOemW
|
||||||
|
;CharUpperA
|
||||||
|
;CharUpperBuffA
|
||||||
|
;CharUpperBuffW
|
||||||
|
;CharUpperW
|
||||||
|
;CheckDlgButton
|
||||||
|
;CheckMenuItem
|
||||||
|
;CheckMenuRadioItem
|
||||||
|
;CheckRadioButton
|
||||||
|
;ChildWindowFromPoint
|
||||||
|
;ChildWindowFromPointEx
|
||||||
|
;ClientThreadSetup
|
||||||
|
;ClientToScreen
|
||||||
|
;ClipCursor
|
||||||
|
;CloseClipboard
|
||||||
|
;CloseDesktop
|
||||||
|
;CloseWindow
|
||||||
|
;CloseWindowStation
|
||||||
|
;CopyAcceleratorTableA
|
||||||
|
;CopyAcceleratorTableW
|
||||||
|
;CopyIcon
|
||||||
|
;CopyImage
|
||||||
|
;CopyRect
|
||||||
|
;CountClipboardFormats
|
||||||
|
;CreateAcceleratorTableA
|
||||||
|
;CreateAcceleratorTableW
|
||||||
|
;CreateCaret
|
||||||
|
;CreateCursor
|
||||||
|
;CreateDesktopA
|
||||||
|
;CreateDesktopW
|
||||||
|
;CreateDialogIndirectParamA
|
||||||
|
;CreateDialogIndirectParamAorW
|
||||||
|
;CreateDialogIndirectParamW
|
||||||
|
;CreateDialogParamA
|
||||||
|
;CreateDialogParamW
|
||||||
|
;CreateIcon
|
||||||
|
;CreateIconFromResource
|
||||||
|
;CreateIconFromResourceEx
|
||||||
|
;CreateIconIndirect
|
||||||
|
;CreateMDIWindowA
|
||||||
|
;CreateMDIWindowW
|
||||||
|
;CreateMenu
|
||||||
|
;CreatePopupMenu
|
||||||
|
;CreateWindowExA
|
||||||
|
;CreateWindowExW
|
||||||
|
;CreateWindowStationA
|
||||||
|
;CreateWindowStationW
|
||||||
|
;DdeAbandonTransaction
|
||||||
|
;DdeAccessData
|
||||||
|
;DdeAddData
|
||||||
|
;DdeClientTransaction
|
||||||
|
;DdeCmpStringHandles
|
||||||
|
;DdeConnect
|
||||||
|
;DdeConnectList
|
||||||
|
;DdeCreateDataHandle
|
||||||
|
;DdeCreateStringHandleA
|
||||||
|
;DdeCreateStringHandleW
|
||||||
|
;DdeDisconnect
|
||||||
|
;DdeDisconnectList
|
||||||
|
;DdeEnableCallback
|
||||||
|
;DdeFreeDataHandle
|
||||||
|
;DdeFreeStringHandle
|
||||||
|
;DdeGetData
|
||||||
|
;DdeGetLastError
|
||||||
|
;DdeGetQualityOfService
|
||||||
|
;DdeImpersonateClient
|
||||||
|
;DdeInitializeA
|
||||||
|
;DdeInitializeW
|
||||||
|
;DdeKeepStringHandle
|
||||||
|
;DdeNameService
|
||||||
|
;DdePostAdvise
|
||||||
|
;DdeQueryConvInfo
|
||||||
|
;DdeQueryNextServer
|
||||||
|
;DdeQueryStringA
|
||||||
|
;DdeQueryStringW
|
||||||
|
;DdeReconnect
|
||||||
|
;DdeSetQualityOfService
|
||||||
|
;DdeSetUserHandle
|
||||||
|
;DdeUnaccessData
|
||||||
|
;DdeUninitialize
|
||||||
|
;DefDlgProcA
|
||||||
|
;DefDlgProcW
|
||||||
|
;DefFrameProcA
|
||||||
|
;DefFrameProcW
|
||||||
|
;DefMDIChildProcA
|
||||||
|
;DefMDIChildProcW
|
||||||
|
;DefWindowProcA
|
||||||
|
;DefWindowProcW
|
||||||
|
;DeferWindowPos
|
||||||
|
;DeleteMenu
|
||||||
|
;DeregisterShellHookWindow
|
||||||
|
;DestroyAcceleratorTable
|
||||||
|
;DestroyCaret
|
||||||
|
;DestroyCursor
|
||||||
|
;DestroyIcon
|
||||||
|
;DestroyMenu
|
||||||
|
;DestroyWindow
|
||||||
|
;DialogBoxIndirectParamA
|
||||||
|
;DialogBoxIndirectParamAorW
|
||||||
|
;DialogBoxIndirectParamW
|
||||||
|
;DialogBoxParamA
|
||||||
|
;DialogBoxParamW
|
||||||
|
;DispatchMessageA
|
||||||
|
;DispatchMessageW
|
||||||
|
;DlgDirListA
|
||||||
|
;DlgDirListComboBoxA
|
||||||
|
;DlgDirListComboBoxW
|
||||||
|
;DlgDirListW
|
||||||
|
;DlgDirSelectComboBoxExA
|
||||||
|
;DlgDirSelectComboBoxExW
|
||||||
|
;DlgDirSelectExA
|
||||||
|
;DlgDirSelectExW
|
||||||
|
;DragDetect
|
||||||
|
;DragObject
|
||||||
|
;DrawAnimatedRects
|
||||||
|
;DrawCaption
|
||||||
|
;DrawCaptionTempA
|
||||||
|
;DrawCaptionTempW
|
||||||
|
;DrawEdge
|
||||||
|
;DrawFocusRect
|
||||||
|
;DrawFrame
|
||||||
|
;DrawFrameControl
|
||||||
|
;DrawIcon
|
||||||
|
;DrawIconEx
|
||||||
|
;DrawMenuBar
|
||||||
|
;DrawMenuBarTemp
|
||||||
|
;DrawStateA
|
||||||
|
;DrawStateW
|
||||||
|
;DrawTextA
|
||||||
|
;DrawTextExA
|
||||||
|
;DrawTextExW
|
||||||
|
;DrawTextW
|
||||||
|
;EditWndProc
|
||||||
|
;EmptyClipboard
|
||||||
|
;EnableMenuItem
|
||||||
|
;EnableScrollBar
|
||||||
|
;EnableWindow
|
||||||
|
;EndDeferWindowPos
|
||||||
|
;EndDialog
|
||||||
|
;EndMenu
|
||||||
|
;EndPaint
|
||||||
|
;EndTask
|
||||||
|
;EnumChildWindows
|
||||||
|
;EnumClipboardFormats
|
||||||
|
;EnumDesktopWindows
|
||||||
|
;EnumDesktopsA
|
||||||
|
;EnumDesktopsW
|
||||||
|
;EnumDisplayDevicesA
|
||||||
|
;EnumDisplayDevicesW
|
||||||
|
;EnumDisplaySettingsA
|
||||||
|
;EnumDisplaySettingsW
|
||||||
|
;EnumPropsA
|
||||||
|
;EnumPropsExA
|
||||||
|
;EnumPropsExW
|
||||||
|
;EnumPropsW
|
||||||
|
;EnumThreadWindows
|
||||||
|
;EnumWindowStationsA
|
||||||
|
;EnumWindowStationsW
|
||||||
|
;EnumWindows
|
||||||
|
;EqualRect
|
||||||
|
;ExcludeUpdateRgn
|
||||||
|
;ExitWindowsEx
|
||||||
|
;FillRect
|
||||||
|
;FindWindowA
|
||||||
|
;FindWindowExA
|
||||||
|
;FindWindowExW
|
||||||
|
;FindWindowW
|
||||||
|
;FlashWindow
|
||||||
|
;FrameRect
|
||||||
|
;FreeDDElParam
|
||||||
|
;FullScreenControl
|
||||||
|
;GetActiveWindow
|
||||||
|
;GetAncestor
|
||||||
|
;GetAppCompatFlags
|
||||||
|
;GetAsyncKeyState
|
||||||
|
;GetCapture
|
||||||
|
;GetCaretBlinkTime
|
||||||
|
;GetCaretPos
|
||||||
|
;GetClassInfoA
|
||||||
|
;GetClassInfoExA
|
||||||
|
;GetClassInfoExW
|
||||||
|
;GetClassInfoW
|
||||||
|
;GetClassLongA
|
||||||
|
;GetClassLongW
|
||||||
|
;GetClassNameA
|
||||||
|
;GetClassNameW
|
||||||
|
;GetClassWord
|
||||||
|
;GetClientRect
|
||||||
|
;GetClipCursor
|
||||||
|
;GetClipboardData
|
||||||
|
;GetClipboardFormatNameA
|
||||||
|
;GetClipboardFormatNameW
|
||||||
|
;GetClipboardOwner
|
||||||
|
;GetClipboardViewer
|
||||||
|
;GetCursor
|
||||||
|
;GetCursorInfo
|
||||||
|
;GetCursorPos
|
||||||
|
;GetDC
|
||||||
|
;GetDCEx
|
||||||
|
;GetDesktopWindow
|
||||||
|
;GetDialogBaseUnits
|
||||||
|
;GetDlgCtrlID
|
||||||
|
;GetDlgItem
|
||||||
|
;GetDlgItemInt
|
||||||
|
;GetDlgItemTextA
|
||||||
|
;GetDlgItemTextW
|
||||||
|
;GetDoubleClickTime
|
||||||
|
;GetFocus
|
||||||
|
;GetForegroundWindow
|
||||||
|
;GetGUIThreadInfo
|
||||||
|
;GetIconInfo
|
||||||
|
;GetInputDesktop
|
||||||
|
;GetInputState
|
||||||
|
;GetInternalWindowPos
|
||||||
|
;GetKBCodePage
|
||||||
|
;GetKeyNameTextA
|
||||||
|
;GetKeyNameTextW
|
||||||
|
;GetKeyState
|
||||||
|
;GetKeyboardLayout
|
||||||
|
;GetKeyboardLayoutList
|
||||||
|
;GetKeyboardLayoutNameA
|
||||||
|
;GetKeyboardLayoutNameW
|
||||||
|
;GetKeyboardState
|
||||||
|
;GetKeyboardType
|
||||||
|
;GetLastActivePopup
|
||||||
|
;GetMenu
|
||||||
|
;GetMenuCheckMarkDimensions
|
||||||
|
;GetMenuContextHelpId
|
||||||
|
;GetMenuDefaultItem
|
||||||
|
;GetMenuItemCount
|
||||||
|
;GetMenuItemID
|
||||||
|
;GetMenuItemInfoA
|
||||||
|
;GetMenuItemInfoW
|
||||||
|
;GetMenuItemRect
|
||||||
|
;GetMenuState
|
||||||
|
;GetMenuStringA
|
||||||
|
;GetMenuStringW
|
||||||
|
;GetMessageA
|
||||||
|
;GetMessageExtraInfo
|
||||||
|
;GetMessagePos
|
||||||
|
;GetMessageTime
|
||||||
|
;GetMessageW
|
||||||
|
;GetNextDlgGroupItem
|
||||||
|
;GetNextDlgTabItem
|
||||||
|
;GetOpenClipboardWindow
|
||||||
|
;GetParent
|
||||||
|
;GetPriorityClipboardFormat
|
||||||
|
;GetProcessWindowStation
|
||||||
|
;GetProgmanWindow
|
||||||
|
;GetPropA
|
||||||
|
;GetPropW
|
||||||
|
;GetQueueStatus
|
||||||
|
;GetScrollInfo
|
||||||
|
;GetScrollPos
|
||||||
|
;GetScrollRange
|
||||||
|
;GetShellWindow
|
||||||
|
;GetSubMenu
|
||||||
|
;GetSysColor
|
||||||
|
;GetSysColorBrush
|
||||||
|
;GetSystemMenu
|
||||||
|
;GetSystemMetrics
|
||||||
|
;GetTabbedTextExtentA
|
||||||
|
;GetTabbedTextExtentW
|
||||||
|
;GetTaskmanWindow
|
||||||
|
;GetThreadDesktop
|
||||||
|
;GetTopWindow
|
||||||
|
;GetUpdateRect
|
||||||
|
;GetUpdateRgn
|
||||||
|
;GetUserObjectInformationA
|
||||||
|
;GetUserObjectInformationW
|
||||||
|
;GetUserObjectSecurity
|
||||||
|
;GetWindow
|
||||||
|
;GetWindowContextHelpId
|
||||||
|
;GetWindowDC
|
||||||
|
;GetWindowLongA
|
||||||
|
;GetWindowLongW
|
||||||
|
;GetWindowModuleFileName
|
||||||
|
;GetWindowModuleFileNameA
|
||||||
|
;GetWindowModuleFileNameW
|
||||||
|
;GetWindowPlacement
|
||||||
|
;GetWindowRect
|
||||||
|
;GetWindowRgn
|
||||||
|
;GetWindowTextA
|
||||||
|
;GetWindowTextLengthA
|
||||||
|
;GetWindowTextLengthW
|
||||||
|
;GetWindowTextW
|
||||||
|
;GetWindowThreadProcessId
|
||||||
|
;GetWindowWord
|
||||||
|
;GrayStringA
|
||||||
|
;GrayStringW
|
||||||
|
;HideCaret
|
||||||
|
;HiliteMenuItem
|
||||||
|
;ImpersonateDdeClientWindow
|
||||||
|
;InSendMessage
|
||||||
|
;InflateRect
|
||||||
|
;InsertMenuA
|
||||||
|
;InsertMenuItemA
|
||||||
|
;InsertMenuItemW
|
||||||
|
;InsertMenuW
|
||||||
|
;InternalGetWindowText
|
||||||
|
;IntersectRect
|
||||||
|
;InvalidateRect
|
||||||
|
;InvalidateRgn
|
||||||
|
;InvertRect
|
||||||
|
;IsCharAlphaA
|
||||||
|
;IsCharAlphaNumericA
|
||||||
|
;IsCharAlphaNumericW
|
||||||
|
;IsCharAlphaW
|
||||||
|
;IsCharLowerA
|
||||||
|
;IsCharLowerW
|
||||||
|
;IsCharUpperA
|
||||||
|
;IsCharUpperW
|
||||||
|
;IsChild
|
||||||
|
;IsClipboardFormatAvailable
|
||||||
|
;IsDialogMessage
|
||||||
|
;IsDialogMessageA
|
||||||
|
;IsDialogMessageW
|
||||||
|
;IsDlgButtonChecked
|
||||||
|
;IsHungAppWindow
|
||||||
|
;IsIconic
|
||||||
|
;IsMenu
|
||||||
|
;IsRectEmpty
|
||||||
|
;IsWindow
|
||||||
|
;IsWindowEnabled
|
||||||
|
;IsWindowUnicode
|
||||||
|
;IsWindowVisible
|
||||||
|
;IsZoomed
|
||||||
|
;KillSystemTimer
|
||||||
|
;KillTimer
|
||||||
|
;LoadAcceleratorsA
|
||||||
|
;LoadAcceleratorsW
|
||||||
|
;LoadBitmapA
|
||||||
|
;LoadBitmapW
|
||||||
|
;LoadCursorA
|
||||||
|
;LoadCursorFromFileA
|
||||||
|
;LoadCursorFromFileW
|
||||||
|
;LoadCursorW
|
||||||
|
;LoadIconA
|
||||||
|
;LoadIconW
|
||||||
|
;LoadImageA
|
||||||
|
;LoadImageW
|
||||||
|
;LoadKeyboardLayoutA
|
||||||
|
;LoadKeyboardLayoutEx
|
||||||
|
;LoadKeyboardLayoutW
|
||||||
|
;LoadLocalFonts
|
||||||
|
;LoadMenuA
|
||||||
|
;LoadMenuIndirectA
|
||||||
|
;LoadMenuIndirectW
|
||||||
|
;LoadMenuW
|
||||||
|
;LoadRemoteFonts
|
||||||
|
;LoadStringA
|
||||||
|
;LoadStringW
|
||||||
|
;LockWindowStation
|
||||||
|
;LockWindowUpdate
|
||||||
|
;LookupIconIdFromDirectory
|
||||||
|
;LookupIconIdFromDirectoryEx
|
||||||
|
;MBToWCSEx
|
||||||
|
;MB_GetString
|
||||||
|
;MapDialogRect
|
||||||
|
;MapVirtualKeyA
|
||||||
|
;MapVirtualKeyExA
|
||||||
|
;MapVirtualKeyExW
|
||||||
|
;MapVirtualKeyW
|
||||||
|
;MapWindowPoints
|
||||||
|
;MenuItemFromPoint
|
||||||
|
;MenuWindowProcA
|
||||||
|
;MenuWindowProcW
|
||||||
|
;MessageBeep
|
||||||
|
;MessageBoxA
|
||||||
|
;MessageBoxExA
|
||||||
|
;MessageBoxExW
|
||||||
|
;MessageBoxIndirectA
|
||||||
|
;MessageBoxIndirectW
|
||||||
|
;MessageBoxW
|
||||||
|
;ModifyMenuA
|
||||||
|
;ModifyMenuW
|
||||||
|
;MoveWindow
|
||||||
|
;MsgWaitForMultipleObjects
|
||||||
|
;MsgWaitForMultipleObjectsEx
|
||||||
|
;NotifyWinEvent
|
||||||
|
;OemKeyScan
|
||||||
|
;OemToCharA
|
||||||
|
;OemToCharBuffA
|
||||||
|
;OemToCharBuffW
|
||||||
|
;OemToCharW
|
||||||
|
;OffsetRect
|
||||||
|
;OpenClipboard
|
||||||
|
;OpenDesktopA
|
||||||
|
;OpenDesktopW
|
||||||
|
;OpenIcon
|
||||||
|
;OpenInputDesktop
|
||||||
|
;OpenWindowStationA
|
||||||
|
;OpenWindowStationW
|
||||||
|
;PackDDElParam
|
||||||
|
;PaintDesktop
|
||||||
|
;PeekMessageA
|
||||||
|
;PeekMessageW
|
||||||
|
;PostMessageA
|
||||||
|
;PostMessageW
|
||||||
|
;PostQuitMessage
|
||||||
|
;PostThreadMessageA
|
||||||
|
;PostThreadMessageW
|
||||||
|
;PrivateExtractIconExA
|
||||||
|
;PrivateExtractIconExW
|
||||||
|
;PrivateExtractIconsA
|
||||||
|
;PrivateExtractIconsW
|
||||||
|
;PrivateKDBreakPoint
|
||||||
|
;PtInRect
|
||||||
|
;QuerySendMessage
|
||||||
|
;RealChildWindowFromPoint
|
||||||
|
;RealGetWindowClass
|
||||||
|
;RealGetWindowClassA
|
||||||
|
;RealGetWindowClassW
|
||||||
|
;RedrawWindow
|
||||||
|
;RegisterClassA
|
||||||
|
;RegisterClassExA
|
||||||
|
;RegisterClassExW
|
||||||
|
;RegisterClassW
|
||||||
|
;RegisterClipboardFormatA
|
||||||
|
;RegisterClipboardFormatW
|
||||||
|
;RegisterHotKey
|
||||||
|
;RegisterLogonProcess
|
||||||
|
;RegisterServicesProcess
|
||||||
|
;RegisterShellHookWindow
|
||||||
|
;RegisterSystemThread
|
||||||
|
;RegisterTasklist
|
||||||
|
;RegisterWindowMessageA
|
||||||
|
;RegisterWindowMessageW
|
||||||
|
;ReleaseCapture
|
||||||
|
;ReleaseDC
|
||||||
|
;RemoveMenu
|
||||||
|
;RemovePropA
|
||||||
|
;RemovePropW
|
||||||
|
;ReplyMessage
|
||||||
|
;ReuseDDElParam
|
||||||
|
;ScreenToClient
|
||||||
|
;ScrollChildren
|
||||||
|
;ScrollDC
|
||||||
|
;ScrollWindow
|
||||||
|
;ScrollWindowEx
|
||||||
|
;SendDlgItemMessageA
|
||||||
|
;SendDlgItemMessageW
|
||||||
|
;SendInput
|
||||||
|
;SendMessageA
|
||||||
|
;SendMessageCallbackA
|
||||||
|
;SendMessageCallbackW
|
||||||
|
;SendMessageTimeoutA
|
||||||
|
;SendMessageTimeoutW
|
||||||
|
;SendMessageW
|
||||||
|
;SendNotifyMessageA
|
||||||
|
;SendNotifyMessageW
|
||||||
|
;SetActiveWindow
|
||||||
|
;SetCapture
|
||||||
|
;SetCaretBlinkTime
|
||||||
|
;SetCaretPos
|
||||||
|
;SetClassLongA
|
||||||
|
;SetClassLongW
|
||||||
|
;SetClassWord
|
||||||
|
;SetClipboardData
|
||||||
|
;SetClipboardViewer
|
||||||
|
;SetConsoleReserveKeys
|
||||||
|
;SetCursor
|
||||||
|
;SetCursorContents
|
||||||
|
;SetCursorPos
|
||||||
|
;SetDebugErrorLevel
|
||||||
|
;SetDeskWallpaper
|
||||||
|
;SetDlgItemInt
|
||||||
|
;SetDlgItemTextA
|
||||||
|
;SetDlgItemTextW
|
||||||
|
;SetDoubleClickTime
|
||||||
|
;SetFocus
|
||||||
|
;SetForegroundWindow
|
||||||
|
;SetInternalWindowPos
|
||||||
|
;SetKeyboardState
|
||||||
|
;SetLastErrorEx
|
||||||
|
;SetLogonNotifyWindow
|
||||||
|
;SetMenu
|
||||||
|
;SetMenuContextHelpId
|
||||||
|
;SetMenuDefaultItem
|
||||||
|
;SetMenuItemBitmaps
|
||||||
|
;SetMenuItemInfoA
|
||||||
|
;SetMenuItemInfoW
|
||||||
|
;SetMessageExtraInfo
|
||||||
|
;SetMessageQueue
|
||||||
|
;SetParent
|
||||||
|
;SetProcessWindowStation
|
||||||
|
;SetProgmanWindow
|
||||||
|
;SetPropA
|
||||||
|
;SetPropW
|
||||||
|
;SetRect
|
||||||
|
;SetRectEmpty
|
||||||
|
;SetScrollInfo
|
||||||
|
;SetScrollPos
|
||||||
|
;SetScrollRange
|
||||||
|
;SetShellWindow
|
||||||
|
;SetShellWindowEx
|
||||||
|
;SetSysColors
|
||||||
|
;SetSysColorsTemp
|
||||||
|
;SetSystemCursor
|
||||||
|
;SetSystemMenu
|
||||||
|
;SetSystemTimer
|
||||||
|
;SetTaskmanWindow
|
||||||
|
;SetThreadDesktop
|
||||||
|
;SetTimer
|
||||||
|
;SetUserObjectInformationA
|
||||||
|
;SetUserObjectInformationW
|
||||||
|
;SetUserObjectSecurity
|
||||||
|
;SetWinEventHook
|
||||||
|
;SetWindowContextHelpId
|
||||||
|
;SetWindowLongA
|
||||||
|
;SetWindowLongW
|
||||||
|
;SetWindowPlacement
|
||||||
|
;SetWindowPos
|
||||||
|
;SetWindowRgn
|
||||||
|
;SetWindowStationUser
|
||||||
|
;SetWindowTextA
|
||||||
|
;SetWindowTextW
|
||||||
|
;SetWindowWord
|
||||||
|
;SetWindowsHookA
|
||||||
|
;SetWindowsHookExA
|
||||||
|
;SetWindowsHookExW
|
||||||
|
;SetWindowsHookW
|
||||||
|
;ShowCaret
|
||||||
|
;ShowCursor
|
||||||
|
;ShowOwnedPopups
|
||||||
|
;ShowScrollBar
|
||||||
|
;ShowStartGlass
|
||||||
|
;ShowWindow
|
||||||
|
;ShowWindowAsync
|
||||||
|
;SoftModalMessageBox
|
||||||
|
;SubtractRect
|
||||||
|
;SwapMouseButton
|
||||||
|
;SwitchDesktop
|
||||||
|
;SwitchToThisWindow
|
||||||
|
;SystemParametersInfoA
|
||||||
|
;SystemParametersInfoW
|
||||||
|
;TabbedTextOutA
|
||||||
|
;TabbedTextOutW
|
||||||
|
;TileChildWindows
|
||||||
|
;TileWindows
|
||||||
|
;ToAscii
|
||||||
|
;ToAsciiEx
|
||||||
|
;ToUnicode
|
||||||
|
;ToUnicodeEx
|
||||||
|
;TrackMouseEvent
|
||||||
|
;TrackPopupMenu
|
||||||
|
;TrackPopupMenuEx
|
||||||
|
;TranslateAccelerator
|
||||||
|
;TranslateAcceleratorA
|
||||||
|
;TranslateAcceleratorW
|
||||||
|
;TranslateMDISysAccel
|
||||||
|
;TranslateMessage
|
||||||
|
;TranslateMessageEx
|
||||||
|
;UnhookWinEvent
|
||||||
|
;UnhookWindowsHook
|
||||||
|
;UnhookWindowsHookEx
|
||||||
|
;UnionRect
|
||||||
|
;UnloadKeyboardLayout
|
||||||
|
;UnlockWindowStation
|
||||||
|
;UnpackDDElParam
|
||||||
|
;UnregisterClassA
|
||||||
|
;UnregisterClassW
|
||||||
|
;UnregisterHotKey
|
||||||
|
;UpdatePerUserSystemParameters
|
||||||
|
;UpdateWindow
|
||||||
|
;UserClientDllInitialize
|
||||||
|
;UserRealizePalette
|
||||||
|
;UserRegisterWowHandlers
|
||||||
|
;ValidateRect
|
||||||
|
;ValidateRgn
|
||||||
|
;VkKeyScanA
|
||||||
|
;VkKeyScanExA
|
||||||
|
;VkKeyScanExW
|
||||||
|
;VkKeyScanW
|
||||||
|
;WCSToMBEx
|
||||||
|
;WaitForInputIdle
|
||||||
|
;WaitMessage
|
||||||
|
;WinHelpA
|
||||||
|
;WinHelpW
|
||||||
|
;WindowFromDC
|
||||||
|
;WindowFromPoint
|
||||||
|
;keybd_event
|
||||||
|
;mouse_event
|
||||||
|
wsprintfA
|
||||||
|
wsprintfW
|
||||||
|
wvsprintfA@12
|
||||||
|
wvsprintfA = wvsprintfA@12
|
||||||
|
wvsprintfW@12
|
||||||
|
wvsprintfW = wvsprintfW@12
|
||||||
|
|
38
reactos/lib/user32/user32.rc
Normal file
38
reactos/lib/user32/user32.rc
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
#include <windows32/defines.h>
|
||||||
|
#include "../../include/reactos/resource.h"
|
||||||
|
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 0,0,13,RES_UINT_FILE_VERSION
|
||||||
|
PRODUCTVERSION 0,0,13,0
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS 0x1L
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS 0x40004L
|
||||||
|
FILETYPE 0x2L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||||
|
VALUE "FileDescription", "ReactOS User API Client Dll\0"
|
||||||
|
VALUE "FileVersion", "post 0.0.13\0"
|
||||||
|
VALUE "InternalName", "user32\0"
|
||||||
|
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||||
|
VALUE "OriginalFilename", "user32.dll\0"
|
||||||
|
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||||
|
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1200
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
78
reactos/lib/user32/user32_specs
Normal file
78
reactos/lib/user32/user32_specs
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
*asm:
|
||||||
|
|
||||||
|
|
||||||
|
*asm_final:
|
||||||
|
|
||||||
|
|
||||||
|
*cpp:
|
||||||
|
-remap %(cpp_cpu) %{posix:-D_POSIX_SOURCE}
|
||||||
|
|
||||||
|
*cc1:
|
||||||
|
%(cc1_spec)
|
||||||
|
|
||||||
|
*cc1plus:
|
||||||
|
|
||||||
|
|
||||||
|
*endfile:
|
||||||
|
|
||||||
|
|
||||||
|
*link:
|
||||||
|
%{mwindows:--subsystem windows} %{mdll:--dll -e _DllMainCRTStartup@12}
|
||||||
|
|
||||||
|
*lib:
|
||||||
|
|
||||||
|
|
||||||
|
*libgcc:
|
||||||
|
-lgcc
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
|
||||||
|
|
||||||
|
*switches_need_spaces:
|
||||||
|
|
||||||
|
|
||||||
|
*signed_char:
|
||||||
|
%{funsigned-char:-D__CHAR_UNSIGNED__}
|
||||||
|
|
||||||
|
*predefines:
|
||||||
|
-Di386 -D_WIN32 -DWIN32 -D__WIN32__ -D__MINGW32__ -DWINNT -D_X86_=1 -D__STDC__=1 -D__stdcall=__attribute__((__stdcall__)) _D_stdcall=__attribute__((__stdcall__)) -D__cdecl=__attribute__((__cdecl__)) -D__declspec(x)=__attribute__((x)) -Asystem(winnt) -Acpu(i386) -Amachine(i386)
|
||||||
|
|
||||||
|
*cross_compile:
|
||||||
|
1
|
||||||
|
|
||||||
|
*version:
|
||||||
|
egcs-2.91.57
|
||||||
|
|
||||||
|
*multilib:
|
||||||
|
. ;
|
||||||
|
|
||||||
|
*multilib_defaults:
|
||||||
|
|
||||||
|
|
||||||
|
*multilib_extra:
|
||||||
|
|
||||||
|
|
||||||
|
*multilib_matches:
|
||||||
|
|
||||||
|
|
||||||
|
*linker:
|
||||||
|
collect2
|
||||||
|
|
||||||
|
*cpp_486:
|
||||||
|
%{!ansi:-Di486} -D__i486 -D__i486__
|
||||||
|
|
||||||
|
*cpp_586:
|
||||||
|
%{!ansi:-Di586 -Dpentium} -D__i586 -D__i586__ -D__pentium -D__pentium__
|
||||||
|
|
||||||
|
*cpp_686:
|
||||||
|
%{!ansi:-Di686 -Dpentiumpro} -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__
|
||||||
|
|
||||||
|
*cpp_cpu_default:
|
||||||
|
%(cpp_586)
|
||||||
|
|
||||||
|
*cpp_cpu:
|
||||||
|
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__ %{mcpu=i486:%(cpp_486)} %{m486:%(cpp_486)} %{mpentium:%(cpp_586)} %{mcpu=pentium:%(cpp_586)} %{mpentiumpro:%(cpp_686)} %{mcpu=pentiumpro:%(cpp_686)} %{!mcpu*:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}
|
||||||
|
|
||||||
|
*cc1_cpu:
|
||||||
|
%{!mcpu*: %{m386:-mcpu=i386 -march=i386} %{mno-486:-mcpu=i386 -march=i386} %{m486:-mcpu=i486 -march=i486} %{mno-386:-mcpu=i486 -march=i486} %{mno-pentium:-mcpu=i486 -march=i486} %{mpentium:-mcpu=pentium} %{mno-pentiumpro:-mcpu=pentium} %{mpentiumpro:-mcpu=pentiumpro}}
|
||||||
|
|
Loading…
Reference in a new issue