Release 980726

Sat Jul 25 19:45:45 1998  Juergen Schmied <juergen.schmied@metronet.de>

	* [include/shlobj.h][misc/shell.c][misc/shellord.c][ole/folders.c]
	[shell32.spec]
	Added SHFILEOPSTRUCT32[A|W] and constants, prototypes.
	Implemented SHGetSpecialFolderLocation, SHGetPathFromIDList32[A].
	Many IShellFolder, pidl, shell -related changes.

	SHChangeNotifyRegister, SHChangeNotifyDeregister,
	SHShellFolderView_Message, SHMapPIDLToSystemImageListIndex,
	SHAddToRecentDocs32, SHFileOperation, SHChangeNotify, 
	SHCreateShellFolderViewEx stubs.

Sat Jul 25 17:16:25 1998  Huw D M Davies <daviesh@abacus.physics.ox.ac.uk>

	* [files/profile.c]
	Fix return value of PROFILE_GetSection().

Fri Jul 24 22:45:19 1998  Ove Kaaven <ovek@isflak.arcticnet.no>

	* [controls/edit.c]
	Killed the modified flag on WM_SETTEXT. Eudora should no longer
	bother asking whether you want to save an unchanged message.

Fri Jul 24 21:21:35 1998  Andreas Mohr <100.30936@germany.net>

	* [controls/menu.c]
	Fixed bug in GetMenuState32.
	Doesn't fix Free Agent 32 :((

	* [documentation/debugging]
	Hints added.

	* [files/dos_fs.c] [include/msdos.h] [msdos/int21.c]
	Enhanced DOS device support.

	* [if1632/Makefile.in] [if1632/builtin.c] [if1632/rasapi16.spec]
	  [relay32/Makefile.in] [relay32/builtin32.c] [relay32/rasapi32.spec]
	Added RASAPI16/32.DLL.

	* [misc/aspi.c] [relay32/wnaspi32.spec]
	Implemented GetASPI32SupportInfo.

	* [multimedia/mmsystem.c]
	Implemented mmTaskCreate.

Fri Jul 24 20:55:31 1998  Eric Kohl <ekohl@abo.rhein-zeitung.de>

	* [controls/toolbar.c]
	Fixed some bugs and added new features.

	* [controls/tooltips.c][include/tooltips.h]
	Added more messages and started display code.

	* [misc/shell.c][misc/shellord.c][relay32/shell.spec]
	Fixed StrToOleStrN (SHELL32_79) and added OleStrToStrN (SHELL32_78).
	Added some new stubs.

	* [objects/cursoricon.c][misc/imagelist.c][include/windows.h]
	Fixed GetIconInfo and removed the GetIconInfo hack from the
	image list code.

	* [controls/pager.c][include/pager.h][controls/treeview.c]
	  [include/treeview.h]
	Added some messages.

	* [misc/tweak.c][winows/nonclient.c][documentation/win95look]
	Removed unused tweak variables.

	* [documentation/common_controls]
	Updated.

Fri Jul 24 18:36:32 1998  James Moody <013263m@dragon.acadiau.ca>

	* [objects/font.c]
	Fixed a bug in GetTextFace.

Fri Jul 24 17:09:33 1998  Marcus Meissner <marcus@jet.franken.de>

	* [misc/commdlg.c]
	Fixed stacksmashing bug due to invalid specified function
	pointers.

	* [files/dos_fs.c]
	Small change in case handling... be able to create files with
	uppercase in them (like Program Files/).

	* [graphics/ddraw.c]
	XF86DGA support made threadsafe, added more Xlib dependent stuff
	(create Window using CreateWindow(), draw into it). xlib support
	is not satisfying.

	* [scheduler/critsection.c]
	Don't recurse on HeapLock with semaphore id 0.

	* [win32/user32.c][windows/message.c][windows/event.c]
	Moved win32 *Message functions where they belong.
	Removed some potential races between XPending and XNextEvent by
	a bit more locking.

Fri Jul 24 13:58:19 1998  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [loader/pe_image.c] [loader/ne/segment.c]
	Use bogus pointer value instead of NULL for unresolved externals.

	* [memory/selector.c]
	Clear saved_fs on selector free.

	* [msdos/cdrom.c] [configure.in]
	Added check for linux/ucdrom.h.

	* [scheduler/client.c] [server/socket.c]
	Fix for missing struct cmsghdr.
	Attempt to support msg_accrights fd passing (completely untested).

	* [windows/event.c]
	Do not grab the pointer in SetCapture (Win32 behavior).

Tue Jul 21 22:28:13 1998  James Juran  <jrj120@psu.edu>

	* [Make.rules.in]
	Changed $(MKDIR) macro to use -p option (make parent directories
	if they don't already exist.  This fixes an error in 'make install'
	if /usr/local/include doesn't already exist.

Tue Jul 21 13:37:04 Rein Klazes <rklazes@casema.net>

	* [include/heap.h]
	Replaced macro SEGPTR_GET by inline function to avoid *lots*
	of wrong use of this macro.

	* [relay32/comdlg32.spec]
	Corrected GetSaveFileNameW entry.

	* [relay32/advapi32.spec] [win32/advapi.c]
	  [relay32/ole32.spec] [ ole/moniker.c]
	Added stubs for SetFileSecurity[AW] and CreateFileMoniker32

	* [graphics/x11drv/graphics.c]
	Finished implementation of bezier drawing code.

Tue Jul 21 11:00:51 1998  Claus Fischer <cfischer@td2cad.intel.com>

	* [files/drive.c]
	Remove label trailing blanks in GetVolumeInformation32A.

	* [documentation/cdrom-labels]
	Added documentation on how to find out a CD-ROM label.

Sun Jul 19 23:16:41 1998  Pascal Cuoq <pcuoq@ens-lyon.fr>

	* [include/windows.h]
	Added some DM_* and DISP_CHANGE_* flags.

	* [relay32/user32.spec] [windows/user.c]
	Added stub for ChangeDisplaySettingA.

	* [ole/ole2nls.c]
	is_punctuation: reuse information from another table.

Sun Jul 19 22:04:46 1998  Douglas Ridgway  <ridgway@winehq.com>

	* [Make.rules.in]
	Updated automatic documentation rules.

	* [graphics/path.c] [misc/aspi.c] [misc/ntdll.c] [misc/winsock_dns.c]
	[ole/ole2dsp.c] [relay32/user32.spec]
	Comment format futzing to keep c2man happy.

	* [documentation/README.documentation]
	Updated description of automatic documentation.

Wed Jul 15 19:10:09 1998   Andrew M. Bishop <amb@gedanken.demon.co.uk>

	* [files/profile.c]
	Cache the 10 most recently used .ini files.

Tue May 20 19:20:23 1997  Pablo Saratxaga <srtxg@chanae.alphanet.ch>

	* [misc/commdlg.c]
	Makes PrintDlg32A() return TRUE even if it is an empty
	stub, so most programs are happy and run anyway instead of
	aborting at startup.

	* [graphics/x11drv/xfont.c]
	Increased the maximum font families as (X11) font aliases
	eated up a lot of families causing wine to stop reading fonts.
This commit is contained in:
Alexandre Julliard 1998-07-26 14:27:39 +00:00
parent 642d3136de
commit 829fe323e4
155 changed files with 4702 additions and 2869 deletions

View File

@ -1,15 +1,14 @@
This is release 980712 of Wine, the MS Windows emulator. This is still a
This is release 980726 of Wine, the MS Windows emulator. This is still a
developer's only release. There are many bugs and many unimplemented API
features. Most applications still do not work correctly.
Patches should be submitted to "julliard@lrc.epfl.ch". Please don't
forget to include a ChangeLog entry.
WHAT'S NEW with Wine-980712: (see ChangeLog for details)
- More common controls stuff.
- Win32s VxD support.
- Beginnings of client/server architecture.
- More NLS support.
WHAT'S NEW with Wine-980726: (see ChangeLog for details)
- Still more common controls stuff.
- More DirectDraw support.
- Compilation problems should be gone.
- Lots of bug fixes.
See the README file in the distribution for installation instructions.
@ -18,10 +17,10 @@ Because of lags created by using mirror, this message may reach you before
the release is available at the ftp sites. The sources will be available
from the following locations:
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-980712.tar.gz
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-980712.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-980712.tar.gz
ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-980712.tar.gz
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-980726.tar.gz
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-980726.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-980726.tar.gz
ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-980726.tar.gz
It should also be available from any site that mirrors tsx-11 or sunsite.

189
ChangeLog
View File

@ -1,3 +1,192 @@
----------------------------------------------------------------------
Sat Jul 25 19:45:45 1998 Juergen Schmied <juergen.schmied@metronet.de>
* [include/shlobj.h][misc/shell.c][misc/shellord.c][ole/folders.c]
[shell32.spec]
Added SHFILEOPSTRUCT32[A|W] and constants, prototypes.
Implemented SHGetSpecialFolderLocation, SHGetPathFromIDList32[A].
Many IShellFolder, pidl, shell -related changes.
SHChangeNotifyRegister, SHChangeNotifyDeregister,
SHShellFolderView_Message, SHMapPIDLToSystemImageListIndex,
SHAddToRecentDocs32, SHFileOperation, SHChangeNotify,
SHCreateShellFolderViewEx stubs.
Sat Jul 25 17:16:25 1998 Huw D M Davies <daviesh@abacus.physics.ox.ac.uk>
* [files/profile.c]
Fix return value of PROFILE_GetSection().
Fri Jul 24 22:45:19 1998 Ove Kaaven <ovek@isflak.arcticnet.no>
* [controls/edit.c]
Killed the modified flag on WM_SETTEXT. Eudora should no longer
bother asking whether you want to save an unchanged message.
Fri Jul 24 21:21:35 1998 Andreas Mohr <100.30936@germany.net>
* [controls/menu.c]
Fixed bug in GetMenuState32.
Doesn't fix Free Agent 32 :((
* [documentation/debugging]
Hints added.
* [files/dos_fs.c] [include/msdos.h] [msdos/int21.c]
Enhanced DOS device support.
* [if1632/Makefile.in] [if1632/builtin.c] [if1632/rasapi16.spec]
[relay32/Makefile.in] [relay32/builtin32.c] [relay32/rasapi32.spec]
Added RASAPI16/32.DLL.
* [misc/aspi.c] [relay32/wnaspi32.spec]
Implemented GetASPI32SupportInfo.
* [multimedia/mmsystem.c]
Implemented mmTaskCreate.
Fri Jul 24 20:55:31 1998 Eric Kohl <ekohl@abo.rhein-zeitung.de>
* [controls/toolbar.c]
Fixed some bugs and added new features.
* [controls/tooltips.c][include/tooltips.h]
Added more messages and started display code.
* [misc/shell.c][misc/shellord.c][relay32/shell.spec]
Fixed StrToOleStrN (SHELL32_79) and added OleStrToStrN (SHELL32_78).
Added some new stubs.
* [objects/cursoricon.c][misc/imagelist.c][include/windows.h]
Fixed GetIconInfo and removed the GetIconInfo hack from the
image list code.
* [controls/pager.c][include/pager.h][controls/treeview.c]
[include/treeview.h]
Added some messages.
* [misc/tweak.c][winows/nonclient.c][documentation/win95look]
Removed unused tweak variables.
* [documentation/common_controls]
Updated.
Fri Jul 24 18:36:32 1998 James Moody <013263m@dragon.acadiau.ca>
* [objects/font.c]
Fixed a bug in GetTextFace.
Fri Jul 24 17:09:33 1998 Marcus Meissner <marcus@jet.franken.de>
* [misc/commdlg.c]
Fixed stacksmashing bug due to invalid specified function
pointers.
* [files/dos_fs.c]
Small change in case handling... be able to create files with
uppercase in them (like Program Files/).
* [graphics/ddraw.c]
XF86DGA support made threadsafe, added more Xlib dependent stuff
(create Window using CreateWindow(), draw into it). xlib support
is not satisfying.
* [scheduler/critsection.c]
Don't recurse on HeapLock with semaphore id 0.
* [win32/user32.c][windows/message.c][windows/event.c]
Moved win32 *Message functions where they belong.
Removed some potential races between XPending and XNextEvent by
a bit more locking.
Fri Jul 24 13:58:19 1998 Alexandre Julliard <julliard@lrc.epfl.ch>
* [loader/pe_image.c] [loader/ne/segment.c]
Use bogus pointer value instead of NULL for unresolved externals.
* [memory/selector.c]
Clear saved_fs on selector free.
* [msdos/cdrom.c] [configure.in]
Added check for linux/ucdrom.h.
* [scheduler/client.c] [server/socket.c]
Fix for missing struct cmsghdr.
Attempt to support msg_accrights fd passing (completely untested).
* [windows/event.c]
Do not grab the pointer in SetCapture (Win32 behavior).
Tue Jul 21 22:28:13 1998 James Juran <jrj120@psu.edu>
* [Make.rules.in]
Changed $(MKDIR) macro to use -p option (make parent directories
if they don't already exist. This fixes an error in 'make install'
if /usr/local/include doesn't already exist.
Tue Jul 21 13:37:04 Rein Klazes <rklazes@casema.net>
* [include/heap.h]
Replaced macro SEGPTR_GET by inline function to avoid *lots*
of wrong use of this macro.
* [relay32/comdlg32.spec]
Corrected GetSaveFileNameW entry.
* [relay32/advapi32.spec] [win32/advapi.c]
[relay32/ole32.spec] [ ole/moniker.c]
Added stubs for SetFileSecurity[AW] and CreateFileMoniker32
* [graphics/x11drv/graphics.c]
Finished implementation of bezier drawing code.
Tue Jul 21 11:00:51 1998 Claus Fischer <cfischer@td2cad.intel.com>
* [files/drive.c]
Remove label trailing blanks in GetVolumeInformation32A.
* [documentation/cdrom-labels]
Added documentation on how to find out a CD-ROM label.
Sun Jul 19 23:16:41 1998 Pascal Cuoq <pcuoq@ens-lyon.fr>
* [include/windows.h]
Added some DM_* and DISP_CHANGE_* flags.
* [relay32/user32.spec] [windows/user.c]
Added stub for ChangeDisplaySettingA.
* [ole/ole2nls.c]
is_punctuation: reuse information from another table.
Sun Jul 19 22:04:46 1998 Douglas Ridgway <ridgway@winehq.com>
* [Make.rules.in]
Updated automatic documentation rules.
* [graphics/path.c] [misc/aspi.c] [misc/ntdll.c] [misc/winsock_dns.c]
[ole/ole2dsp.c] [relay32/user32.spec]
Comment format futzing to keep c2man happy.
* [documentation/README.documentation]
Updated description of automatic documentation.
Wed Jul 15 19:10:09 1998 Andrew M. Bishop <amb@gedanken.demon.co.uk>
* [files/profile.c]
Cache the 10 most recently used .ini files.
Tue May 20 19:20:23 1997 Pablo Saratxaga <srtxg@chanae.alphanet.ch>
* [misc/commdlg.c]
Makes PrintDlg32A() return TRUE even if it is an empty
stub, so most programs are happy and run anyway instead of
aborting at startup.
* [graphics/x11drv/xfont.c]
Increased the maximum font families as (X11) font aliases
eated up a lot of families causing wine to stop reading fonts.
----------------------------------------------------------------------
Sun Jul 12 16:23:36 1998 Alexandre Julliard <julliard@lrc.epfl.ch>

View File

@ -36,8 +36,13 @@ ALLCFLAGS = $(CFLAGS) $(DEFS) $(OPTIONS) $(DIVINCL) $(X_CFLAGS)
LDCOMBINE = ld -r
AR = ar rc
RM = rm -f
MKDIR = mkdir
MKDIR = mkdir -p
C2MAN = @C2MAN@
MANSPECS = -w $(TOPSRCDIR)/relay32/gdi32.spec \
-w $(TOPSRCDIR)/relay32/user32.spec \
-w $(TOPSRCDIR)/relay32/comctl32.spec \
-w $(TOPSRCDIR)/relay32/comdlg32.spec \
-w $(TOPSRCDIR)/relay32/kernel32.spec
LINT = lclint
LINTFLAGS = +posixlib +gnuextensions +trytorecover
BUILD = $(TOPOBJDIR)/tools/build@PROGEXT@
@ -134,21 +139,21 @@ $(BUILD) checkbuild:
$(MODULE).o: $(OBJS)
$(LDCOMBINE) $(OBJS) -o $(MODULE).o
# Rule for man pages
# Rules for auto documentation
man: $(C_SRCS)
for i in $(C_SRCS); do $(C2MAN) -L -o$(TOPOBJDIR)/documentation/man3w -S3w $(DIVINCL) $$i; done
for i in $(C_SRCS); do $(C2MAN) -L -o $(TOPOBJDIR)/documentation/man3w -S3w $(DIVINCL) -D__WINE__ $(MANSPECS) $$i; done
html: $(C_SRCS)
for i in $(C_SRCS); do $(C2MAN) -L -o $(TOPOBJDIR)/documentation/html -Th -iwindows.h $(DIVINCL) -D__WINE__ $(MANSPECS) $$i; done
# Rule for linting
lint:
for i in $(C_SRCS); do $(LINT) $(LINTFLAGS) -D__WINE__ $(OPTIONS) $(DIVINCL) $(X_CFLAGS) $$i; done
# Rule for html pages
html: $(C_SRCS)
for i in $(C_SRCS); do $(C2MAN) -L -o$(TOPOBJDIR)/documentation/html -Th -iwindows.h $(DIVINCL) $$i; done
# Misc. rules
depend:: $(MAKEDEP) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS)

129
configure vendored
View File

@ -581,7 +581,7 @@ fi
# Check whether --enable-lib or --disable-lib was given.
if test "${enable_lib+set}" = set; then
enableval="$enable_lib"
if test "$enableval" = "no"; then LIB_TARGET="\$LIBOBJS"; fi
if test "$enableval" = "no"; then LIB_TARGET="\$(LIBOBJS)"; fi
fi
@ -2425,17 +2425,18 @@ else
else
libX11_ckeck=none
for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
if test -e $dir/libX11.so; then
if test -r $dir/libX11.so; then
libX11_check="-D $dir/libX11.so"
break 1
fi
if test -e $dir/libX11.a; then
if test -r $dir/libX11.a; then
libX11_check="$dir/libX11.a"
break 1
fi
done
if test "$libX11_check" != "none"; then
if nm $libX11_check | grep -q __errno_location; then
if nm $libX11_check | grep __errno_location >/dev/null 2>&1
then
wine_cv_x_reentrant=yes
else
wine_cv_x_reentrant=no
@ -2459,12 +2460,12 @@ fi
for ac_func in clone getpagesize memmove sigaltstack strerror stricmp tcgetattr timegm usleep wait4 waitpid vfscanf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:2463: checking for $ac_func" >&5
echo "configure:2464: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2468 "configure"
#line 2469 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -2487,7 +2488,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:2491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
if { (eval echo configure:2492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -2511,21 +2512,21 @@ else
fi
done
for ac_hdr in wctype.h sys/syscall.h syscall.h sys/param.h sys/vfs.h sys/mount.h sys/statfs.h float.h linux/cdrom.h sys/cdio.h sys/filio.h sys/modem.h strings.h sys/strtio.h
for ac_hdr in wctype.h sys/syscall.h syscall.h sys/param.h sys/vfs.h sys/mount.h sys/statfs.h float.h linux/cdrom.h linux/ucdrom.h sys/cdio.h sys/filio.h sys/modem.h strings.h sys/strtio.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2519: checking for $ac_hdr" >&5
echo "configure:2520: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2524 "configure"
#line 2525 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
@ -2552,12 +2553,12 @@ fi
done
echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
echo "configure:2556: checking whether stat file-mode macros are broken" >&5
echo "configure:2557: checking whether stat file-mode macros are broken" >&5
if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2561 "configure"
#line 2562 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@ -2608,12 +2609,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
echo "configure:2612: checking for working const" >&5
echo "configure:2613: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2617 "configure"
#line 2618 "configure"
#include "confdefs.h"
int main() {
@ -2662,7 +2663,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
if { (eval echo configure:2666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:2667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@ -2683,12 +2684,12 @@ EOF
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
echo "configure:2687: checking for ANSI C header files" >&5
echo "configure:2688: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2692 "configure"
#line 2693 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@ -2696,7 +2697,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2700: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
@ -2713,7 +2714,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 2717 "configure"
#line 2718 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@ -2731,7 +2732,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 2735 "configure"
#line 2736 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@ -2752,7 +2753,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
#line 2756 "configure"
#line 2757 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@ -2763,7 +2764,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
if { (eval echo configure:2767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
if { (eval echo configure:2768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
:
else
@ -2787,12 +2788,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
echo "configure:2791: checking for size_t" >&5
echo "configure:2792: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2796 "configure"
#line 2797 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -2820,7 +2821,7 @@ EOF
fi
echo $ac_n "checking size of long long""... $ac_c" 1>&6
echo "configure:2824: checking size of long long" >&5
echo "configure:2825: checking size of long long" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -2828,7 +2829,7 @@ else
ac_cv_sizeof_long_long=0
else
cat > conftest.$ac_ext <<EOF
#line 2832 "configure"
#line 2833 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
@ -2839,7 +2840,7 @@ main()
exit(0);
}
EOF
if { (eval echo configure:2843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
if { (eval echo configure:2844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_long_long=`cat conftestval`
else
@ -2863,12 +2864,12 @@ EOF
if test "$ac_cv_header_sys_vfs_h" = "yes"
then
echo $ac_n "checking "whether sys/vfs.h defines statfs"""... $ac_c" 1>&6
echo "configure:2867: checking "whether sys/vfs.h defines statfs"" >&5
echo "configure:2868: checking "whether sys/vfs.h defines statfs"" >&5
if eval "test \"`echo '$''{'wine_cv_sys_vfs_has_statfs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2872 "configure"
#line 2873 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -2885,7 +2886,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:2889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:2890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_sys_vfs_has_statfs=yes
else
@ -2912,12 +2913,12 @@ fi
if test "$ac_cv_header_sys_statfs_h" = "yes"
then
echo $ac_n "checking "whether sys/statfs.h defines statfs"""... $ac_c" 1>&6
echo "configure:2916: checking "whether sys/statfs.h defines statfs"" >&5
echo "configure:2917: checking "whether sys/statfs.h defines statfs"" >&5
if eval "test \"`echo '$''{'wine_cv_sys_statfs_has_statfs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2921 "configure"
#line 2922 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -2932,7 +2933,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:2936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:2937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_sys_statfs_has_statfs=yes
else
@ -2959,12 +2960,12 @@ fi
if test "$ac_cv_header_sys_mount_h" = "yes"
then
echo $ac_n "checking "whether sys/mount.h defines statfs"""... $ac_c" 1>&6
echo "configure:2963: checking "whether sys/mount.h defines statfs"" >&5
echo "configure:2964: checking "whether sys/mount.h defines statfs"" >&5
if eval "test \"`echo '$''{'wine_cv_sys_mount_has_statfs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2968 "configure"
#line 2969 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -2979,7 +2980,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:2983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:2984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_sys_mount_has_statfs=yes
else
@ -3005,7 +3006,7 @@ fi
echo $ac_n "checking "for statfs.f_bfree"""... $ac_c" 1>&6
echo "configure:3009: checking "for statfs.f_bfree"" >&5
echo "configure:3010: checking "for statfs.f_bfree"" >&5
if eval "test \"`echo '$''{'wine_cv_statfs_bfree'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -3014,7 +3015,7 @@ else
wine_cv_statfs_bfree=no
else
cat > conftest.$ac_ext <<EOF
#line 3018 "configure"
#line 3019 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -3041,7 +3042,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:3045: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:3046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_statfs_bfree=yes
else
@ -3065,7 +3066,7 @@ EOF
fi
echo $ac_n "checking "for statfs.f_bavail"""... $ac_c" 1>&6
echo "configure:3069: checking "for statfs.f_bavail"" >&5
echo "configure:3070: checking "for statfs.f_bavail"" >&5
if eval "test \"`echo '$''{'wine_cv_statfs_bavail'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -3074,7 +3075,7 @@ else
wine_cv_statfs_bavail=no
else
cat > conftest.$ac_ext <<EOF
#line 3078 "configure"
#line 3079 "configure"
#include "confdefs.h"
#include <sys/types.h>
@ -3101,7 +3102,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:3105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:3106: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
wine_cv_statfs_bavail=yes
else
@ -3126,7 +3127,7 @@ fi
echo $ac_n "checking "for working sigaltstack"""... $ac_c" 1>&6
echo "configure:3130: checking "for working sigaltstack"" >&5
echo "configure:3131: checking "for working sigaltstack"" >&5
if eval "test \"`echo '$''{'ac_cv_c_working_sigaltstack'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -3135,7 +3136,7 @@ else
else
cat > conftest.$ac_ext <<EOF
#line 3139 "configure"
#line 3140 "configure"
#include "confdefs.h"
#include <stdio.h>
@ -3173,7 +3174,7 @@ else
}
EOF
if { (eval echo configure:3177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
if { (eval echo configure:3178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
ac_cv_c_working_sigaltstack="yes"
else
@ -3199,6 +3200,42 @@ fi
echo $ac_n "checking "for msg_accrights in struct msghdr"""... $ac_c" 1>&6
echo "configure:3205: checking "for msg_accrights in struct msghdr"" >&5
if eval "test \"`echo '$''{'ac_cv_c_msg_accrights'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 3210 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
int main() {
struct msghdr hdr; hdr.msg_accrights=0
; return 0; }
EOF
if { (eval echo configure:3218: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_msg_accrights="yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_c_msg_accrights="no"
fi
rm -f conftest*
fi
echo "$ac_t""$ac_cv_c_msg_accrights" 1>&6
if test "$ac_cv_c_msg_accrights" = "yes"
then
cat >> confdefs.h <<\EOF
#define HAVE_MSGHDR_ACCRIGHTS 1
EOF
fi
MAKE_RULES=Make.rules

View File

@ -28,7 +28,7 @@ AC_ARG_ENABLE(dll,
AC_ARG_ENABLE(lib,
[ --disable-lib build the Wine without building libwine.a],
[if test "$enableval" = "no"; then LIB_TARGET="\$LIBOBJS"; fi])
[if test "$enableval" = "no"; then LIB_TARGET="\$(LIBOBJS)"; fi])
dnl AC_ARG_WITH(ipc,
dnl [ --enable-ipc use inter-process communication for DDE],
@ -213,17 +213,18 @@ AC_CACHE_CHECK( "for reentrant X libraries", wine_cv_x_reentrant,
else
libX11_ckeck=none
for dir in "$x_libraries" /usr/lib /usr/local/lib /lib; do
if test -e $dir/libX11.so; then
if test -r $dir/libX11.so; then
libX11_check="-D $dir/libX11.so"
break 1
fi
if test -e $dir/libX11.a; then
if test -r $dir/libX11.a; then
libX11_check="$dir/libX11.a"
break 1
fi
done
if test "$libX11_check" != "none"; then
if nm $libX11_check | grep -q __errno_location; then
if nm $libX11_check | grep __errno_location >/dev/null 2>&1
then
wine_cv_x_reentrant=yes
else
wine_cv_x_reentrant=no
@ -240,7 +241,7 @@ fi
dnl **** Check for functions and header files ****
AC_CHECK_FUNCS(clone getpagesize memmove sigaltstack strerror stricmp tcgetattr timegm usleep wait4 waitpid vfscanf)
AC_CHECK_HEADERS(wctype.h sys/syscall.h syscall.h sys/param.h sys/vfs.h sys/mount.h sys/statfs.h float.h linux/cdrom.h sys/cdio.h sys/filio.h sys/modem.h strings.h sys/strtio.h)
AC_CHECK_HEADERS(wctype.h sys/syscall.h syscall.h sys/param.h sys/vfs.h sys/mount.h sys/statfs.h float.h linux/cdrom.h linux/ucdrom.h sys/cdio.h sys/filio.h sys/modem.h strings.h sys/strtio.h)
AC_HEADER_STAT()
AC_C_CONST()
AC_TYPE_SIZE_T()
@ -432,6 +433,17 @@ then
fi
dnl *** check for file descriptor passing with msg_accrights
AC_CACHE_CHECK("for msg_accrights in struct msghdr", ac_cv_c_msg_accrights,
AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/socket.h>],[struct msghdr hdr; hdr.msg_accrights=0],
ac_cv_c_msg_accrights="yes", ac_cv_c_msg_accrights="no"))
if test "$ac_cv_c_msg_accrights" = "yes"
then
AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS)
fi
dnl **** Generate output files ****
MAKE_RULES=Make.rules

View File

@ -17,6 +17,7 @@
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include "windows.h"
#include "heap.h"
#include "debug.h"
@ -121,6 +122,44 @@ COMCTL32_GetSize (LPVOID dwParam)
}
/**************************************************************************
* Str_SetPtrA [COMCTL32.234]
*
* PARAMS
* dwParam1 [I]
* dwParam2 [I]
*/
BOOL32 WINAPI
COMCTL32_Str_SetPtrA (LPSTR lpStr, LPVOID *lpPtr)
{
INT32 len;
LPSTR ptr;
FIXME (commctrl, "(0x%08lx 0x%08lx)\n", (DWORD)lpStr, (DWORD)lpPtr);
FIXME (commctrl, "(\"%s\" \"%s\")\n", lpStr, (LPSTR)*lpPtr);
if (lpStr) {
len = lstrlen32A (lpStr);
ptr = COMCTL32_ReAlloc (lpPtr, len + 1);
if (!(ptr))
return FALSE;
lstrcpy32A (ptr, lpStr);
*lpPtr = ptr;
return TRUE;
}
if (*lpPtr) {
COMCTL32_Free (*lpPtr);
return TRUE;
}
return FALSE;
}
/**************************************************************************
* DSA_Create [COMCTL32.320] Creates a dynamic string array
*
@ -146,6 +185,13 @@ DSA_Create (DWORD dwParam1, DWORD dwParam2)
}
/**************************************************************************
* DSA_Destroy [COMCTL32.321] Destroys a dynamic string array
*
* PARAMS
* dwParam1 [I]
*/
DWORD WINAPI
DSA_Destroy (DWORD dwParam1)
{
@ -184,9 +230,7 @@ DSA_GetItem (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3)
// FIXME (commctrl, "\"%s\"\n", (LPSTR)dsaPtr->ptrs[dwParam2]);
return lstrcpy32A ((LPSTR)dwParam3, (LPSTR)dsaPtr->ptrs[dwParam2]);
// return 0;
return (DWORD)lstrcpy32A ((LPSTR)dwParam3, (LPSTR)dsaPtr->ptrs[dwParam2]);
}
@ -431,28 +475,47 @@ COMCTL32_SendNotify (DWORD dw1, DWORD dw2, DWORD dw3, DWORD dw4)
*/
LPSTR WINAPI
COMCTL32_StrChrA (LPSTR lpString, CHAR cChar)
COMCTL32_StrChrA (LPCSTR lpString, CHAR cChar)
{
return strchr (lpString, cChar);
}
/**************************************************************************
* StrStrIA [COMCTL32.350]
*
* BUGS
* This implementation is case sensitive, but it mustn't.
* StrStrIA [COMCTL32.355]
*/
LPSTR WINAPI
COMCTL32_StrStrIA (LPSTR lpStr1, LPSTR lpStr2)
COMCTL32_StrStrIA (LPCSTR lpStr1, LPCSTR lpStr2)
{
return strstr (lpStr1, lpStr2);
INT32 len1, len2, i;
CHAR first;
if (*lpStr2 == 0)
return ((LPSTR)lpStr1);
len1 = 0;
while (lpStr1[len1] != 0) ++len1;
len2 = 0;
while (lpStr2[len2] != 0) ++len2;
if (len2 == 0)
return ((LPSTR)(lpStr1 + len1));
first = tolower (*lpStr2);
while (len1 >= len2) {
if (tolower(*lpStr1) == first) {
for (i = 1; i < len2; ++i)
if (tolower (lpStr1[i]) != tolower(lpStr2[i]))
break;
if (i >= len2)
return ((LPSTR)lpStr1);
}
++lpStr1; --len1;
}
return (NULL);
}
/**************************************************************************
* StrToIntA [COMCTL32.357]
* StrToIntA [COMCTL32.357] Converts a string to a signed integer.
*/
INT32 WINAPI

View File

@ -222,7 +222,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
break;
case ICC_INTERNET_CLASSES:
TRACE (commctrl, "No internet classes implemented!\n");
TRACE (commctrl, "No IPAddress class implemented!\n");
break;
case ICC_PAGESCROLLER_CLASS:
@ -320,25 +320,36 @@ CreateToolbarEx (HWND32 hwnd, DWORD style, UINT32 wID, INT32 nBitmaps,
(WPARAM32)uStructSize, 0);
/* set bitmap and button size */
SendMessage32A (hwndTB, TB_SETBITMAPSIZE, 0,
MAKELPARAM((WORD)dyBitmap, (WORD)dxBitmap));
#if 0
SendMessage32A (hwndTB, TB_SETBUTTONSIZE, 0,
MAKELONG((WORD)dyButton, (WORD)dxButton));
#endif
/* add bitmaps */
if (nBitmaps > 0) {
tbab.hInst = hBMInst;
tbab.nID = wBMID;
SendMessage32A (hwndTB, TB_ADDBITMAP,
(WPARAM32)nBitmaps, (LPARAM)&tbab);
if (hBMInst == HINST_COMMCTRL) {
if (wBMID & 1) {
SendMessage32A (hwndTB, TB_SETBITMAPSIZE, 0,
MAKELPARAM(26, 25));
SendMessage32A (hwndTB, TB_SETBUTTONSIZE, 0,
MAKELPARAM(33, 32));
}
else {
SendMessage32A (hwndTB, TB_SETBITMAPSIZE, 0,
MAKELPARAM(16, 15));
SendMessage32A (hwndTB, TB_SETBUTTONSIZE, 0,
MAKELPARAM(23, 22));
}
}
else {
SendMessage32A (hwndTB, TB_SETBITMAPSIZE, 0,
MAKELPARAM((WORD)dyBitmap, (WORD)dxBitmap));
SendMessage32A (hwndTB, TB_SETBUTTONSIZE, 0,
MAKELPARAM((WORD)dyButton, (WORD)dxButton));
}
/* add bitmaps */
tbab.hInst = hBMInst;
tbab.nID = wBMID;
SendMessage32A (hwndTB, TB_ADDBITMAP,
(WPARAM32)nBitmaps, (LPARAM)&tbab);
/* add buttons */
if (iNumButtons > 0)
SendMessage32A (hwndTB, TB_ADDBUTTONS32A,
(WPARAM32)iNumButtons, (LPARAM)lpButtons);
SendMessage32A (hwndTB, TB_ADDBUTTONS32A,
(WPARAM32)iNumButtons, (LPARAM)lpButtons);
}
return hwndTB;
@ -387,20 +398,20 @@ CreateMappedBitmap (HINSTANCE32 hInstance, INT32 idBitmap, UINT32 wFlags,
}
hRsrc = FindResource32A (hInstance, (LPSTR)idBitmap, RT_BITMAP32A);
if (hRsrc == NULL)
return NULL;
if (hRsrc == 0)
return 0;
hglb = LoadResource32 (hInstance, hRsrc);
if (hglb == NULL)
return NULL;
if (hglb == 0)
return 0;
lpBitmap = (LPBITMAPINFOHEADER)LockResource32 (hglb);
if (lpBitmap == NULL)
return NULL;
return 0;
nColorTableSize = (1 << lpBitmap->biBitCount);
nSize = lpBitmap->biSize + nColorTableSize * sizeof(RGBQUAD);
lpBitmapInfo = (LPBITMAPINFOHEADER)GlobalAlloc32 (GMEM_FIXED, nSize);
if (lpBitmapInfo == NULL)
return NULL;
return 0;
RtlMoveMemory (lpBitmapInfo, lpBitmap, nSize);
pColorTable = (DWORD*)(((LPBYTE)lpBitmapInfo)+(UINT32)lpBitmapInfo->biSize);
@ -423,7 +434,7 @@ CreateMappedBitmap (HINSTANCE32 hInstance, INT32 idBitmap, UINT32 wFlags,
nWidth = (INT32)lpBitmapInfo->biWidth;
nHeight = (INT32)lpBitmapInfo->biHeight;
hdcScreen = GetDC32 (NULL);
hdcScreen = GetDC32 ((HWND32)0);
hbm = CreateCompatibleBitmap32 (hdcScreen, nWidth, nHeight);
if (hbm) {
HDC32 hdcDst = CreateCompatibleDC32 (hdcScreen);
@ -436,7 +447,7 @@ CreateMappedBitmap (HINSTANCE32 hInstance, INT32 idBitmap, UINT32 wFlags,
SelectObject32 (hdcDst, hbmOld);
DeleteDC32 (hdcDst);
}
ReleaseDC32 (NULL, hdcScreen);
ReleaseDC32 ((HWND32)0, hdcScreen);
GlobalFree32 ((HGLOBAL32)lpBitmapInfo);
FreeResource32 (hglb);
@ -495,7 +506,7 @@ GetEffectiveClientRect (HWND32 hwnd, LPRECT32 lpRect, LPINT32 lpInfo)
if (GetWindowLong32A (hwndCtrl, GWL_STYLE) & WS_VISIBLE) {
TRACE (commctrl, "control id 0x%x\n", *lpRun);
GetWindowRect32 (hwndCtrl, &rcCtrl);
MapWindowPoints32 (NULL, hwnd, (LPPOINT32)&rcCtrl, 2);
MapWindowPoints32 ((HWND32)0, hwnd, (LPPOINT32)&rcCtrl, 2);
SubtractRect32 (lpRect, lpRect, &rcCtrl);
}
lpRun++;

View File

@ -3793,8 +3793,8 @@ static void EDIT_WM_SetText(WND *wnd, EDITSTATE *es, LPCSTR text)
EDIT_EM_ReplaceSel(wnd, es, FALSE, "");
}
es->x_offset = 0;
es->flags |= EF_MODIFIED;
es->flags |= EF_UPDATE;
es->flags &= ~EF_MODIFIED;
es->flags &= ~EF_UPDATE;
EDIT_EM_SetSel(wnd, es, 0, 0, FALSE);
EDIT_EM_ScrollCaret(wnd, es);
}

View File

@ -54,8 +54,7 @@ LISTVIEW_SetImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
LISTVIEW_INFO *infoPtr = LISTVIEW_GetInfoPtr(wndPtr);
fprintf (stderr, "LISTVIEW: SetImageList (0x%08x 0x%08lx)\n",
wParam, lParam);
FIXME (listview, "(0x%08x 0x%08lx)\n", wParam, lParam);
return 0;
}

View File

@ -2907,14 +2907,14 @@ UINT32 WINAPI GetMenuState32( HMENU32 hMenu, UINT32 wItemID, UINT32 wFlags )
{
POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( item->hSubMenu );
if (!menu) return -1;
else return (menu->nItems << 8) | (menu->wFlags & 0xff);
else return (menu->nItems << 8) | ((item->fState|item->fType) & 0xff);
}
else
{
/* We used to (from way back then) mask the result to 0xff. */
/* I don't know why and it seems wrong as the documented */
/* return flag MF_SEPARATOR is outside that mask. */
return (item->fType | item->fState);
/* We used to (from way back then) mask the result to 0xff. */
/* I don't know why and it seems wrong as the documented */
/* return flag MF_SEPARATOR is outside that mask. */
return (item->fType | item->fState);
}
}

View File

@ -24,6 +24,152 @@
#define PAGER_GetInfoPtr(wndPtr) ((PAGER_INFO *)wndPtr->wExtra[0])
static __inline__ LRESULT
PAGER_GetBkColor (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
return (LRESULT)infoPtr->clrBk;
}
static __inline__ LRESULT
PAGER_GetBorder (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
return (LRESULT)infoPtr->iBorder;
}
static __inline__ LRESULT
PAGER_GetButtonSize (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
return (LRESULT)infoPtr->iButtonSize;
}
static __inline__ LRESULT
PAGER_SetBkColor (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
COLORREF clrTemp = infoPtr->clrBk;
infoPtr->clrBk = (COLORREF)lParam;
/* FIXME: redraw */
return (LRESULT)clrTemp;
}
static __inline__ LRESULT
PAGER_SetBorder (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
INT32 nTemp = infoPtr->iBorder;
infoPtr->iBorder = (INT32)lParam;
/* FIXME: redraw */
return (LRESULT)nTemp;
}
static __inline__ LRESULT
PAGER_SetButtonSize (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
INT32 nTemp = infoPtr->iButtonSize;
infoPtr->iButtonSize = (INT32)lParam;
/* FIXME: redraw */
return (LRESULT)nTemp;
}
static __inline__ LRESULT
PAGER_SetChild (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
infoPtr->hwndChild = (HWND32)lParam;
/* FIXME: redraw */
return 0;
}
static LRESULT
PAGER_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr;
/* allocate memory for info structure */
infoPtr = (PAGER_INFO *)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY,
sizeof(PAGER_INFO));
wndPtr->wExtra[0] = (DWORD)infoPtr;
if (infoPtr == NULL) {
ERR (treeview, "could not allocate info memory!\n");
return 0;
}
if ((PAGER_INFO*)wndPtr->wExtra[0] != infoPtr) {
ERR (pager, "pointer assignment error!\n");
return 0;
}
/* set default settings */
infoPtr->hwndChild = 0;
infoPtr->clrBk = GetSysColor32 (COLOR_BTNFACE);
infoPtr->iBorder = 0;
infoPtr->iButtonSize = 0;
return 0;
}
static LRESULT
PAGER_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
/* free tree view info data */
HeapFree (GetProcessHeap (), 0, infoPtr);
return 0;
}
static LRESULT
PAGER_EraseBackground (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
HBRUSH32 hBrush = CreateSolidBrush32 (infoPtr->clrBk);
RECT32 rect;
GetClientRect32 (wndPtr->hwndSelf, &rect);
FillRect32 ((HDC32)wParam, &rect, hBrush);
DeleteObject32 (hBrush);
return TRUE;
}
LRESULT WINAPI
PagerWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
{
@ -31,11 +177,44 @@ PagerWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
switch (uMsg)
{
// case WM_CREATE:
// return PAGER_Create (wndPtr, wParam, lParam);
// case PGM_FORWARDMOUSE:
// case WM_DESTROY:
// return PAGER_Destroy (wndPtr, wParam, lParam);
case PGM_GETBKCOLOR:
return PAGER_GetBkColor (wndPtr, wParam, lParam);
case PGM_GETBORDER:
return PAGER_GetBorder (wndPtr, wParam, lParam);
case PGM_GETBUTTONSIZE:
return PAGER_GetButtonSize (wndPtr, wParam, lParam);
// case PGM_GETBUTTONSTATE:
// case PGM_GETDROPTARGET:
// case PGM_GETPOS:
// case PGM_RECALCSIZE:
case PGM_SETBKCOLOR:
return PAGER_SetBkColor (wndPtr, wParam, lParam);
case PGM_SETBORDER:
return PAGER_SetBorder (wndPtr, wParam, lParam);
case PGM_SETBUTTONSIZE:
return PAGER_SetButtonSize (wndPtr, wParam, lParam);
case PGM_SETCHILD:
return PAGER_SetChild (wndPtr, wParam, lParam);
// case PGM_SETPOS:
case WM_CREATE:
return PAGER_Create (wndPtr, wParam, lParam);
case WM_DESTROY:
return PAGER_Destroy (wndPtr, wParam, lParam);
case WM_ERASEBKGND:
return PAGER_EraseBackground (wndPtr, wParam, lParam);
// case WM_MOUSEMOVE:
// return PAGER_MouseMove (wndPtr, wParam, lParam);

View File

@ -190,15 +190,15 @@ SW_Refresh( HWND32 hwnd, HDC32 hdc, STATUSWINDOWINFO *self )
}
static LRESULT
SW_GetBorders(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
__inline__ static LRESULT
SW_GetBorders (LPARAM lParam)
{
LPINT32 out;
LPINT32 out = (LPINT32) lParam;
out = (LPINT32) lParam;
out[0] = HORZ_BORDER; /* horizontal border width */
out[1] = VERT_BORDER; /* vertical border width */
out[2] = HORZ_GAP; /* width of border between rectangles */
return TRUE;
}
@ -766,7 +766,7 @@ StatusWindowProc (HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
switch (msg) {
case SB_GETBORDERS:
return SW_GetBorders(self, hwnd, wParam, lParam);
return SW_GetBorders (lParam);
case SB_GETICON:
return SW_GetIcon(self, hwnd, wParam, lParam);
case SB_GETPARTS:

View File

@ -325,6 +325,9 @@ TOOLBAR_InternalHitTest (WND *wndPtr, LPPOINT32 lpPt)
btnPtr = infoPtr->buttons;
for (i = 0; i < infoPtr->nNumButtons; i++, btnPtr++) {
if (btnPtr->fsState & TBSTATE_HIDDEN)
continue;
if (btnPtr->fsStyle & TBSTYLE_SEP) {
if (PtInRect32 (&btnPtr->rect, *lpPt)) {
TRACE (toolbar, " ON SEPARATOR %d!\n", i);
@ -611,37 +614,24 @@ TOOLBAR_AutoSize (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
FIXME (toolbar, "auto size!\n");
parent = GetParent32 (wndPtr->hwndSelf);
GetClientRect32(parent, &parent_rect);
parent = GetParent32 (wndPtr->hwndSelf);
GetClientRect32(parent, &parent_rect);
if (wndPtr->dwStyle & CCS_NORESIZE)
uPosFlags |= SWP_NOSIZE;
else {
infoPtr->nWidth = parent_rect.right - parent_rect.left;
TOOLBAR_CalcToolbar (wndPtr);
cy = infoPtr->nHeight;
cx = infoPtr->nWidth;
}
if (wndPtr->dwStyle & CCS_NORESIZE) {
uPosFlags |= SWP_NOSIZE;
cx = 0;
cy = 0;
}
else {
infoPtr->nWidth = parent_rect.right - parent_rect.left;
TOOLBAR_CalcToolbar (wndPtr);
cy = infoPtr->nHeight;
cx = infoPtr->nWidth;
}
if (wndPtr->dwStyle & CCS_NOPARENTALIGN) {
uPosFlags |= SWP_NOMOVE;
// if (wndPtr->dwStyle & (CCS_TOP | CCS_BOTTOM))
// cy = (INT32)HIWORD(lParam);
}
#if 0
if (wndPtr->dwStyle & CCS_NORESIZE) {
uPosFlags |= SWP_NOSIZE;
// cx = (INT32)LOWORD(lParam);
// cy = (INT32)HIWORD(lParam);
}
else {
/* FIXME: handle CCS_NOMOVEX and CCS_NOMOVEY */
if (wndPtr->dwStyle & CCS_NOPARENTALIGN)
uPosFlags |= SWP_NOMOVE;
}
infoPtr->nWidth = cx;
infoPtr->nHeight = cy;
#endif
if (!(wndPtr->dwStyle & CCS_NODIVIDER))
cy += 2;
@ -925,9 +915,35 @@ TOOLBAR_GetButtonText32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
// << TOOLBAR_GetButtonText32W >>
// << TOOLBAR_GetColorScheme >>
// << TOOLBAR_GetDisabledImageList >>
static LRESULT
TOOLBAR_GetDisabledImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
if (wndPtr->dwStyle & TBSTYLE_FLAT)
return (LRESULT)infoPtr->himlDis;
else
return 0;
}
// << TOOLBAR_GetExtendedStyle >>
// << TOOLBAR_GetHotImageList >>
static LRESULT
TOOLBAR_GetHotImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
if (wndPtr->dwStyle & TBSTYLE_FLAT)
return (LRESULT)infoPtr->himlHot;
else
return 0;
}
// << TOOLBAR_GetHotItem >>
@ -935,7 +951,11 @@ static LRESULT
TOOLBAR_GetImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
return (LRESULT)infoPtr->himlDef;
if (wndPtr->dwStyle & TBSTYLE_FLAT)
return (LRESULT)infoPtr->himlDef;
else
return 0;
}
@ -969,7 +989,18 @@ TOOLBAR_GetItemRect (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
}
// << TOOLBAR_GetMaxSize >>
static LRESULT
TOOLBAR_GetMaxSize (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
LPSIZE32 lpSize = (LPSIZE32)lParam;
return TRUE;
}
// << TOOLBAR_GetObject >>
// << TOOLBAR_GetPadding >>
// << TOOLBAR_GetRect >>
@ -1349,10 +1380,60 @@ TOOLBAR_SetCmdId (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
// << TOOLBAR_SetColorScheme >>
// << TOOLBAR_SetDisabledImageList >>
static LRESULT
TOOLBAR_SetDisabledImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
HIMAGELIST himlTemp;
if (!(wndPtr->dwStyle & TBSTYLE_FLAT))
return 0;
himlTemp = infoPtr->himlDis;
infoPtr->himlDis = (HIMAGELIST)lParam;
/* FIXME: redraw ? */
return (LRESULT)himlTemp;
}
// << TOOLBAR_SetDrawTextFlags >>
// << TOOLBAR_SetExtendedStyle >>
// << TOOLBAR_SetHotImageList >>
static LRESULT
TOOLBAR_SetExtendedStyle (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
DWORD dwTemp;
dwTemp = infoPtr->dwExStyle;
infoPtr->dwExStyle = (DWORD)lParam;
return (LRESULT)dwTemp;
}
static LRESULT
TOOLBAR_SetHotImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
HIMAGELIST himlTemp;
if (!(wndPtr->dwStyle & TBSTYLE_FLAT))
return 0;
himlTemp = infoPtr->himlHot;
infoPtr->himlHot = (HIMAGELIST)lParam;
/* FIXME: redraw ? */
return (LRESULT)himlTemp;
}
// << TOOLBAR_SetHotItem >>
@ -1362,6 +1443,9 @@ TOOLBAR_SetImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
HIMAGELIST himlTemp;
if (!(wndPtr->dwStyle & TBSTYLE_FLAT))
return 0;
himlTemp = infoPtr->himlDef;
infoPtr->himlDef = (HIMAGELIST)lParam;
@ -1526,6 +1610,14 @@ TOOLBAR_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
SystemParametersInfo32A (SPI_GETICONTITLELOGFONT, 0, &logFont, 0);
infoPtr->hFont = CreateFontIndirect32A (&logFont);
if (wndPtr->dwStyle & TBSTYLE_TOOLTIPS) {
/* Create tooltip control */
// infoPtr->hwndToolTip = CreateWindowEx32A (....);
/* Send NM_TOOLTIPSCREATED notification */
}
return 0;
}
@ -1535,7 +1627,7 @@ TOOLBAR_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
/* delete tool tip */
/* delete tooltip control */
if (infoPtr->hwndToolTip)
DestroyWindow32 (infoPtr->hwndToolTip);
@ -1871,6 +1963,7 @@ TOOLBAR_Size (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
INT32 flags;
UINT32 uPosFlags = 0;
/* Resize deadlock check */
if (infoPtr->bAutoSize) {
infoPtr->bAutoSize = FALSE;
return 0;
@ -1889,8 +1982,17 @@ TOOLBAR_Size (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
parent = GetParent32 (wndPtr->hwndSelf);
GetClientRect32(parent, &parent_rect);
if (wndPtr->dwStyle & CCS_NORESIZE)
if (wndPtr->dwStyle & CCS_NORESIZE) {
uPosFlags |= SWP_NOSIZE;
/* FIXME */
// infoPtr->nWidth = parent_rect.right - parent_rect.left;
cy = infoPtr->nHeight;
cx = infoPtr->nWidth;
TOOLBAR_CalcToolbar (wndPtr);
infoPtr->nWidth = cx;
infoPtr->nHeight = cy;
}
else {
infoPtr->nWidth = parent_rect.right - parent_rect.left;
TOOLBAR_CalcToolbar (wndPtr);
@ -1900,23 +2002,10 @@ TOOLBAR_Size (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
if (wndPtr->dwStyle & CCS_NOPARENTALIGN) {
uPosFlags |= SWP_NOMOVE;
// if (wndPtr->dwStyle & (CCS_TOP | CCS_BOTTOM))
// cy = (INT32)HIWORD(lParam);
}
#if 0
if (wndPtr->dwStyle & CCS_NORESIZE) {
uPosFlags |= SWP_NOSIZE;
// cx = (INT32)LOWORD(lParam);
// cy = (INT32)HIWORD(lParam);
}
else {
/* FIXME: handle CCS_NOMOVEX and CCS_NOMOVEY */
cy = infoPtr->nHeight;
cx = infoPtr->nWidth;
}
infoPtr->nWidth = cx;
infoPtr->nHeight = cy;
#endif
if (!(wndPtr->dwStyle & CCS_NODIVIDER))
cy += 2;
@ -2000,9 +2089,15 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
// case TB_GETBUTTONTEXT32W:
// case TB_GETCOLORSCHEME: /* 4.71 */
// case TB_GETDISABLEDIMAGELIST: /* 4.70 */
case TB_GETDISABLEDIMAGELIST:
return TOOLBAR_GetDisabledImageList (wndPtr, wParam, lParam);
// case TB_GETEXTENDEDSTYLE: /* 4.71 */
// case TB_GETHOTIMAGELIST: /* 4.70 */
case TB_GETHOTIMAGELIST:
return TOOLBAR_GetHotImageList (wndPtr, wParam, lParam);
// case TB_GETHOTITEM: /* 4.71 */
case TB_GETIMAGELIST:
@ -2014,7 +2109,9 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
case TB_GETITEMRECT:
return TOOLBAR_GetItemRect (wndPtr, wParam, lParam);
// case TB_GETMAXSIZE: /* 4.71 */
case TB_GETMAXSIZE:
return TOOLBAR_GetMaxSize (wndPtr, wParam, lParam);
// case TB_GETOBJECT: /* 4.71 */
// case TB_GETPADDING: /* 4.71 */
// case TB_GETRECT: /* 4.70 */
@ -2099,10 +2196,18 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
return TOOLBAR_SetCmdId (wndPtr, wParam, lParam);
// case TB_SETCOLORSCHEME: /* 4.71 */
// case TB_SETDISABLEDIMAGELIST: /* 4.70 */
case TB_SETDISABLEDIMAGELIST:
return TOOLBAR_SetDisabledImageList (wndPtr, wParam, lParam);
// case TB_SETDRAWTEXTFLAGS: /* 4.71 */
// case TB_SETEXTENDEDSTYLE: /* 4.71 */
// case TB_SETHOTIMAGELIST: /* 4.70 */
case TB_SETEXTENDEDSTYLE:
return TOOLBAR_SetExtendedStyle (wndPtr, wParam, lParam);
case TB_SETHOTIMAGELIST:
return TOOLBAR_SetHotImageList (wndPtr, wParam, lParam);
// case TB_SETHOTITEM: /* 4.71 */
case TB_SETIMAGELIST:
@ -2137,6 +2242,7 @@ ToolbarWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
case TB_SETUNICODEFORMAT:
return TOOLBAR_SetUnicodeFormat (wndPtr, wParam, lParam);
case WM_CREATE:
return TOOLBAR_Create (wndPtr, wParam, lParam);

View File

@ -3,15 +3,8 @@
*
* Copyright 1998 Eric Kohl
*
* NOTES
* PLEASE don't try to improve or change this code right now. Many
* features are still missing, but I'm working on it. I want to avoid
* any confusion. This note will be removed as soon as most of the
* features are implemented.
* Eric <ekohl@abo.rhein-zeitung.de>
*
* TODO:
* - Most messages.
* - Some messages.
* - All notifications.
*
* Testing:
@ -20,8 +13,8 @@
* - additional features.
*
* FIXME:
* - DelTool32A incomplete.
* - GetCurrentTool32A incomplete.
* - Display code.
* - Missing Unicode support.
*/
#include "windows.h"
@ -32,11 +25,118 @@
#include "debug.h"
#define ID_TIMER1 1
#define ID_TIMER2 2
#define TOOLTIPS_GetInfoPtr(wndPtr) ((TOOLTIPS_INFO *)wndPtr->wExtra[0])
static VOID
TOOLTIPS_Refresh (WND *wndPtr, HDC32 hdc)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
RECT32 rc;
INT32 oldBkMode;
HFONT32 hOldFont;
GetClientRect32 (wndPtr->hwndSelf, &rc);
oldBkMode = SetBkMode32 (hdc, TRANSPARENT);
SetTextColor32 (hdc, infoPtr->clrText);
hOldFont = SelectObject32 (hdc, infoPtr->hFont);
DrawText32A (hdc, infoPtr->szTipText, -1, &rc, DT_EXTERNALLEADING);
SelectObject32 (hdc, hOldFont);
if (oldBkMode != TRANSPARENT)
SetBkMode32 (hdc, oldBkMode);
}
static VOID
TOOLTIPS_GetTipText (WND *wndPtr, TOOLTIPS_INFO *infoPtr)
{
TTTOOL_INFO *toolPtr = &infoPtr->tools[infoPtr->nCurrentTool];
if (toolPtr->hinst) {
LoadString32A (toolPtr->hinst, (UINT32)toolPtr->lpszText,
infoPtr->szTipText, INFOTIPSIZE);
}
else if (toolPtr->lpszText) {
if (toolPtr->lpszText == LPSTR_TEXTCALLBACK32A) {
NMTTDISPINFOA ttnmdi;
/* fill NMHDR struct */
ttnmdi.hdr.hwndFrom = wndPtr->hwndSelf;
ttnmdi.hdr.idFrom = infoPtr->nCurrentTool;
ttnmdi.hdr.code = TTN_GETDISPINFOA;
SendMessage32A (GetParent32 (wndPtr->hwndSelf), WM_NOTIFY,
(WPARAM32)wndPtr->wIDmenu, (LPARAM)&ttnmdi);
/* FIXME: partial */
lstrcpyn32A (infoPtr->szTipText, ttnmdi.szText, INFOTIPSIZE);
}
else
lstrcpyn32A (infoPtr->szTipText, toolPtr->lpszText, INFOTIPSIZE);
}
}
static VOID
TOOLTIPS_CalcTipSize (WND *wndPtr, TOOLTIPS_INFO *infoPtr, LPSIZE32 lpSize)
{
HDC32 hdc;
HFONT32 hOldFont;
RECT32 rc;
hdc = GetDC32 (wndPtr->hwndSelf);
hOldFont = SelectObject32 (hdc, infoPtr->hFont);
DrawText32A (hdc, infoPtr->szTipText, -1, &rc, DT_EXTERNALLEADING | DT_CALCRECT);
SelectObject32 (hdc, hOldFont);
ReleaseDC32 (hdc, wndPtr->hwndSelf);
lpSize->cx = rc.right - rc.left + 4;
lpSize->cy = rc.bottom - rc.top + 4;
}
static VOID
TOOLTIPS_Show (WND *wndPtr, TOOLTIPS_INFO *infoPtr)
{
POINT32 pt;
SIZE32 size;
infoPtr->nCurrentTool = infoPtr->nTool;
FIXME (tooltips, "Show tooltip %d!\n", infoPtr->nCurrentTool);
GetCursorPos32 (&pt);
TOOLTIPS_GetTipText (wndPtr, infoPtr);
TRACE (tooltips, "\"%s\"\n", infoPtr->szTipText);
TOOLTIPS_CalcTipSize (wndPtr, infoPtr, &size);
SetWindowPos32 (wndPtr->hwndSelf, HWND_TOP, pt.x, pt.y + 20,
size.cx, size.cy, SWP_SHOWWINDOW);
SetTimer32 (wndPtr->hwndSelf, ID_TIMER2, infoPtr->nAutoPopTime, 0);
}
static VOID
TOOLTIPS_Hide (WND *wndPtr, TOOLTIPS_INFO *infoPtr)
{
if (infoPtr->nCurrentTool == -1)
return;
FIXME (tooltips, "Hide tooltip %d!\n", infoPtr->nCurrentTool);
KillTimer32 (wndPtr->hwndSelf, ID_TIMER2);
infoPtr->nCurrentTool = -1;
SetWindowPos32 (wndPtr->hwndSelf, HWND_TOP, 0, 0, 0, 0, SWP_HIDEWINDOW);
}
static INT32
TOOLTIPS_GetIndexFromInfoA (TOOLTIPS_INFO *infoPtr, LPTOOLINFOA lpToolInfo)
TOOLTIPS_GetIndexFromInfoA (TOOLTIPS_INFO *infoPtr, LPTTTOOLINFOA lpToolInfo)
{
TTTOOL_INFO *toolPtr;
INT32 nIndex;
@ -52,28 +152,32 @@ TOOLTIPS_GetIndexFromInfoA (TOOLTIPS_INFO *infoPtr, LPTOOLINFOA lpToolInfo)
return -1;
}
/*
static INT32
TOOLTIPS_GetIndexFromPoint (TOOLTIPS_INFO *infoPtr, LPPOINT32 lpPt)
TOOLTIPS_GetIndexFromPoint (TOOLTIPS_INFO *infoPtr, HWND32 hwnd, LPPOINT32 lpPt)
{
TTTOOL_INFO *toolPtr;
INT32 nIndex;
INT32 nIndex;
for (nIndex = 0; nIndex < infoPtr->uNumTools; nIndex++) {
toolPtr = &infoPtr->tools[nIndex];
if (lpToolInfo->uFlags & TTF_IDISHWND) {
if (PtInRect (
if (toolPtr->uFlags & TTF_IDISHWND) {
if ((HWND32)toolPtr->uId == hwnd)
return nIndex;
}
else {
if (hwnd != toolPtr->hwnd)
continue;
if (!PtInRect32 (&toolPtr->rect, *lpPt))
continue;
return nIndex;
}
}
return -1;
}
*/
static LRESULT
TOOLTIPS_Activate (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
@ -97,7 +201,7 @@ static LRESULT
TOOLTIPS_AddTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam;
LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
TTTOOL_INFO *toolPtr;
if (lpToolInfo == NULL) return FALSE;
@ -142,10 +246,9 @@ TOOLTIPS_AddTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
}
}
if (lpToolInfo->cbSize >= sizeof(TOOLINFOA))
if (lpToolInfo->cbSize >= sizeof(TTTOOLINFOA))
toolPtr->lParam = lpToolInfo->lParam;
return TRUE;
}
@ -157,7 +260,7 @@ static LRESULT
TOOLTIPS_DelTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam;
LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
TTTOOL_INFO *toolPtr;
INT32 nIndex;
@ -169,19 +272,37 @@ TOOLTIPS_DelTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
TRACE (tooltips, "index=%d\n", nIndex);
/* delete tool from tool list */
/*
/* delete text string */
toolPtr = &infoPtr->tools[nIndex];
// delete text string
if ((toolPtr->hinst) && (toolPtr->lpszText)) {
if (toolPtr->lpszText != LPSTR_TEXTCALLBACK32A)
HeapFree (GetProcessHeap (), 0, toolPtr->lpszText);
}
/* delete tool from tool list */
if (infoPtr->uNumTools == 1) {
HeapFree (GetProcessHeap (), 0, infoPtr->tools);
infoPtr->tools = NULL;
}
else {
TTTOOL_INFO *oldTools = infoPtr->tools;
infoPtr->tools =
HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY,
sizeof(TTTOOL_INFO) * (infoPtr->uNumTools - 1));
if (nIndex > 0)
memcpy (&infoPtr->tools[0], &oldTools[0],
nIndex * sizeof(TTTOOL_INFO));
if (nIndex < infoPtr->uNumTools - 1)
memcpy (&infoPtr->tools[nIndex], &oldTools[nIndex + 1],
(infoPtr->uNumTools - nIndex - 1) * sizeof(TTTOOL_INFO));
HeapFree (GetProcessHeap (), 0, oldTools);
}
infoPtr->uNumTools--;
*/
return 0;
}
@ -194,7 +315,7 @@ TOOLTIPS_EnumTools32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
UINT32 uIndex = (UINT32)wParam;
LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam;
LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
TTTOOL_INFO *toolPtr;
if (uIndex >= infoPtr->uNumTools) return FALSE;
@ -212,7 +333,7 @@ TOOLTIPS_EnumTools32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
lpToolInfo->hinst = toolPtr->hinst;
lpToolInfo->lpszText = toolPtr->lpszText;
if (lpToolInfo->cbSize >= sizeof(TOOLINFOA))
if (lpToolInfo->cbSize >= sizeof(TTTOOLINFOA))
lpToolInfo->lParam = toolPtr->lParam;
return TRUE;
@ -226,11 +347,21 @@ static LRESULT
TOOLTIPS_GetCurrentTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPTOOLINFOA lpti = (LPTOOLINFOA)lParam;
LPTTTOOLINFOA lpti = (LPTTTOOLINFOA)lParam;
TTTOOL_INFO *toolPtr;
if (lpti) {
if (infoPtr->iCurrentTool > -1) {
/* FIXME */
if (infoPtr->nCurrentTool > -1) {
toolPtr = &infoPtr->tools[infoPtr->nCurrentTool];
/* copy tool data */
lpti->uFlags = toolPtr->uFlags;
lpti->rect = toolPtr->rect;
lpti->hinst = toolPtr->hinst;
lpti->lpszText = toolPtr->lpszText;
if (lpti->cbSize >= sizeof(TTTOOLINFOA))
lpti->lParam = toolPtr->lParam;
return TRUE;
}
@ -238,15 +369,51 @@ TOOLTIPS_GetCurrentTool32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
return FALSE;
}
else
return (infoPtr->iCurrentTool != -1);
return (infoPtr->nCurrentTool != -1);
return FALSE;
}
// << TOOLTIPS_GetCurrentTool32W >>
// << TOOLTIPS_GetDelayTime >>
// << TOOLTIPS_GetMargin >>
static LRESULT
TOOLTIPS_GetDelayTime (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
switch (wParam) {
case TTDT_AUTOMATIC:
return infoPtr->nAutomaticTime;
case TTDT_RESHOW:
return infoPtr->nReshowTime;
case TTDT_AUTOPOP:
return infoPtr->nAutoPopTime;
case TTDT_INITIAL:
return infoPtr->nInitialTime;
}
return 0;
}
static LRESULT
TOOLTIPS_GetMargin (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPRECT32 lpRect = (LPRECT32)lParam;
lpRect->left = infoPtr->rcMargin.left;
lpRect->right = infoPtr->rcMargin.right;
lpRect->bottom = infoPtr->rcMargin.bottom;
lpRect->top = infoPtr->rcMargin.top;
return 0;
}
static LRESULT
@ -254,7 +421,7 @@ TOOLTIPS_GetMaxTipWidth (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
return infoPtr->iMaxTipWidth;
return infoPtr->nMaxTipWidth;
}
@ -262,11 +429,11 @@ static LRESULT
TOOLTIPS_GetText32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPTOOLINFOA lpti = (LPTOOLINFOA)lParam;
LPTTTOOLINFOA lpti = (LPTTTOOLINFOA)lParam;
INT32 nIndex;
if (!(lpti)) return 0;
if (lpti->cbSize < sizeof(TOOLINFOA)) return 0;
if (lpti->cbSize < sizeof(TTTOOLINFOA)) return 0;
nIndex = TOOLTIPS_GetIndexFromInfoA (infoPtr, lpti);
if (nIndex == -1) return 0;
@ -308,7 +475,7 @@ static LRESULT
TOOLTIPS_GetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam;
LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
TTTOOL_INFO *toolPtr;
INT32 nIndex;
@ -328,7 +495,7 @@ TOOLTIPS_GetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
lpToolInfo->hinst = toolPtr->hinst;
lpToolInfo->lpszText = toolPtr->lpszText;
if (lpToolInfo->cbSize >= sizeof(TOOLINFOA))
if (lpToolInfo->cbSize >= sizeof(TTTOOLINFOA))
lpToolInfo->lParam = toolPtr->lParam;
return TRUE;
@ -336,7 +503,40 @@ TOOLTIPS_GetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
// << TOOLTIPS_GetToolInfo32W >>
// << TOOLTIPS_HitTest32A >>
static LRESULT
TOOLTIPS_HitTest32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPTTHITTESTINFOA lptthit = (LPTTHITTESTINFOA)lParam;
TTTOOL_INFO *toolPtr;
INT32 nTool;
if (lptthit == 0)
return FALSE;
nTool = TOOLTIPS_GetIndexFromPoint (infoPtr, lptthit->hwnd, &lptthit->pt);
if (nTool == -1)
return FALSE;
TRACE (tooltips, "nTool = %d!\n", nTool);
/* copy tool data */
toolPtr = &infoPtr->tools[nTool];
lptthit->ti.cbSize = sizeof(TTTOOLINFOA);
lptthit->ti.uFlags = toolPtr->uFlags;
lptthit->ti.hwnd = toolPtr->hwnd;
lptthit->ti.uId = toolPtr->uId;
lptthit->ti.rect = toolPtr->rect;
lptthit->ti.hinst = toolPtr->hinst;
lptthit->ti.lpszText = toolPtr->lpszText;
lptthit->ti.lParam = toolPtr->lParam;
return TRUE;
}
// << TOOLTIPS_HitTest32W >>
@ -344,11 +544,11 @@ static LRESULT
TOOLTIPS_NewToolRect32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPTOOLINFOA lpti = (LPTOOLINFOA)lParam;
LPTTTOOLINFOA lpti = (LPTTTOOLINFOA)lParam;
INT32 nIndex;
if (!(lpti)) return 0;
if (lpti->cbSize < sizeof(TOOLINFOA)) return 0;
if (lpti->cbSize < sizeof(TTTOOLINFOA)) return 0;
nIndex = TOOLTIPS_GetIndexFromInfoA (infoPtr, lpti);
if (nIndex == -1) return 0;
@ -360,40 +560,126 @@ TOOLTIPS_NewToolRect32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
// << TOOLTIPS_NewToolRect32W >>
// << TOOLTIPS_Pop >>
static LRESULT
TOOLTIPS_Pop (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
TOOLTIPS_Hide (wndPtr, infoPtr);
return 0;
}
static LRESULT
TOOLTIPS_RelayEvent (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPMSG16 lpMsg = (LPMSG16)lParam;
LPMSG32 lpMsg = (LPMSG32)lParam;
POINT32 pt;
if (lpMsg == NULL) return 0;
if (lpMsg->message == WM_MOUSEMOVE) {
FIXME (tooltips, "WM_MOUSEMOVE (%d %d)\n", lpMsg->pt.x, lpMsg->pt.y);
if (lpMsg == NULL) {
WARN (tooltips, "lpMsg == NULL!\n");
return 0;
}
// FIXME (tooltips, "empty stub!\n");
pt = lpMsg->pt;
ScreenToClient32 (lpMsg->hwnd, &pt);
infoPtr->nOldTool = infoPtr->nTool;
infoPtr->nTool = TOOLTIPS_GetIndexFromPoint (infoPtr, lpMsg->hwnd, &pt);
TRACE (tooltips, "nTool = %d\n", infoPtr->nTool);
switch (lpMsg->message) {
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MBUTTONDOWN:
case WM_MBUTTONUP:
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
TOOLTIPS_Hide (wndPtr, infoPtr);
break;
case WM_MOUSEMOVE:
TRACE (tooltips, "WM_MOUSEMOVE (%d %d)\n", pt.x, pt.y);
if (infoPtr->nTool != infoPtr->nOldTool) {
if (infoPtr->nOldTool == -1)
SetTimer32 (wndPtr->hwndSelf, ID_TIMER1, infoPtr->nInitialTime, 0);
else
TOOLTIPS_Hide (wndPtr, infoPtr);
SetTimer32 (wndPtr->hwndSelf, ID_TIMER1, infoPtr->nReshowTime, 0);
}
break;
}
return 0;
}
// << TOOLTIPS_SetDelayTime >>
// << TOOLTIPS_SetMargin >>
static LRESULT
TOOLTIPS_SetDelayTime (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
INT32 nTime = (INT32)LOWORD(lParam);
switch (wParam) {
case TTDT_AUTOMATIC:
if (nTime == 0) {
infoPtr->nAutomaticTime = 500;
infoPtr->nReshowTime = 100;
infoPtr->nAutoPopTime = 5000;
infoPtr->nInitialTime = 500;
}
else {
infoPtr->nAutomaticTime = nTime;
infoPtr->nReshowTime = nTime / 5;
infoPtr->nAutoPopTime = nTime * 10;
infoPtr->nInitialTime = nTime;
}
break;
case TTDT_RESHOW:
infoPtr->nReshowTime = nTime;
break;
case TTDT_AUTOPOP:
infoPtr->nAutoPopTime = nTime;
break;
case TTDT_INITIAL:
infoPtr->nInitialTime = nTime;
break;
}
return 0;
}
static LRESULT
TOOLTIPS_SetMargin (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPRECT32 lpRect = (LPRECT32)lParam;
infoPtr->rcMargin.left = lpRect->left;
infoPtr->rcMargin.right = lpRect->right;
infoPtr->rcMargin.bottom = lpRect->bottom;
infoPtr->rcMargin.top = lpRect->top;
return 0;
}
static LRESULT
TOOLTIPS_SetMaxTipWidth (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
INT32 iTemp = infoPtr->iMaxTipWidth;
INT32 nTemp = infoPtr->nMaxTipWidth;
infoPtr->iMaxTipWidth = (INT32)lParam;
infoPtr->nMaxTipWidth = (INT32)lParam;
return iTemp;
return nTemp;
}
@ -423,7 +709,7 @@ static LRESULT
TOOLTIPS_SetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
LPTOOLINFOA lpToolInfo = (LPTOOLINFOA)lParam;
LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
TTTOOL_INFO *toolPtr;
INT32 nIndex;
@ -432,7 +718,7 @@ TOOLTIPS_SetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
nIndex = TOOLTIPS_GetIndexFromInfoA (infoPtr, lpToolInfo);
if (nIndex == -1) return 0;
TRACE (tooltips, "index=%d\n", nIndex);
TRACE (tooltips, "nIndex=%d\n", nIndex);
toolPtr = &infoPtr->tools[nIndex];
@ -443,7 +729,10 @@ TOOLTIPS_SetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
toolPtr->rect = lpToolInfo->rect;
toolPtr->hinst = lpToolInfo->hinst;
if (lpToolInfo->lpszText) {
if (lpToolInfo->hinst) {
toolPtr->lpszText = lpToolInfo->lpszText;
}
else if (lpToolInfo->lpszText) {
if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACK32A)
toolPtr->lpszText = lpToolInfo->lpszText;
else {
@ -455,7 +744,7 @@ TOOLTIPS_SetToolInfo32A (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
}
}
if (lpToolInfo->cbSize >= sizeof(TOOLINFOA))
if (lpToolInfo->cbSize >= sizeof(TTTOOLINFOA))
toolPtr->lParam = lpToolInfo->lParam;
return 0;
@ -475,6 +764,7 @@ static LRESULT
TOOLTIPS_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr;
LOGFONT32A logFont;
/* allocate memory for info structure */
infoPtr = (TOOLTIPS_INFO *)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY,
@ -490,9 +780,19 @@ TOOLTIPS_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
infoPtr->bActive = TRUE;
infoPtr->clrBk = GetSysColor32 (COLOR_INFOBK);
infoPtr->clrText = GetSysColor32 (COLOR_INFOTEXT);
infoPtr->hFont = NULL;
infoPtr->iMaxTipWidth = -1;
infoPtr->iCurrentTool = -1;
SystemParametersInfo32A( SPI_GETICONTITLELOGFONT, 0, &logFont, 0 );
infoPtr->hFont = CreateFontIndirect32A( &logFont );
infoPtr->nMaxTipWidth = -1;
infoPtr->nTool = -1;
infoPtr->nOldTool = -1;
infoPtr->nCurrentTool = -1;
infoPtr->nAutomaticTime = 500;
infoPtr->nReshowTime = 100;
infoPtr->nAutoPopTime = 5000;
infoPtr->nInitialTime = 500;
return 0;
}
@ -523,6 +823,22 @@ TOOLTIPS_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
}
static LRESULT
TOOLTIPS_EraseBackground (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
RECT32 rect;
HBRUSH32 hBrush;
hBrush = CreateSolidBrush32 (infoPtr->clrBk);
GetClientRect32 (wndPtr->hwndSelf, &rect);
FillRect32 ((HDC32)wParam, &rect, hBrush);
DeleteObject32 (hBrush);
return FALSE;
}
static LRESULT
TOOLTIPS_GetFont (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
@ -532,8 +848,39 @@ TOOLTIPS_GetFont (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
}
// << TOOLTIPS_MouseMove >>
// << TOOLTIPS_Paint >>
static LRESULT
TOOLTIPS_MouseMove (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
TOOLTIPS_Hide (wndPtr, infoPtr);
return 0;
}
static LRESULT
TOOLTIPS_NcCreate (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
wndPtr->dwStyle &= 0x0000FFFF;
wndPtr->dwStyle |= (WS_POPUP | WS_BORDER);
return TRUE;
}
static LRESULT
TOOLTIPS_Paint (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
HDC32 hdc;
PAINTSTRUCT32 ps;
hdc = wParam==0 ? BeginPaint32 (wndPtr->hwndSelf, &ps) : (HDC32)wParam;
TOOLTIPS_Refresh (wndPtr, hdc);
if (!wParam)
EndPaint32 (wndPtr->hwndSelf, &ps);
return 0;
}
static LRESULT
@ -552,7 +899,26 @@ TOOLTIPS_SetFont (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
}
// << TOOLTIPS_Timer >>
static LRESULT
TOOLTIPS_Timer (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
switch (wParam)
{
case ID_TIMER1:
KillTimer32 (wndPtr->hwndSelf, ID_TIMER1);
TOOLTIPS_Show (wndPtr, infoPtr);
break;
case ID_TIMER2:
TOOLTIPS_Hide (wndPtr, infoPtr);
break;
}
return 0;
}
// << TOOLTIPS_WinIniChange >>
@ -585,8 +951,12 @@ ToolTipsWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
return TOOLTIPS_GetCurrentTool32A (wndPtr, wParam, lParam);
// case TTM_GETCURRENTTOOL32W:
// case TTM_GETDELAYTIME: /* 4.70 */
// case TTM_GETMARGIN: /* 4.70 */
case TTM_GETDELAYTIME:
return TOOLTIPS_GetDelayTime (wndPtr, wParam, lParam);
case TTM_GETMARGIN:
return TOOLTIPS_GetMargin (wndPtr, wParam, lParam);
case TTM_GETMAXTIPWIDTH:
return TOOLTIPS_GetMaxTipWidth (wndPtr, wParam, lParam);
@ -609,20 +979,28 @@ ToolTipsWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
return TOOLTIPS_GetToolInfo32A (wndPtr, wParam, lParam);
// case TTM_GETTOOLINFO32W:
// case TTM_HITTEST32A:
case TTM_HITTEST32A:
return TOOLTIPS_HitTest32A (wndPtr, wParam, lParam);
// case TTM_HITTEST32W:
case TTM_NEWTOOLRECT32A:
return TOOLTIPS_NewToolRect32A (wndPtr, wParam, lParam);
// case TTM_NEWTOOLRECT32W:
// case TTM_POP: /* 4.70 */
case TTM_POP:
return TOOLTIPS_Pop (wndPtr, wParam, lParam);
case TTM_RELAYEVENT:
return TOOLTIPS_RelayEvent (wndPtr, wParam, lParam);
// case TTM_SETDELAYTIME: /* 4.70 */
// case TTM_SETMARGIN: /* 4.70 */
case TTM_SETDELAYTIME:
return TOOLTIPS_SetDelayTime (wndPtr, wParam, lParam);
case TTM_SETMARGIN:
return TOOLTIPS_SetMargin (wndPtr, wParam, lParam);
case TTM_SETMAXTIPWIDTH:
return TOOLTIPS_SetMaxTipWidth (wndPtr, wParam, lParam);
@ -651,19 +1029,26 @@ ToolTipsWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
case WM_DESTROY:
return TOOLTIPS_Destroy (wndPtr, wParam, lParam);
case WM_ERASEBKGND:
return TOOLTIPS_EraseBackground (wndPtr, wParam, lParam);
case WM_GETFONT:
return TOOLTIPS_GetFont (wndPtr, wParam, lParam);
// case WM_MOUSEMOVE:
// return TOOLTIPS_MouseMove (wndPtr, wParam, lParam);
case WM_MOUSEMOVE:
return TOOLTIPS_MouseMove (wndPtr, wParam, lParam);
// case WM_PAINT:
// return TOOLTIPS_Paint (wndPtr, wParam);
case WM_NCCREATE:
return TOOLTIPS_NcCreate (wndPtr, wParam, lParam);
case WM_PAINT:
return TOOLTIPS_Paint (wndPtr, wParam, lParam);
case WM_SETFONT:
return TOOLTIPS_SetFont (wndPtr, wParam, lParam);
// case WM_TIMER:
case WM_TIMER:
return TOOLTIPS_Timer (wndPtr, wParam, lParam);
// case WM_WININICHANGE:

View File

@ -24,6 +24,90 @@
#define TREEVIEW_GetInfoPtr(wndPtr) ((TREEVIEW_INFO *)wndPtr->wExtra[0])
static LRESULT
TREEVIEW_SetImageList (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(wndPtr);
HIMAGELIST himlTemp;
if ((INT32)wParam == TVSIL_NORMAL) {
himlTemp = infoPtr->himlNormal;
infoPtr->himlNormal = (HIMAGELIST)lParam;
}
else if ((INT32)wParam == TVSIL_STATE) {
himlTemp = infoPtr->himlState;
infoPtr->himlState = (HIMAGELIST)lParam;
}
else
return NULL;
return (LRESULT)himlTemp;
}
static LRESULT
TREEVIEW_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TREEVIEW_INFO *infoPtr;
/* allocate memory for info structure */
infoPtr = (TREEVIEW_INFO *)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY,
sizeof(TREEVIEW_INFO));
wndPtr->wExtra[0] = (DWORD)infoPtr;
if (infoPtr == NULL) {
ERR (treeview, "could not allocate info memory!\n");
return 0;
}
if ((TREEVIEW_INFO*)wndPtr->wExtra[0] != infoPtr) {
ERR (treeview, "pointer assignment error!\n");
return 0;
}
/* set default settings */
infoPtr->clrBk = GetSysColor32 (COLOR_WINDOW);
infoPtr->clrText = GetSysColor32 (COLOR_BTNTEXT);
infoPtr->himlNormal = NULL;
infoPtr->himlState = NULL;
return 0;
}
static LRESULT
TREEVIEW_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(wndPtr);
/* free tree view info data */
HeapFree (GetProcessHeap (), 0, infoPtr);
return 0;
}
static LRESULT
TREEVIEW_EraseBackground (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(wndPtr);
HBRUSH32 hBrush = CreateSolidBrush32 (infoPtr->clrBk);
RECT32 rect;
GetClientRect32 (wndPtr->hwndSelf, &rect);
FillRect32 ((HDC32)wParam, &rect, hBrush);
DeleteObject32 (hBrush);
return TRUE;
}
LRESULT WINAPI
TreeviewWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
{
@ -31,11 +115,32 @@ TreeviewWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
switch (uMsg)
{
// case WM_CREATE:
// return TREEVIEW_Create (wndPtr, wParam, lParam);
// case WM_DESTROY:
// return TREEVIEW_Destroy (wndPtr, wParam, lParam);
// case TVM_GETIMAGELIST:
// return TREEVIEW_GetImageList (wndPtr, wParam, lParam);
case TVM_SETIMAGELIST:
return TREEVIEW_SetImageList (wndPtr, wParam, lParam);
case WM_CREATE:
return TREEVIEW_Create (wndPtr, wParam, lParam);
case WM_DESTROY:
return TREEVIEW_Destroy (wndPtr, wParam, lParam);
// case EM_ENABLE:
case WM_ERASEBKGND:
return TREEVIEW_EraseBackground (wndPtr, wParam, lParam);
case WM_GETDLGCODE:
return DLGC_WANTARROWS | DLGC_WANTCHARS;
// case WM_PAINT:
// return TREEVIEW_Paint (wndPtr, wParam);
@ -44,7 +149,7 @@ TreeviewWindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
// case WM_TIMER:
// case WM_WININICHANGE:
// case WM_VSCROLL:
default:
if (uMsg >= WM_USER)

View File

@ -474,7 +474,6 @@ static void DEBUG_Main( int signal )
/* Put the display in a correct state */
XUngrabPointer( display, CurrentTime );
XUngrabServer( display );
XFlush( display );

View File

@ -22,12 +22,6 @@ unsigned char ldt_flags_copy[LDT_SIZE];
Display * display;
int
XUngrabPointer( Display * d, Time t)
{
return(0);
}
int
XUngrabServer( Display * d )
{

View File

@ -12,19 +12,23 @@ Wine Reference Manual
Texinfo source for preliminary comprehensive documentation is in
this directory. Use 'make info' in this directory to generate the GNU
info version, 'make dvi' to generate the DVI version (hit 'r' to
ignore errors), or 'make all' for both. It is no longer installed by
ignore errors), or 'make all' for both. It is not installed by
default.
Wine API documentation
Do a 'make manpages' in the Wine toplevel directory to generate the
API manpages from the Wine source, or 'make man' in any source
subdirectory to generate manpages from only that directory. The
manpages will be deposited in [documentation/man3w]. You will need
c2man, available as source from http://www.debian.org/ and other
places. Apply the patch included at the end of this file for improved
terse description formatting. The man pages are not installed
automatically.
subdirectory to generate manpages from only that directory. Only
functions mentioned in Wine spec files will be documented; the
specific .spec files checked are set by the MANSPECS variable in
Make.rules. The manpages will be generated into
[documentation/man3w]. For HTML formatted manpages, do 'make
htmlpages' from the toplevel, or 'make html' from any
subdirectory. HTML formatted pages are generated into
[documentation/html]. You will need c2man as modified for Wine,
available as source or binary from ftp://ftp.winehq.com/pub/wine/.
The man pages are not installed by 'make install'.
Other READMEs
@ -43,80 +47,59 @@ To improve the documentation of the Wine API, just add comments to the
existing source. For example,
/******************************************************************
* PlayMetaFile32 (GDI32.265) Render metafile to device
* CopyMetaFile32A (GDI32.23)
*
* The metafile is rendered in the device context specified by hdc.
* Copies the metafile corresponding to hSrcMetaFile to either
* a disk file, if a filename is given, or to a new memory based
* metafile, if lpFileName is NULL.
*
* RETURNS
* RETURNS
*
* Always returns TRUE.
* Handle to metafile copy on success, NULL on failure.
*
* FIXME
* Wine metafiles are not 100% binary compatible with Microsoft Windows
* metafiles.
* BUGS
*
* Copying to disk returns NULL even if successful.
*/
BOOL32 WINAPI PlayMetaFile32(
HDC32 hdc, /* handle of device context in which to render metafile */
HMETAFILE32 hmf /* metafile handle */
) {
HMETAFILE32 WINAPI CopyMetaFile32A(
HMETAFILE32 hSrcMetaFile, /* handle of metafile to copy */
LPCSTR lpFilename /* filename if copying to a file */
) { ... }
becomes, after processing with c2man and nroff -man,
PlayMetaFile32(3w) PlayMetaFile32(3w)
CopyMetaFileA(3w) CopyMetaFileA(3w)
NAME
PlayMetaFile32 - PlayMetaFile32 (GDI32.265) Render
metafile to device
CopyMetaFileA - CopyMetaFile32A (GDI32.23)
SYNOPSIS
BOOL32 PlayMetaFile32
HMETAFILE32 CopyMetaFileA
(
HDC32 hdc,
HMETAFILE32 hmf
HMETAFILE32 hSrcMetaFile,
LPCSTR lpFilename
);
PARAMETERS
HDC32 hdc
Handle of device context in which to render
metafile.
HMETAFILE32 hSrcMetaFile
Handle of metafile to copy.
HMETAFILE32 hmf
Metafile handle.
LPCSTR lpFilename
Filename if copying to a file.
DESCRIPTION
The metafile is rendered in the device context specified
by hdc.
Copies the metafile corresponding to hSrcMetaFile to
either a disk file, if a filename is given, or to a new
memory based metafile, if lpFileName is NULL.
RETURNS
Always returns TRUE.
Handle to metafile copy on success, NULL on failure.
FIXME
Wine metafiles are not 100% binary compatible with
Microsoft Windows metafiles.
BUGS
Copying to disk returns NULL even if successful.
----------------------------------------------------------------
Patch for c2man:
diff -u c2man-2.41.orig/manpage.c c2man-2.41/manpage.c
--- c2man-2.41.orig/manpage.c Tue Apr 23 21:13:44 1996
+++ c2man-2.41/manpage.c Thu Dec 18 13:20:08 1997
@@ -585,10 +585,15 @@
const char *endterse, *afterdash = skipdash(start_line);
/* find the end of the terse comment */
- while (*c && *c != '.' && *c != '\n')
+ while (*c && *c != '\n')
+ {
c++;
+ /* '.' ends terse description only if it ends sentence */
+ if (*(c-1)=='.' && *c && isspace(*c))
+ break;
+ }
- endterse = *c == '.' ? c+1 : c;
+ endterse = c;
*terse = alloc_string(
afterdash < endterse ? afterdash : start_line,
endterse);
SEE ALSO
GetMetaFileA(3w), GetMetaFileW(3w), CopyMetaFileW(3w),
PlayMetaFile(3w), SetMetaFileBitsEx(3w), GetMetaFileBit-
sEx(3w)

View File

@ -0,0 +1,42 @@
If a program depends on the correct label and/or serial number for the
CD-Rom, you can use the following command to extract that information:
dd if=<your cdrom device> bs=1 skip=32808 count=32
You need read access to the device, so perhaps you have to do it as root.
Put the resulting string (without trailing blanks) into your
wine.ini/.winerc file like:
Label=<the label>
[FIXME: if someone knows how to get the serial number in Linux, please
put this information here].
If you have access to a Win32 system and C-compiler, you can compile the
following program to extract this information:
------------------------- begin volinfo.c ---------------------------
#include <windows.h>
#include <stdio.h>
int main(int argc,char **argv[])
{
char drive, root[]="C:\\", label[1002], fsname[1002];
DWORD serial, flags, filenamelen, labellen = 1000, fsnamelen = 1000;
printf("Drive Serial Flags Filename-Length "
"Label Fsname\n");
for (drive = 'C'; drive <= 'Z'; drive++)
{
root[0] = drive;
if (GetVolumeInformationA(root,label,labellen,&serial,
&filenamelen,&flags,fsname,fsnamelen))
{
strcat(label,"\""); strcat (fsname,"\"");
printf("%c:\\ 0x%08lx 0x%08lx %15ld \"%-20s \"%-20s\n",
drive, (long) serial, (long) flags, (long) filenamelen,
label, fsname);
}
}
return 0;
}
------------------------- end volinfo.c -----------------------------

View File

@ -100,13 +100,10 @@
3.10 List View Control
----------------------
Author:
Dummy written by Eric Kohl.
James Michael Mastros <root@jennifer-unix.dyn.ml.org>
Status:
- Dummy control. No functionality.
Notes:
This control is NEEDED in many places. Any volunteers??
- Development in progress.
3.11 Month Calendar Control
@ -213,10 +210,10 @@
Eric Kohl <ekohl@abo.rhein-zeitung.de>
Status:
- Development in progress.
- Development in progress. Almost done.
Notes
The control does not show.
The control does not behave very well. This will be fixed
3.20 Trackbar Control
@ -233,9 +230,14 @@
3.21 Tree View Control
----------------------
Author:
Dummy written by Eric Kohl.
Status:
- Nothing done at all.
- needed.
- Dummy control. No functionality.
Notes:
Author needed!! Any volunteers??
3.22 Updown Control

View File

@ -257,3 +257,82 @@ Wine-dbg>
Written by Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>,
additions welcome.
-------
Here are some useful debugging tips, added by Andreas Mohr:
a) If you have a program crashing at such an early loader phase that you can't
use the Wine debugger normally, but Wine already executes the program's
start code, then you may use a special trick:
You should do a
wine -debugmsg +relay program
to get a listing of the functions the program calls in its start function.
Now you do a
wine -debug winfile.exe
This way, you get into Wine-dbg. Now you can set a breakpoint on any
function the program calls in the start function and just type "c" to bypass
the eventual calls of Winfile to this function until you are finally at the
place where this function gets called by the crashing start function.
Now you can proceed with your debugging as usual.
b) If you try to run a program and it quits after showing an error messagebox,
the problem can usually be identified in the return value of one of the
functions executed before MessageBox().
That's why you should re-run the program with e.g.
wine -debugmsg +relay <program name> &>relmsg
Then do a "more relmsg" and search for the last occurrence of a call to the string "MESSAGEBOX".
This is a line like
Call USER.1: MESSAGEBOX(0x0000,0x01ff1246 "Runtime error 219 at 0004:1056.",0x00000000,0x1010) ret=01f7:2160 ds=01ff
In my example the lines before the call to MessageBox() look like that:
Call KERNEL.96: FREELIBRARY(0x0347) ret=01cf:1033 ds=01ff
CallTo16(func=033f:0072,ds=01ff,0x0000)
Ret KERNEL.96: FREELIBRARY() retval=0x0001 ret=01cf:1033 ds=01ff
Call KERNEL.96: FREELIBRARY(0x036f) ret=01cf:1043 ds=01ff
CallTo16(func=0367:0072,ds=01ff,0x0000)
Ret KERNEL.96: FREELIBRARY() retval=0x0001 ret=01cf:1043 ds=01ff
Call KERNEL.96: FREELIBRARY(0x031f) ret=01cf:105c ds=01ff
CallTo16(func=0317:0072,ds=01ff,0x0000)
Ret KERNEL.96: FREELIBRARY() retval=0x0001 ret=01cf:105c ds=01ff
Call USER.171: WINHELP(0x02ac,0x01ff05b4 "COMET.HLP",0x0002,0x00000000) ret=01cf:1070 ds=01ff
CallTo16(func=0117:0080,ds=01ff)
Call WPROCS.24: TASK_RESCHEDULE() ret=00a7:0a2d ds=002b
Ret WPROCS.24: TASK_RESCHEDULE() retval=0x0000 ret=00a7:0a2d ds=002b
Ret USER.171: WINHELP() retval=0x0001 ret=01cf:1070 ds=01ff
Call KERNEL.96: FREELIBRARY(0x01be) ret=01df:3e29 ds=01ff
Ret KERNEL.96: FREELIBRARY() retval=0x0000 ret=01df:3e29 ds=01ff
Call KERNEL.52: FREEPROCINSTANCE(0x02cf00ba) ret=01f7:1460 ds=01ff
Ret KERNEL.52: FREEPROCINSTANCE() retval=0x0001 ret=01f7:1460 ds=01ff
Call USER.1: MESSAGEBOX(0x0000,0x01ff1246 "Runtime error 219 at 0004:1056.",0x00000000,0x1010) ret=01f7:2160 ds=01ff
I think that the call to MessageBox() in this example is _not_ caused by a wrong result value of some previously executed function (it's happening quite often like that), but instead the messagebox complains about a runtime error at 0x0004:0x1056.
As the segment value of the address is only "4", I think that that is only an internal program value. But the offset address reveals something quite interesting:
Offset 1056 is _very_ close to the return address of FREELIBRARY():
Call KERNEL.96: FREELIBRARY(0x031f) ret=01cf:105c ds=01ff
^^^^
Provided that segment 0x0004 is indeed segment 0x1cf, we now we can use IDA (available at ftp://ftp.uni-koeln.de/pc/msdos/programming/assembler/ida35bx.zip) to
disassemble the part that caused the error. We just have to find the address of
the call to FreeLibrary(). Some lines before that the runtime error occurred.
But be careful ! In some cases you don't have to disassemble the main program, but instead some DLL called by it in order to find the correct place where the runtime error occurred. That can be determined by finding the origin of the segment value (in this case 0x1cf).
c) If you have created a relay file of some crashing program and want to set a
breakpoint at a certain location which is not yet available as the
program loads the breakpoint's segment during execution,
you may set a breakpoint to GetVersion16/32 as those functions are called
very often.
Then do a "c" until you are able to set this breakpoint without error message.
d) Some useful programs:
IDA: ftp://ftp.uni-koeln.de/pc/msdos/programming/assembler/ida35bx.zip
*Very* good DOS disassembler ! It's badly needed for debugging Wine sometimes.
XRAY: ftp://ftp.th-darmstadt.de/pub/machines/ms-dos/SimTel/msdos/asmutil/xray15.zip
Traces DOS calls (Int 21h, DPMI, ...). Use it with Windows to correct
file management problems etc.
pedump: http://oak.oakland.edu/pub/simtelnet/win95/prog/pedump.zip
Dumps the imports and exports of a PE (Portable Executable) DLL.

View File

@ -30,9 +30,6 @@ MenuHighlightTopNudge=<pixels> # Nudges the top of the highlight bar
MenuHighlightLeftNudge=<pixels> # Nudges the left side of the highlight bar
MenuHighlightRightNudge=<pixels> # Nudges the right side of the highlight bar
MenuHighlightBottomNudge=<pixels> # Nudges the bottom of the highlight bar
CaptionHeight=<pixels> # Sets the height of window captions
CaptionLeftNudge=<pixels> # Nudges the caption text of windows down/up
CaptionTopNudge=<pixels> # Nudges the caption text of windows left/right
CaptionAlignment=[left|right|center] # Sets the alignment of caption text
SysControlNudge=<pixels> # Nudges the system menu left/right
MaxControlNudge=<pixels> # Nudges the maximize control left/right

View File

@ -285,7 +285,7 @@ BOOL32 WINAPI CreateDirectory32A( LPCSTR path,
DOS_FULL_NAME full_name;
TRACE(file, "(%s,%p)\n", path, lpsecattribs );
if (DOSFS_IsDevice( path ))
if (DOSFS_GetDevice( path ))
{
TRACE(file, "cannot use device '%s'!\n",path);
DOS_ERROR( ER_AccessDenied, EC_AccessDenied, SA_Abort, EL_Disk );
@ -353,7 +353,7 @@ BOOL32 WINAPI RemoveDirectory32A( LPCSTR path )
TRACE(file, "'%s'\n", path );
if (DOSFS_IsDevice( path ))
if (DOSFS_GetDevice( path ))
{
TRACE(file, "cannot remove device '%s'!\n", path);
DOS_ERROR( ER_FileNotFound, EC_NotFound, SA_Abort, EL_Disk );

View File

@ -46,11 +46,25 @@ typedef struct
/* Chars we don't want to see in DOS file names */
#define INVALID_DOS_CHARS "*?<>|\"+=,;[] \345"
static const char *DOSFS_Devices[] = {
"CON","PRN","NUL","AUX","LPT1","LPT2","LPT3","LPT4","COM1","COM2","COM3","COM4","SCSIMGR$"
static const DOS_DEVICE DOSFS_Devices[] =
/* name, device flags (see Int 21/AX=0x4400) */
{
{ "CON", 0xc0d3 },
{ "PRN", 0xa0c0 },
{ "NUL", 0x80c4 },
{ "AUX", 0x80c0 },
{ "LPT1", 0xa0c0 },
{ "LPT2", 0xa0c0 },
{ "LPT3", 0xa0c0 },
{ "LPT4", 0xc0d3 },
{ "COM1", 0x80c0 },
{ "COM2", 0x80c0 },
{ "COM3", 0x80c0 },
{ "COM4", 0x80c0 },
{ "SCSIMGR$", 0xc0c0 },
{ "HPSCAN", 0xc0c0 }
};
#define GET_DRIVE(path) \
(((path)[1] == ':') ? toupper((path)[0]) - 'A' : DOSFS_CurDrive)
@ -554,11 +568,11 @@ BOOL32 DOSFS_FindUnixName( LPCSTR path, LPCSTR name, LPSTR long_buf,
/***********************************************************************
* DOSFS_IsDevice
* DOSFS_GetDevice
*
* Check if a DOS file name represents a DOS device.
* Check if a DOS file name represents a DOS device and return the device.
*/
BOOL32 DOSFS_IsDevice( const char *name )
const DOS_DEVICE *DOSFS_GetDevice( const char *name )
{
int i;
const char *p;
@ -568,14 +582,14 @@ BOOL32 DOSFS_IsDevice( const char *name )
if ((p = strrchr( name, '\\' ))) name = p + 1;
for (i = 0; i < sizeof(DOSFS_Devices)/sizeof(DOSFS_Devices[0]); i++)
{
const char *dev = DOSFS_Devices[i];
const char *dev = DOSFS_Devices[i].name;
if (!lstrncmpi32A( dev, name, strlen(dev) ))
{
p = name + strlen( dev );
if (!*p || (*p == '.')) return TRUE;
if (!*p || (*p == '.')) return &DOSFS_Devices[i];
}
}
return FALSE;
return NULL;
}
/***********************************************************************
@ -595,15 +609,15 @@ HFILE32 DOSFS_OpenDevice( const char *name, int unixmode )
if ((p = strrchr( name, '\\' ))) name = p + 1;
for (i = 0; i < sizeof(DOSFS_Devices)/sizeof(DOSFS_Devices[0]); i++)
{
const char *dev = DOSFS_Devices[i];
const char *dev = DOSFS_Devices[i].name;
if (!lstrncmpi32A( dev, name, strlen(dev) ))
{
p = name + strlen( dev );
if (!*p || (*p == '.')) {
/* got it */
if (!strcmp(DOSFS_Devices[i],"NUL"))
if (!strcmp(DOSFS_Devices[i].name,"NUL"))
return FILE_OpenUnixFile("/dev/null",unixmode);
if (!strcmp(DOSFS_Devices[i],"CON")) {
if (!strcmp(DOSFS_Devices[i].name,"CON")) {
switch (unixmode) {
case O_RDONLY:
return GetStdHandle( STD_INPUT_HANDLE );
@ -617,7 +631,7 @@ HFILE32 DOSFS_OpenDevice( const char *name, int unixmode )
break;
}
}
if (!strcmp(DOSFS_Devices[i],"SCSIMGR$")) {
if (!strcmp(DOSFS_Devices[i].name,"SCSIMGR$")) {
if ((handle = FILE_Alloc( &file )) == INVALID_HANDLE_VALUE32)
return HFILE_ERROR32;
else {
@ -625,7 +639,15 @@ HFILE32 DOSFS_OpenDevice( const char *name, int unixmode )
return handle;
}
}
FIXME(dosfs,"device open %s not supported (yet)\n",DOSFS_Devices[i]);
if (!strcmp(DOSFS_Devices[i].name,"HPSCAN")) {
if ((handle = FILE_Alloc( &file )) == INVALID_HANDLE_VALUE32)
return HFILE_ERROR32;
else {
file->unix_name = HEAP_strdupA( SystemHeap, 0, name );
return handle;
}
}
FIXME(dosfs,"device open %s not supported (yet)\n",DOSFS_Devices[i].name);
return HFILE_ERROR32;
}
}
@ -770,7 +792,12 @@ BOOL32 DOSFS_GetFullName( LPCSTR name, BOOL32 check_last, DOS_FULL_NAME *full )
(p_s < full->short_name + sizeof(full->short_name) - 1) &&
(p_l < full->long_name + sizeof(full->long_name) - 1))
{
*p_l++ = *p_s++ = tolower(*name);
*p_s++ = tolower(*name);
/* If the drive is case-sensitive we want to create new */
/* files in lower-case otherwise we can't reopen them */
/* under the same short name. */
if (flags & DRIVE_CASE_SENSITIVE) *p_l++ = tolower(*name);
else *p_l++ = *name;
name++;
}
*p_l = *p_s = '\0';

View File

@ -971,6 +971,7 @@ BOOL32 WINAPI GetVolumeInformation32A( LPCSTR root, LPSTR label,
LPSTR fsname, DWORD fsname_len )
{
int drive;
char *cp;
/* FIXME, SetLastErrors missing */
@ -985,7 +986,13 @@ BOOL32 WINAPI GetVolumeInformation32A( LPCSTR root, LPSTR label,
drive = toupper(root[0]) - 'A';
}
if (!DRIVE_IsValid( drive )) return FALSE;
if (label) lstrcpyn32A( label, DOSDrives[drive].label, label_len );
if (label)
{
lstrcpyn32A( label, DOSDrives[drive].label, label_len );
for (cp = label; *cp; cp++);
while (cp != label && *(cp-1) == ' ') cp--;
*cp = '\0';
}
if (serial) *serial = DOSDrives[drive].serial;
/* Set the filesystem information */

View File

@ -197,7 +197,7 @@ FILE_OBJECT *FILE_GetFile( HFILE32 handle )
*
* Release a DOS file obtained with FILE_GetFile.
*/
static void FILE_ReleaseFile( FILE_OBJECT *file )
void FILE_ReleaseFile( FILE_OBJECT *file )
{
K32OBJ_DecCount( &file->header );
}
@ -350,7 +350,7 @@ HFILE32 FILE_Open( LPCSTR path, INT32 mode )
if (!path) return HFILE_ERROR32;
if (DOSFS_IsDevice( path ))
if (DOSFS_GetDevice( path ))
{
HFILE32 ret;
@ -388,7 +388,7 @@ static HFILE32 FILE_Create( LPCSTR path, int mode, int unique )
if (!path) return INVALID_HANDLE_VALUE32;
if (DOSFS_IsDevice( path ))
if (DOSFS_GetDevice( path ))
{
WARN(file, "cannot create DOS device '%s'!\n", path);
DOS_ERROR( ER_AccessDenied, EC_NotFound, SA_Abort, EL_Disk );
@ -1278,7 +1278,7 @@ BOOL32 WINAPI DeleteFile32A( LPCSTR path )
TRACE(file, "'%s'\n", path );
if (DOSFS_IsDevice( path ))
if (DOSFS_GetDevice( path ))
{
WARN(file, "cannot remove DOS device '%s'!\n", path);
DOS_ERROR( ER_FileNotFound, EC_NotFound, SA_Abort, EL_Disk );

View File

@ -9,6 +9,8 @@
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include "windows.h"
#include "file.h"
#include "heap.h"
@ -36,11 +38,16 @@ typedef struct
char *dos_name;
char *unix_name;
char *filename;
time_t mtime;
} PROFILE;
/* Cached profile file */
static PROFILE CurProfile = { FALSE, NULL, NULL };
#define N_CACHED_PROFILES 10
/* Cached profile files */
static PROFILE *MRUProfile[N_CACHED_PROFILES]={NULL};
#define CurProfile (MRUProfile[0])
/* wine.ini profile content */
static PROFILESECTION *WineProfile;
@ -205,17 +212,22 @@ static PROFILESECTION *PROFILE_Load( FILE *file )
next_section = &section->next;
next_key = &section->key;
prev_key = NULL;
TRACE(profile, "New section: '%s'\n",section->name);
continue;
}
}
p2=p+strlen(p) - 1;
while ((p2 > p) && ((*p2 == '\n') || PROFILE_isspace(*p2))) *p2--='\0';
if ((p2 = strchr( p, '=' )) != NULL)
{
char *p3 = p2 - 1;
while ((p3 > p) && PROFILE_isspace(*p3)) *p3-- = '\0';
*p2++ = '\0';
while (*p2 && PROFILE_isspace(*p2)) p2++;
p3 = p2 + strlen(p2) - 1;
while ((p3 > p2) && ((*p3 == '\n') || PROFILE_isspace(*p3))) *p3--='\0';
}
if(*p || !prev_key || *prev_key->name)
@ -341,9 +353,16 @@ static BOOL32 PROFILE_FlushFile(void)
char *p, buffer[MAX_PATHNAME_LEN];
const char *unix_name;
FILE *file = NULL;
struct stat buf;
if (!CurProfile.changed || !CurProfile.dos_name) return TRUE;
if (!(unix_name = CurProfile.unix_name) || !(file = fopen(unix_name, "w")))
if(!CurProfile)
{
WARN(profile, "No current profile!\n");
return FALSE;
}
if (!CurProfile->changed || !CurProfile->dos_name) return TRUE;
if (!(unix_name = CurProfile->unix_name) || !(file = fopen(unix_name, "w")))
{
/* Try to create it in $HOME/.wine */
/* FIXME: this will need a more general solution */
@ -352,7 +371,7 @@ static BOOL32 PROFILE_FlushFile(void)
strcpy( buffer, p );
strcat( buffer, "/.wine/" );
p = buffer + strlen(buffer);
strcpy( p, strrchr( CurProfile.dos_name, '\\' ) + 1 );
strcpy( p, strrchr( CurProfile->dos_name, '\\' ) + 1 );
CharLower32A( p );
file = fopen( buffer, "w" );
unix_name = buffer;
@ -361,14 +380,16 @@ static BOOL32 PROFILE_FlushFile(void)
if (!file)
{
WARN(profile, "could not save profile file %s\n", CurProfile.dos_name);
WARN(profile, "could not save profile file %s\n", CurProfile->dos_name);
return FALSE;
}
TRACE(profile, "Saving '%s' into '%s'\n", CurProfile.dos_name, unix_name );
PROFILE_Save( file, CurProfile.section );
TRACE(profile, "Saving '%s' into '%s'\n", CurProfile->dos_name, unix_name );
PROFILE_Save( file, CurProfile->section );
fclose( file );
CurProfile.changed = FALSE;
CurProfile->changed = FALSE;
if(!stat(unix_name,&buf))
CurProfile->mtime=buf.st_mtime;
return TRUE;
}
@ -384,13 +405,25 @@ static BOOL32 PROFILE_Open( LPCSTR filename )
char buffer[MAX_PATHNAME_LEN];
char *newdos_name, *p;
FILE *file = NULL;
int i,j;
struct stat buf;
PROFILE *tempProfile;
if (CurProfile.filename && !strcmp( filename, CurProfile.filename ))
{
TRACE(profile, "(%s): already opened\n",
filename );
return TRUE;
}
/* First time around */
if(!CurProfile)
for(i=0;i<N_CACHED_PROFILES;i++)
{
MRUProfile[i]=HEAP_xalloc( SystemHeap, 0, sizeof(PROFILE) );
MRUProfile[i]->changed=FALSE;
MRUProfile[i]->section=NULL;
MRUProfile[i]->dos_name=NULL;
MRUProfile[i]->unix_name=NULL;
MRUProfile[i]->filename=NULL;
MRUProfile[i]->mtime=0;
}
/* Check for a match */
if (strchr( filename, '/' ) || strchr( filename, '\\' ) ||
strchr( filename, ':' ))
@ -404,25 +437,61 @@ static BOOL32 PROFILE_Open( LPCSTR filename )
strcat( buffer, filename );
if (!DOSFS_GetFullName( buffer, FALSE, &full_name )) return FALSE;
}
if (CurProfile.dos_name &&
!strcmp( full_name.short_name, CurProfile.dos_name ))
{
TRACE(profile, "(%s): already opened\n",
filename );
return TRUE;
}
/* Flush the previous profile */
for(i=0;i<N_CACHED_PROFILES;i++)
{
if ((MRUProfile[i]->filename && !strcmp( filename, MRUProfile[i]->filename )) ||
(MRUProfile[i]->dos_name && !strcmp( full_name.short_name, MRUProfile[i]->dos_name )))
{
if(i)
{
PROFILE_FlushFile();
tempProfile=MRUProfile[i];
for(j=i;j>0;j--)
MRUProfile[j]=MRUProfile[j-1];
CurProfile=tempProfile;
}
if(!stat(CurProfile->unix_name,&buf) && CurProfile->mtime==buf.st_mtime)
{
TRACE(profile, "(%s): already opened (mru=%d)\n",
filename, i );
return TRUE;
}
TRACE(profile, "(%s): already opened, needs refreshing (mru=%d)\n",
filename, i );
}
}
/* Rotate the oldest to the top to be replaced */
if(i==N_CACHED_PROFILES)
{
tempProfile=MRUProfile[N_CACHED_PROFILES-1];
for(i=N_CACHED_PROFILES-1;i>0;i--)
MRUProfile[i]=MRUProfile[i-1];
CurProfile=tempProfile;
}
/* Flush the profile */
if(CurProfile->filename)
{
PROFILE_FlushFile();
PROFILE_Free( CurProfile->section );
if (CurProfile->dos_name) HeapFree( SystemHeap, 0, CurProfile->dos_name );
if (CurProfile->unix_name) HeapFree( SystemHeap, 0, CurProfile->unix_name );
if (CurProfile->filename) HeapFree( SystemHeap, 0, CurProfile->filename );
CurProfile->changed=FALSE;
CurProfile->section=NULL;
CurProfile->dos_name=NULL;
CurProfile->unix_name=NULL;
CurProfile->filename=NULL;
CurProfile->mtime=0;
}
newdos_name = HEAP_strdupA( SystemHeap, 0, full_name.short_name );
PROFILE_FlushFile();
PROFILE_Free( CurProfile.section );
if (CurProfile.dos_name) HeapFree( SystemHeap, 0, CurProfile.dos_name );
if (CurProfile.unix_name) HeapFree( SystemHeap, 0, CurProfile.unix_name );
if (CurProfile.filename) HeapFree( SystemHeap, 0, CurProfile.filename );
CurProfile.section = NULL;
CurProfile.dos_name = newdos_name;
CurProfile.filename = HEAP_strdupA( SystemHeap, 0, filename );
CurProfile->dos_name = newdos_name;
CurProfile->filename = HEAP_strdupA( SystemHeap, 0, filename );
/* Try to open the profile file, first in $HOME/.wine */
@ -438,13 +507,13 @@ static BOOL32 PROFILE_Open( LPCSTR filename )
{
TRACE(profile, "(%s): found it in %s\n",
filename, buffer );
CurProfile.unix_name = HEAP_strdupA( SystemHeap, 0, buffer );
CurProfile->unix_name = HEAP_strdupA( SystemHeap, 0, buffer );
}
}
if (!file)
{
CurProfile.unix_name = HEAP_strdupA( SystemHeap, 0,
CurProfile->unix_name = HEAP_strdupA( SystemHeap, 0,
full_name.long_name );
if ((file = fopen( full_name.long_name, "r" )))
TRACE(profile, "(%s): found it in %s\n",
@ -453,8 +522,10 @@ static BOOL32 PROFILE_Open( LPCSTR filename )
if (file)
{
CurProfile.section = PROFILE_Load( file );
CurProfile->section = PROFILE_Load( file );
fclose( file );
if(!stat(CurProfile->unix_name,&buf))
CurProfile->mtime=buf.st_mtime;
}
else
{
@ -481,7 +552,7 @@ static INT32 PROFILE_GetSection( PROFILESECTION *section, LPCSTR section_name,
if (section->name && !strcasecmp( section->name, section_name ))
{
UINT32 oldlen = len;
for (key = section->key; key; key = key->next)
for (key = section->key; key && *(key->name); key = key->next)
{
if (len <= 2) break;
if (IS_ENTRY_COMMENT(key->name)) continue; /* Skip comments */
@ -507,7 +578,7 @@ static INT32 PROFILE_GetSection( PROFILESECTION *section, LPCSTR section_name,
buffer[-1] = '\0';
return oldlen - 2;
}
return oldlen - len + 1;
return oldlen - len;
}
section = section->next;
}
@ -529,14 +600,14 @@ static INT32 PROFILE_GetString( LPCSTR section, LPCSTR key_name,
if (!def_val) def_val = "";
if (key_name && key_name[0])
{
key = PROFILE_Find( &CurProfile.section, section, key_name, FALSE );
key = PROFILE_Find( &CurProfile->section, section, key_name, FALSE );
PROFILE_CopyEntry( buffer, (key && key->value) ? key->value : def_val,
len, FALSE );
TRACE(profile, "('%s','%s','%s'): returning '%s'\n",
section, key_name, def_val, buffer );
return strlen( buffer );
}
return PROFILE_GetSection(CurProfile.section, section, buffer, len,
return PROFILE_GetSection(CurProfile->section, section, buffer, len,
FALSE, FALSE);
}
@ -552,8 +623,8 @@ static BOOL32 PROFILE_SetString( LPCSTR section_name, LPCSTR key_name,
if (!key_name) /* Delete a whole section */
{
TRACE(profile, "('%s')\n", section_name);
CurProfile.changed |= PROFILE_DeleteSection( &CurProfile.section,
section_name );
CurProfile->changed |= PROFILE_DeleteSection( &CurProfile->section,
section_name );
return TRUE; /* Even if PROFILE_DeleteSection() has failed,
this is not an error on application's level.*/
}
@ -561,13 +632,13 @@ static BOOL32 PROFILE_SetString( LPCSTR section_name, LPCSTR key_name,
{
TRACE(profile, "('%s','%s')\n",
section_name, key_name );
CurProfile.changed |= PROFILE_DeleteKey( &CurProfile.section,
section_name, key_name );
CurProfile->changed |= PROFILE_DeleteKey( &CurProfile->section,
section_name, key_name );
return TRUE; /* same error handling as above */
}
else /* Set the key value */
{
PROFILEKEY *key = PROFILE_Find( &CurProfile.section, section_name,
PROFILEKEY *key = PROFILE_Find( &CurProfile->section, section_name,
key_name, TRUE );
TRACE(profile, "('%s','%s','%s'): \n",
section_name, key_name, value );
@ -584,7 +655,7 @@ static BOOL32 PROFILE_SetString( LPCSTR section_name, LPCSTR key_name,
}
else TRACE(profile, " creating key\n" );
key->value = HEAP_strdupA( SystemHeap, 0, value );
CurProfile.changed = TRUE;
CurProfile->changed = TRUE;
}
return TRUE;
}
@ -1013,7 +1084,7 @@ INT32 WINAPI GetPrivateProfileSection32A( LPCSTR section, LPSTR buffer,
UINT32 len, LPCSTR filename )
{
if (PROFILE_Open( filename ))
return PROFILE_GetSection(CurProfile.section, section, buffer, len,
return PROFILE_GetSection(CurProfile->section, section, buffer, len,
FALSE, TRUE);
return 0;
@ -1092,7 +1163,7 @@ WORD WINAPI GetPrivateProfileSectionNames16( LPSTR buffer, WORD size,
if (PROFILE_Open( filename )) {
buf=buffer;
cursize=0;
section=CurProfile.section;
section=CurProfile->section;
for ( ; section; section = section->next)
if (section->name) {
l=strlen (section->name);
@ -1122,7 +1193,7 @@ WORD WINAPI GetPrivateProfileStruct32A (LPCSTR section, LPCSTR key,
PROFILEKEY *k;
if (PROFILE_Open( filename )) {
k=PROFILE_Find ( &CurProfile.section, section, key, FALSE);
k=PROFILE_Find ( &CurProfile->section, section, key, FALSE);
if (!k) return FALSE;
lstrcpyn32A( buf, k->value, strlen(k->value));
return TRUE;

File diff suppressed because it is too large Load Diff

View File

@ -1104,8 +1104,8 @@ BOOL32 WINAPI PolyBezier32( HDC32 hdc, LPPOINT32 lppt, DWORD cPoints )
if(!dc) return FALSE;
if(dc && PATH_IsPathOpen(dc->w.path))
FIXME(gdi, "PATH_PolyBezier is not implemented!\n");
// if(!PATH_PolyBezier(hdc, x, y))
// return FALSE;
/* if(!PATH_PolyBezier(hdc, x, y))
return FALSE; */
return dc->funcs->pPolyBezier&&
dc->funcs->pPolyBezier(dc, lppt[0], lppt+1, cPoints-1);
}
@ -1131,8 +1131,8 @@ BOOL32 WINAPI PolyBezierTo32( HDC32 hdc, LPPOINT32 lppt, DWORD cPoints )
pt.y=dc->w.CursPosY;
if(dc && PATH_IsPathOpen(dc->w.path))
FIXME(gdi, "PATH_PolyBezierTo is not implemented!\n");
// if(!PATH_PolyBezier(hdc, x, y))
// return FALSE;
/* if(!PATH_PolyBezier(hdc, x, y))
return FALSE; */
ret= dc->funcs->pPolyBezier &&
dc->funcs->pPolyBezier(dc, pt, lppt, cPoints);
if( dc->funcs->pMoveToEx)

View File

@ -199,9 +199,10 @@ BOOL16 WINAPI CloseFigure16(HDC16 hdc)
/***********************************************************************
* CloseFigure32 (GDI32.16)
*
* FIXME: Check that SetLastError is being called correctly
*/
BOOL32 WINAPI CloseFigure32(HDC32 hdc)
/* FIXME: Check that SetLastError is being called correctly */
{
GdiPath *pPath;
@ -293,12 +294,14 @@ INT32 WINAPI GetPath32(HDC32 hdc, LPPOINT32 pPoints, LPBYTE pTypes,
/***********************************************************************
* PathToRegion32 (GDI32.261)
*/
HRGN32 WINAPI PathToRegion32(HDC32 hdc)
/* FIXME: Check that SetLastError is being called correctly */
/* The documentation does not state this explicitly, but a test under Windows
*
* FIXME
* Check that SetLastError is being called correctly
*
* The documentation does not state this explicitly, but a test under Windows
* shows that the region which is returned should be in device coordinates.
*/
HRGN32 WINAPI PathToRegion32(HDC32 hdc)
{
GdiPath *pPath;
HRGN32 hrgnRval;
@ -329,9 +332,11 @@ HRGN32 WINAPI PathToRegion32(HDC32 hdc)
/***********************************************************************
* FillPath32 (GDI32.100)
*
* FIXME
* Check that SetLastError is being called correctly
*/
BOOL32 WINAPI FillPath32(HDC32 hdc)
/* FIXME: Check that SetLastError is being called correctly */
{
GdiPath *pPath;
INT32 mapMode, graphicsMode;
@ -413,9 +418,10 @@ BOOL32 WINAPI FillPath32(HDC32 hdc)
/***********************************************************************
* SelectClipPath32 (GDI32.296)
* FIXME
* Check that SetLastError is being called correctly
*/
BOOL32 WINAPI SelectClipPath32(HDC32 hdc, INT32 iMode)
/* FIXME: Check that SetLastError is being called correctly */
{
GdiPath *pPath;
HRGN32 hrgnPath, hrgnClip;

View File

@ -177,7 +177,7 @@ BOOL32 WIN16DRV_CreateDC( DC *dc, LPCSTR driver, LPCSTR device, LPCSTR output,
if (lstrcmpi32A(printerEnabled,"on"))
{
MSG("Printing disabled in wine.conf or .winerc file\n");
MSG("Use \"printer=on\" in the \"[wine]\" section to enable it.");
MSG("Use \"printer=on\" in the \"[wine]\" section to enable it.\n");
return FALSE;
}

View File

@ -147,7 +147,7 @@ HBITMAP16 WINAPI WinGCreateBitmap16(HDC16 winDC, BITMAPINFO *header,
{
WORD sel = 0;
XShmAttach(display, &p->si);
TSXShmAttach(display, &p->si);
bmpObjPtr->pixmap = XShmCreatePixmap(display, rootWindow,
p->si.shmaddr, &p->si, bmpObjPtr->bitmap.bmWidth,
bmpObjPtr->bitmap.bmHeight, bmpi->biBitCount );

View File

@ -920,7 +920,7 @@ X11DRV_ExtFloodFill( DC *dc, INT32 x, INT32 y, COLORREF color,
return result;
}
/****************** WARNING: WORK IN PROGRESS AHEAD !!!! ****************
/******************************************************************
*
* *Very* simple bezier drawing code,
*
@ -938,82 +938,71 @@ X11DRV_ExtFloodFill( DC *dc, INT32 x, INT32 y, COLORREF color,
* to avoid trucation errors the coordinates are
* shifted upwards. When used in drawing they are
* shifted down again, including correct rounding
* and avoiding floating points
* and avoiding floating point arithmatic
* 4 bits should allow 27 bits coordinates which I saw
* somewere in the win32 doc's
*
*/
#define BEZIERSHIFTBITS 4
#define BEZIERSHIFTUP(x) ((x)<<BEZIERSHIFTBITS)
#define BEZIERFACTOR BEZIERSHIFTUP(1)
#define BEZIERPIXEL BEZIERSHIFTUP(1)
#define BEZIERSHIFTDOWN(x) (((x)+(1<<(BEZIERSHIFTBITS-1)))>>BEZIERSHIFTBITS)
/* maximum depth of recursion */
#define BEZIERMAXDEPTH 6
#define BEZIERMAXDEPTH 8
/* size of array to store points on */
/* enough for one curve */
#define BEZMAXPOINTS ((1<<BEZIERMAXDEPTH)+1)
#define BEZMAXPOINTS (150)
/* calculate Bezier average, in this case the middle */
/* calculate Bezier average, in this case the middle
* correctly rounded...
* */
#define BEZIERMIDDLE(Mid, P1, P2) \
(Mid).x=((P1).x+(P2).x)/2;\
(Mid).y=((P1).y+(P2).y)/2;
(Mid).x=((P1).x+(P2).x + 1)/2;\
(Mid).y=((P1).y+(P2).y + 1)/2;
/* check to terminate recursion */
static int BezierCheck( int level, POINT32 *Points)
/**********************************************************
* BezierCheck helper function to check
* that recursion can be terminated
* Points[0] and Points[3] are begin and endpoint
* Points[1] and Points[2] are control points
* level is the recursion depth
* returns true if the recusion can be terminated
*/
static BOOL32 BezierCheck( int level, POINT32 *Points)
{
#if 0
/* this code works, it just is too much work for
* the savings that are created. This should be done
* with integer arithmetic and simpler.
*/
double hyp, r1, r2;
/* first check that the control points are "near" */
if(Points[3].x>Points[0].x)
if(Points[1].x > Points[3].x+BEZIERFACTOR ||
Points[1].x < Points[0].x-BEZIERFACTOR ||
Points[2].x > Points[3].x+BEZIERFACTOR ||
Points[2].x < Points[0].x-BEZIERFACTOR)
return FALSE;
else
if(Points[1].x < Points[3].x-BEZIERFACTOR ||
Points[1].x > Points[0].x+BEZIERFACTOR ||
Points[2].x < Points[3].x-BEZIERFACTOR ||
Points[2].x > Points[0].x+BEZIERFACTOR)
return FALSE;
if(Points[3].y>Points[0].y)
if(Points[1].y > Points[3].y+BEZIERFACTOR ||
Points[1].y < Points[0].y-BEZIERFACTOR ||
Points[2].y > Points[3].y+BEZIERFACTOR ||
Points[2].y < Points[0].y-BEZIERFACTOR)
return FALSE;
else
if(Points[1].x < Points[3].x-BEZIERFACTOR ||
Points[1].x > Points[0].x+BEZIERFACTOR ||
Points[2].x < Points[3].x-BEZIERFACTOR ||
Points[2].x > Points[0].x+BEZIERFACTOR)
return FALSE;o
/* calculate the distance squared of the control point from
* the line from begin and endpoint
*/
hyp=((double)(Points[3].x-Points[0].x)*(double)(Points[3].x-Points[0].x)+
(double) (Points[3].y-Points[0].y)*(double)(Points[3].y-Points[0].y));
r1=((double)(Points[2].y-Points[0].y)*(double)(Points[3].x-Points[0].x)-
(double) (Points[3].y-Points[0].y)*(double)(Points[2].x-Points[0].x))
/BEZIERFACTOR;
r2=((double)(Points[1].y-Points[0].y)*(double)(Points[3].x-Points[0].x)-
(double)(Points[3].y-Points[0].y)*(double)(Points[1].x-Points[0].x))
/BEZIERFACTOR;
r1=r1*r1/hyp;
r1=r2*r2/hyp;
if( r1<1 && r2 <1){ /* distance less then a pixel */
// fprintf(stderr,"level is %d\n", level);
return TRUE;
INT32 dx, dy;
dx=Points[3].x-Points[0].x;
dy=Points[3].y-Points[0].y;
if(ABS(dy)<ABS(dx)){/* shallow line */
/* check that control points are between begin and end */
if( (Points[1].x-Points[0].x)*dx < 0 ||
(Points[2].x-Points[0].x)*dx < 0 ) return FALSE;
dx=BEZIERSHIFTDOWN(dx);
if(!dx) return TRUE;
if(abs(Points[1].y-Points[0].y-(dy/dx)*
BEZIERSHIFTDOWN(Points[1].x-Points[0].x)) > BEZIERPIXEL ||
abs(Points[2].y-Points[0].y-(dy/dx)*
BEZIERSHIFTDOWN(Points[2].x-Points[0].x)) > BEZIERPIXEL )
return FALSE;
else
return TRUE;
}else{ /* steep line */
/* check that control points are between begin and end */
if( (Points[1].y-Points[0].y)*dy < 0 ||
(Points[2].y-Points[0].y)*dy < 0 ) return FALSE;
dy=BEZIERSHIFTDOWN(dy);
if(!dy) return TRUE;
if(abs(Points[1].x-Points[0].x-(dx/dy)*
BEZIERSHIFTDOWN(Points[1].y-Points[0].y)) > BEZIERPIXEL ||
abs(Points[2].x-Points[0].x-(dx/dy)*
BEZIERSHIFTDOWN(Points[2].y-Points[0].y)) > BEZIERPIXEL )
return FALSE;
else
return TRUE;
}
#endif
return FALSE;
}
/***********************************************************************
@ -1021,24 +1010,31 @@ static int BezierCheck( int level, POINT32 *Points)
* Draw a -what microsoft calls- bezier curve
* The routine recursively devides the curve
* in two parts until a straight line can be drawn
*
* level recusion depth counted backwards
* dc device context
* Points array of begin(0), end(3) and control points(1 and 2)
* XPoints array with points calculated sofar
* *pIx nr points calculated sofar
*
*/
static void X11DRV_Bezier(int level, DC * dc, POINT32 *Points,
XPoint* xpoints, unsigned int* pix)
XPoint* xpoints, unsigned int* pIx)
{
if(*pix == BEZMAXPOINTS){
if(*pIx == BEZMAXPOINTS){
TSXDrawLines( display, dc->u.x.drawable, dc->u.x.gc,
xpoints, *pix, CoordModeOrigin );
*pix=0;
xpoints, *pIx, CoordModeOrigin );
*pIx=0;
}
if(!level || BezierCheck(level, Points)) {
if(*pix == 0){
xpoints[*pix].x= dc->w.DCOrgX + BEZIERSHIFTDOWN(Points[0].x);
xpoints[*pix].y= dc->w.DCOrgY + BEZIERSHIFTDOWN(Points[0].y);
*pix=1;
if(*pIx == 0){
xpoints[*pIx].x= dc->w.DCOrgX + BEZIERSHIFTDOWN(Points[0].x);
xpoints[*pIx].y= dc->w.DCOrgY + BEZIERSHIFTDOWN(Points[0].y);
*pIx=1;
}
xpoints[*pix].x= dc->w.DCOrgX + BEZIERSHIFTDOWN(Points[3].x);
xpoints[*pix].y= dc->w.DCOrgY + BEZIERSHIFTDOWN(Points[3].y);
(*pix) ++;
xpoints[*pIx].x= dc->w.DCOrgX + BEZIERSHIFTDOWN(Points[3].x);
xpoints[*pIx].y= dc->w.DCOrgY + BEZIERSHIFTDOWN(Points[3].y);
(*pIx) ++;
} else {
POINT32 Points2[4]; /* for the second recursive call */
Points2[3]=Points[3];
@ -1053,8 +1049,8 @@ static void X11DRV_Bezier(int level, DC * dc, POINT32 *Points,
Points2[0]=Points[3];
/* do the two halves */
X11DRV_Bezier(level-1, dc, Points, xpoints, pix);
X11DRV_Bezier(level-1, dc, Points2, xpoints, pix);
X11DRV_Bezier(level-1, dc, Points, xpoints, pIx);
X11DRV_Bezier(level-1, dc, Points2, xpoints, pIx);
}
}
@ -1081,9 +1077,9 @@ X11DRV_PolyBezier(DC *dc, POINT32 start, POINT32 *BezierPoints, DWORD count)
(Points+0)->x, (Points+0)->y,
(Points+1)->x, (Points+1)->y,
(Points+2)->x, (Points+2)->y);
if(!count || count % 3){
if(!count || count % 3){/* paranoid */
WARN(graphics," bad value for count : %ld\n", count);
return FALSE; /* paranoid */
return FALSE;
}
xpoints=(XPoint*) xmalloc( sizeof(XPoint)*BEZMAXPOINTS);
Points[3].x=BEZIERSHIFTUP(XLPTODP(dc,start.x));
@ -1100,8 +1096,6 @@ X11DRV_PolyBezier(DC *dc, POINT32 start, POINT32 *BezierPoints, DWORD count)
}
if( ix) TSXDrawLines( display, dc->u.x.drawable, dc->u.x.gc,
xpoints, ix, CoordModeOrigin );
// fprintf(stderr," ix is %d\n",ix);
free(xpoints);
return TRUE;
}
/***************************END OF WORK IN PROGRESS ********************/

View File

@ -29,7 +29,7 @@
#define X_PFONT_MAGIC (0xFADE0000)
#define X_FMC_MAGIC (0x0000CAFE)
#define MAX_FONT_FAMILIES 64
#define MAX_FONT_FAMILIES 128
#define MAX_LFD_LENGTH 256
#define REMOVE_SUBSETS 1
@ -575,7 +575,7 @@ static BOOL32 XFONT_GetLeading( LPIFONTINFO16 pFI, XFontStruct* x_fs, INT32*
Atom RAW_CAP_HEIGHT = TSXInternAtom(display, "RAW_CAP_HEIGHT", TRUE);
if(TSXGetFontProperty(x_fs, RAW_CAP_HEIGHT, &height))
*pIL = XFT->ascent -
(INT32)(hypotf(XFT->a, XFT->b) / 1000.0 * height);
(INT32)(XFT->pixelsize / 1000.0 * height);
else
*pIL = 0;
return bHaveCapHeight && x_fs->per_char;
@ -2015,7 +2015,7 @@ static BOOL32 XFONT_SetX11Trans( fontObject *pfo )
XGetFontProperty( pfo->fs, RAW_ASCENT, &PX->RAW_ASCENT );
XGetFontProperty( pfo->fs, RAW_DESCENT, &PX->RAW_DESCENT );
PX->pixelsize = hypotf(PX->a, PX->b);
PX->pixelsize = hypot(PX->a, PX->b);
PX->ascent = PX->pixelsize / 1000.0 * PX->RAW_ASCENT;
PX->descent = PX->pixelsize / 1000.0 * PX->RAW_DESCENT;

View File

@ -24,6 +24,7 @@ DLLS = \
ole2thk.spec \
olecli.spec \
olesvr.spec \
rasapi16.spec \
shell.spec \
sound.spec \
storage.spec \

View File

@ -64,6 +64,7 @@ extern const WIN16_DESCRIPTOR OLE2THK_Descriptor;
extern const WIN16_DESCRIPTOR OLE2_Descriptor;
extern const WIN16_DESCRIPTOR OLECLI_Descriptor;
extern const WIN16_DESCRIPTOR OLESVR_Descriptor;
extern const WIN16_DESCRIPTOR RASAPI16_Descriptor;
extern const WIN16_DESCRIPTOR SHELL_Descriptor;
extern const WIN16_DESCRIPTOR SOUND_Descriptor;
extern const WIN16_DESCRIPTOR STORAGE_Descriptor;
@ -109,6 +110,7 @@ static BUILTIN16_DLL BuiltinDLLs[] =
{ &OLE2_Descriptor, DLL_FLAG_NOT_USED },
{ &OLECLI_Descriptor, DLL_FLAG_NOT_USED },
{ &OLESVR_Descriptor, DLL_FLAG_NOT_USED },
{ &RASAPI16_Descriptor, 0 },
{ &SHELL_Descriptor, 0 },
{ &SOUND_Descriptor, 0 },
{ &STORAGE_Descriptor, DLL_FLAG_NOT_USED },

12
if1632/rasapi16.spec Normal file
View File

@ -0,0 +1,12 @@
name rasapi16
type win16
#1 stub WEP
#2 stub DLLENTRYPOINT
3 stub RNA1632_THUNKDATA16
4 stub RasGetErrorString
5 stub RasEnumConnections
6 stub RasHangUp
7 stub RasEnumEntries
8 stub RasGetConnectStatus
9 stub RasDial

View File

@ -60,6 +60,7 @@ typedef struct tagSNOOP16_RETURNENTRY {
DWORD ordinal;
WORD origSP;
WORD *args; /* saved args across a stdcall */
BYTE show;
} SNOOP16_RETURNENTRY;
typedef struct tagSNOOP16_RETURNENTRIES {
@ -213,6 +214,8 @@ void WINAPI SNOOP16_Entry(CONTEXT *context) {
SNOOP16_RETURNENTRIES **rets = &firstrets;
SNOOP16_RETURNENTRY *ret;
int i,max;
/* from relay32/snoop.c */
extern int SNOOP_ShowDebugmsgSnoop(const char *dll,int ord,const char *fname);
while (dll) {
if (xcs == dll->funhandle) {
@ -266,6 +269,8 @@ void WINAPI SNOOP16_Entry(CONTEXT *context) {
IP_reg(context)= LOWORD(fun->origfun);
CS_reg(context)= HIWORD(fun->origfun);
ret->show = SNOOP_ShowDebugmsgSnoop(dll->name, ordinal, fun->name);
if(!ret->show) return;
DPRINTF("Call %s.%ld: %s(",dll->name,ordinal,fun->name);
if (fun->nrofargs>0) {
max = fun->nrofargs; if (max>16) max=16;
@ -278,7 +283,7 @@ void WINAPI SNOOP16_Entry(CONTEXT *context) {
ret->args = HeapAlloc(SystemHeap,0,16*sizeof(WORD));
memcpy(ret->args,(LPBYTE)(PTR_SEG_OFF_TO_LIN(SS_reg(context),SP_reg(context))+8),sizeof(WORD)*16);
}
DPRINTF(") ret=%04x:%04x\n",HIWORD((DWORD)(*rets)->entry[i].origreturn),LOWORD((DWORD)(*rets)->entry[i].origreturn));
DPRINTF(") ret=%04x:%04x\n",HIWORD(ret->origreturn),LOWORD(ret->origreturn));
}
void WINAPI SNOOP16_Return(CONTEXT *context) {
@ -293,7 +298,9 @@ void WINAPI SNOOP16_Return(CONTEXT *context) {
ret->dll->funs[ret->ordinal].nrofargs=(SP_reg(context)-ret->origSP-4)/2;
IP_reg(context) = LOWORD(ret->origreturn);
CS_reg(context) = HIWORD(ret->origreturn);
if (ret->args) {
if(!ret->show) {
;
} else if (ret->args) {
int i,max;
DPRINTF("Ret %s.%ld: %s(",ret->dll->name,ret->ordinal,ret->dll->funs[ret->ordinal].name);

View File

@ -12,6 +12,9 @@
/* Define if union semun is defined in sys/sem.h */
#undef HAVE_UNION_SEMUN
/* Define if struct msghdr contains msg_accrights */
#undef HAVE_MSGHDR_ACCRIGHTS
/* Define if you have the Xxf86dga library (-lXxf86dga). */
#undef HAVE_LIBXXF86DGA

View File

@ -712,10 +712,12 @@ CreateMappedBitmap (HINSTANCE32, INT32, UINT32, LPCOLORMAP, INT32);
#define TOOLTIPS_CLASS32W L"tooltips_class32"
#define TOOLTIPS_CLASS32A "tooltips_class32"
#define TOOLTIPS_CLASS WINELIB_NAME_AW(TOOLTIPS_CLASS)
#define INFOTIPSIZE 1024
#define TTS_ALWAYSTIP 0x01
#define TTS_NOPREFIX 0x02
#define TTF_IDISHWND 0x0001
#define TTF_CENTERTIP 0x0002
#define TTF_RTLREADING 0x0004
@ -781,6 +783,15 @@ CreateMappedBitmap (HINSTANCE32, INT32, UINT32, LPCOLORMAP, INT32);
#define TTM_POP (WM_USER+28)
#define TTM_UPDATE (WM_USER+29)
#define TTN_FIRST (0U-520U)
#define TTN_LAST (0U-549U)
#define TTN_GETDISPINFOA (TTN_FIRST-0)
#define TTN_GETDISPINFOW (TTN_FIRST-10)
#define TTN_SHOW (TTN_FIRST-1)
#define TTN_POP (TTN_FIRST-2)
typedef struct tagTOOLINFOA {
UINT32 cbSize;
UINT32 uFlags;
@ -790,7 +801,7 @@ typedef struct tagTOOLINFOA {
HINSTANCE32 hinst;
LPSTR lpszText;
LPARAM lParam;
} TOOLINFOA, *PTOOLINFOA, *LPTOOLINFOA;
} TTTOOLINFOA, *PTOOLINFOA, *LPTTTOOLINFOA;
typedef struct tagTOOLINFOW {
UINT32 cbSize;
@ -801,9 +812,41 @@ typedef struct tagTOOLINFOW {
HINSTANCE32 hinst;
LPWSTR lpszText;
LPARAM lParam;
} TOOLINFOW, *PTOOLINFOW, *LPTOOLINFOW;
} TTTOOLINFOW, *PTOOLINFOW, *LPTTTOOLINFOW;
typedef struct _TT_HITTESTINFOA
{
HWND32 hwnd;
POINT32 pt;
TTTOOLINFOA ti;
} TTHITTESTINFOA, *LPTTHITTESTINFOA;
typedef struct _TT_HITTESTINFOW
{
HWND32 hwnd;
POINT32 pt;
TTTOOLINFOW ti;
} TTHITTESTINFOW, *LPTTHITTESTINFOW;
typedef struct tagNMTTDISPINFOA
{
NMHDR hdr;
LPSTR lpszText;
CHAR szText[80];
HINSTANCE32 hinst;
UINT32 uFlags;
LPARAM lParam;
} NMTTDISPINFOA, *LPNMTTDISPINFOA;
typedef struct tagNMTTDISPINFOW
{
NMHDR hdr;
LPWSTR lpszText;
WCHAR szText[80];
HINSTANCE32 hinst;
UINT32 uFlags;
LPARAM lParam;
} NMTTDISPINFOW, *LPNMTTDISPINFOW;
@ -863,6 +906,37 @@ typedef struct tagTOOLINFOW {
#define WC_PAGESCROLLER32W L"SysPager"
#define WC_PAGESCROLLER WINELIB_NAME_AW(WC_PAGESCROLLER)
#define PGS_VERT 0x00000000
#define PGS_HORZ 0x00000001
#define PGS_AUTOSCROLL 0x00000002
#define PGS_DRAGNDROP 0x00000004
#define PGF_INVISIBLE 0
#define PGF_NORMAL 1
#define PGF_GRAYED 2
#define PGF_DEPRESSED 4
#define PGF_HOT 8
#define PGB_TOPORLEFT 0
#define PGB_BOTTOMORRIGHT 1
#define PGM_FIRST 0x1400
#define PGM_SETCHILD (PGM_FIRST+1)
#define PGM_RECALCSIZE (PGM_FIRST+2)
#define PGM_FORWARDMOUSE (PGM_FIRST+3)
#define PGM_SETBKCOLOR (PGM_FIRST+4)
#define PGM_GETBKCOLOR (PGM_FIRST+5)
#define PGM_SETBORDER (PGM_FIRST+6)
#define PGM_GETBORDER (PGM_FIRST+7)
#define PGM_SETPOS (PGM_FIRST+8)
#define PGM_GETPOS (PGM_FIRST+9)
#define PGM_SETBUTTONSIZE (PGM_FIRST+10)
#define PGM_GETBUTTONSIZE (PGM_FIRST+11)
#define PGM_GETBUTTONSTATE (PGM_FIRST+12)
#define PGM_GETDROPTARGET CCM_GETDROPTARGET
/* Treeview control */
@ -870,7 +944,15 @@ typedef struct tagTOOLINFOW {
#define WC_TREEVIEW32W L"SysTreeView32"
#define WC_TREEVIEW WINELIB_NAME_AW(WC_TREEVIEW)
#define TV_FIRST 0x1100
#define TVSIL_NORMAL 0
#define TVSIL_STATE 2
#define TV_FIRST 0x1100
#define TVM_GETIMAGELIST (TV_FIRST+8)
#define TVM_SETIMAGELIST (TV_FIRST+9)
/* Listview control */

View File

@ -24,6 +24,9 @@
/* Define if union semun is defined in sys/sem.h */
#undef HAVE_UNION_SEMUN
/* Define if struct msghdr contains msg_accrights */
#undef HAVE_MSGHDR_ACCRIGHTS
/* Define if you have the Xxf86dga library (-lXxf86dga). */
#undef HAVE_LIBXXF86DGA
@ -102,6 +105,9 @@
/* Define if you have the <linux/cdrom.h> header file. */
#undef HAVE_LINUX_CDROM_H
/* Define if you have the <linux/ucdrom.h> header file. */
#undef HAVE_LINUX_UCDROM_H
/* Define if you have the <machine/soundcard.h> header file. */
#undef HAVE_MACHINE_SOUNDCARD_H

View File

@ -817,6 +817,7 @@ struct IDirectDrawPalette {
LPDIRECTDRAW ddraw;
Colormap cm;
PALETTEENTRY palents[256];
int installed;
};
#undef THIS
@ -889,6 +890,9 @@ struct _xlib_directdrawdata {
/* are these needed for anything? (draw_surf is the active surface)
IDirectDrawSurface *surfs;
DWORD num_surfs, alloc_surfs, draw_surf; */
ATOM winclass;
HWND32 window;
};
struct IDirectDraw {
@ -962,11 +966,11 @@ struct IDirectDraw2 {
#define THIS LPDIRECTDRAWSURFACE this
struct _common_directdrawsurface {
LPDIRECTDRAWPALETTE palette;
LPDIRECTDRAW ddraw;
LPDIRECTDRAWSURFACE backbuffer;
LPVOID surface;
DWORD lpitch,width,height;
LPDIRECTDRAWPALETTE palette;
LPDIRECTDRAW ddraw;
LPDIRECTDRAWSURFACE3 backbuffer;
LPVOID surface;
DWORD lpitch,width,height;
};
struct _dga_directdrawsurface {
@ -975,7 +979,6 @@ struct _dga_directdrawsurface {
struct _xshm_directdrawsurface {
XImage *image;
BOOL32 surface_is_image_data;
#ifdef HAVE_LIBXXSHM
XShmSegmentInfo shminfo;
#endif

View File

@ -33,9 +33,17 @@ typedef struct
#define IS_END_OF_NAME(ch) (!(ch) || ((ch) == '/') || ((ch) == '\\'))
/* DOS device descriptor */
typedef struct
{
char *name;
int flags;
} DOS_DEVICE;
/* files/file.c */
extern FILE_OBJECT *FILE_GetFile( HFILE32 handle );
extern void FILE_ReleaseFile( FILE_OBJECT *file );
extern HFILE32 FILE_Alloc( FILE_OBJECT **file );
extern void FILE_SetDosError(void);
extern HFILE32 FILE_DupUnixHandle( int fd );
@ -68,7 +76,7 @@ extern void DOSFS_UnixTimeToFileTime( time_t unixtime, LPFILETIME ft,
DWORD remainder );
extern time_t DOSFS_FileTimeToUnixTime( const FILETIME *ft, DWORD *remainder );
extern BOOL32 DOSFS_ToDosFCBFormat( LPCSTR name, LPSTR buffer );
extern BOOL32 DOSFS_IsDevice( const char *name );
extern const DOS_DEVICE *DOSFS_GetDevice( const char *name );
extern HFILE32 DOSFS_OpenDevice( const char *name, INT32 mode );
extern BOOL32 DOSFS_FindUnixName( LPCSTR path, LPCSTR name, LPSTR long_buf,
INT32 long_len, LPSTR short_buf,

View File

@ -32,8 +32,11 @@ extern LPSTR HEAP_strdupWtoA( HANDLE32 heap, DWORD flags, LPCWSTR str );
(HIWORD(str) ? HEAP_strdupA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
#define SEGPTR_STRDUP_WtoA(str) \
(HIWORD(str) ? HEAP_strdupWtoA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
#define SEGPTR_GET(ptr) \
(HIWORD(ptr) ? HEAP_GetSegptr( SegptrHeap, 0, (ptr) ) : (SEGPTR)(ptr))
/* define an inline function, a macro won't do */
static __inline__ SEGPTR SEGPTR_Get(LPCVOID ptr) {
return (HIWORD(ptr) ? HEAP_GetSegptr( SegptrHeap, 0, ptr ) : (SEGPTR)ptr);
}
#define SEGPTR_GET(ptr) SEGPTR_Get(ptr)
#define SEGPTR_FREE(ptr) \
(HIWORD(ptr) ? HeapFree( SegptrHeap, 0, (ptr) ) : 0)

View File

@ -10,7 +10,11 @@
typedef struct tagPAGER_INFO
{
UINT32 uDummy; /* this is just a dummy to keep the compiler happy */
HWND32 hwndChild;
COLORREF clrBk;
INT32 iBorder;
INT32 iButtonSize;
} PAGER_INFO;

View File

@ -238,9 +238,9 @@ typedef struct _IMAGE_IMPORT_BY_NAME {
/* Import thunk */
typedef struct _IMAGE_THUNK_DATA {
union {
LPBYTE ForwarderString;
LPDWORD Function;
DWORD Ordinal;
LPBYTE ForwarderString;
FARPROC32 Function;
DWORD Ordinal;
LPIMAGE_IMPORT_BY_NAME AddressOfData;
} u1;
} IMAGE_THUNK_DATA,*LPIMAGE_THUNK_DATA;

View File

@ -18,6 +18,15 @@ struct header
/* max msg length (not including the header) */
#define MAX_MSG_LENGTH (16384 - sizeof(struct header))
/* data structure used to pass an fd with sendmsg/recvmsg */
struct cmsg_fd
{
int len; /* sizeof structure */
int level; /* SOL_SOCKET */
int type; /* SCM_RIGHTS */
int fd; /* fd to pass */
};
/* request from client to server */
enum request

View File

@ -12,6 +12,75 @@
#define FAR
#define THIS_ THIS,
/* common shell file structures*/
#define FO_MOVE 0x0001
#define FO_COPY 0x0002
#define FO_DELETE 0x0003
#define FO_RENAME 0x0004
#define FOF_MULTIDESTFILES 0x0001
#define FOF_CONFIRMMOUSE 0x0002
#define FOF_SILENT 0x0004
#define FOF_RENAMEONCOLLISION 0x0008
#define FOF_NOCONFIRMATION 0x0010
#define FOF_WANTMAPPINGHANDLE 0x0020
#define FOF_ALLOWUNDO 0x0040
#define FOF_FILESONLY 0x0080
#define FOF_SIMPLEPROGRESS 0x0100
#define FOF_NOCONFIRMMKDIR 0x0200
#define FOF_NOERRORUI 0x0400
typedef WORD FILEOP_FLAGS;
#define PO_DELETE 0x0013
#define PO_RENAME 0x0014
#define PO_PORTCHANGE 0x0020
typedef WORD PRINTEROP_FLAGS;
typedef struct _SHFILEOPSTRUCTA
{ HWND32 hwnd;
UINT32 wFunc;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
BOOL32 fAnyOperationsAborted;
LPVOID hNameMappings;
LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCT32A, FAR *LPSHFILEOPSTRUCT32A;
typedef struct _SHFILEOPSTRUCTW
{ HWND32 hwnd;
UINT32 wFunc;
LPCWSTR pFrom;
LPCWSTR pTo;
FILEOP_FLAGS fFlags;
BOOL32 fAnyOperationsAborted;
LPVOID hNameMappings;
LPCWSTR lpszProgressTitle;
} SHFILEOPSTRUCT32W, FAR *LPSHFILEOPSTRUCT32W;
typedef SHFILEOPSTRUCT32A SHFILEOPSTRUCT32;
typedef LPSHFILEOPSTRUCT32A LPSHFILEOPSTRUCT32;
/*common IDList structures*/
typedef struct {
WORD cb; /* nr of bytes in this item */
BYTE abID[1];/* first byte in this item */
} SHITEMID,*LPSHITEMID;
typedef struct {
SHITEMID mkid; /* first itemid in list */
} ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST;
/* for SHChangeNotifyRegister*/
typedef struct {
LPITEMIDLIST pidl;
DWORD unknown;
} IDSTRUCT;
/* for SHAddToRecentDocs*/
#define SHARD_PIDL 0x00000001L
#define SHARD_PATH 0x00000002L
typedef LPVOID LPBC; /* *IBindCtx really */
@ -48,16 +117,6 @@ typedef struct _STRRET
}u;
} STRRET,*LPSTRRET;
typedef struct {
WORD cb; /* nr of bytes in this item */
BYTE abID[1];/* first byte in this item */
} SHITEMID,*LPSHITEMID;
typedef struct {
SHITEMID mkid; /* first itemid in list */
} ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST;
/****************************************************************************
* INTERNAL CLASS: PIDL-Manager
* Source: HOWTO extend the explorer namespace
@ -66,9 +125,12 @@ typedef struct {
#define THIS LPPIDLMGR this
typedef enum tagPIDLTYPE
{ PT_DESKTOP = 0x00000000,
PT_DRIVE = 0x00000001,
PT_FOLDER = 0x00000002,
PT_VALUE = 0x00000004,
PT_MYCOMP = 0x00000001,
PT_CONTROL = 0x00000002,
PT_RECYCLER =0x00000004,
PT_DRIVE = 0x00000008,
PT_FOLDER = 0x00000010,
PT_VALUE = 0x00000020,
PT_TEXT = PT_FOLDER | PT_VALUE
} PIDLTYPE;
@ -78,8 +140,9 @@ typedef struct tagPIDLDATA
}PIDLDATA, FAR *LPPIDLDATA;
typedef struct pidlmgr pidlmgr,*LPPIDLMGR;
typedef struct PidlMgr_VTable {
STDMETHOD_(LPITEMIDLIST, CreateDesktop) (THIS);
typedef struct PidlMgr_VTable
{ STDMETHOD_(LPITEMIDLIST, CreateDesktop) (THIS);
STDMETHOD_(LPITEMIDLIST, CreateMyComputer) (THIS);
STDMETHOD_(LPITEMIDLIST, CreateDrive) (THIS_ LPCSTR);
STDMETHOD_(LPITEMIDLIST, CreateFolder) (THIS_ LPCSTR);
STDMETHOD_(LPITEMIDLIST, CreateValue) (THIS_ LPCSTR);
@ -92,6 +155,7 @@ typedef struct PidlMgr_VTable {
STDMETHOD_(LPITEMIDLIST, GetLastItem) (THIS_ LPCITEMIDLIST);
STDMETHOD_(DWORD, GetItemText) (THIS_ LPCITEMIDLIST, LPSTR, UINT16);
STDMETHOD_(BOOL32, IsDesktop) (THIS_ LPCITEMIDLIST);
STDMETHOD_(BOOL32, IsMyComputer) (THIS_ LPCITEMIDLIST);
STDMETHOD_(BOOL32, IsDrive) (THIS_ LPCITEMIDLIST);
STDMETHOD_(BOOL32, IsFolder) (THIS_ LPCITEMIDLIST);
STDMETHOD_(BOOL32, IsValue) (THIS_ LPCITEMIDLIST);
@ -114,8 +178,8 @@ typedef struct PidlMgr_VTable {
} *LPPIDLMGR_VTABLE,PidlMgr_VTable;
struct pidlmgr {
LPPIDLMGR_VTABLE lpvtbl;
struct pidlmgr
{ LPPIDLMGR_VTABLE lpvtbl;
};
#ifdef __WINE__
extern LPPIDLMGR PidlMgr_Constructor();
@ -174,18 +238,16 @@ struct IEnumIDList {
/* IShellFolder::GetDisplayNameOf/SetNameOf uFlags */
typedef enum
{
SHGDN_NORMAL = 0, /* default (display purpose) */
SHGDN_INFOLDER = 1, /* displayed under a folder (relative)*/
SHGDN_FORPARSING = 0x8000 /* for ParseDisplayName or path */
{ SHGDN_NORMAL = 0, /* default (display purpose) */
SHGDN_INFOLDER = 1, /* displayed under a folder (relative)*/
SHGDN_FORPARSING = 0x8000 /* for ParseDisplayName or path */
} SHGNO;
/* IShellFolder::EnumObjects */
typedef enum tagSHCONTF
{
SHCONTF_FOLDERS = 32, /* for shell browser */
SHCONTF_NONFOLDERS = 64, /* for default view */
SHCONTF_INCLUDEHIDDEN = 128 /* for hidden/system objects */
{ SHCONTF_FOLDERS = 32, /* for shell browser */
SHCONTF_NONFOLDERS = 64, /* for default view */
SHCONTF_INCLUDEHIDDEN = 128 /* for hidden/system objects */
} SHCONTF;
/* from oleidl.h */
@ -225,7 +287,7 @@ typedef struct IShellFolder_VTable {
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/* *** IPersist Folder methods *** */
STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST pidl) PURE;
/* STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST pidl) PURE; */
/* *** IShellFolder methods *** */
STDMETHOD(ParseDisplayName) (THIS_ HWND32 hwndOwner,
LPBC pbcReserved, LPOLESTR32 lpszDisplayName,
@ -258,7 +320,7 @@ struct tagSHELLFOLDER {
LPITEMIDLIST mpidlNSRoot;
LPSHELLFOLDER mpSFParent;
};
extern LPSHELLFOLDER pdesktopfolder;
#undef THIS
/****************************************************************************
@ -333,9 +395,6 @@ extern LPSHELLLINK IShellLink_Constructor();
extern LPENUMIDLIST IEnumIDList_Constructor(LPCSTR,DWORD,HRESULT*);
#endif
DWORD WINAPI SHELL32_DllGetClassObject(LPCLSID,REFIID,LPVOID*);
/****************************************************************************
* SHBrowseForFolder API
*/
@ -393,10 +452,9 @@ typedef struct tagBROWSEINFO32W {
#define BFFM_SETSELECTIONW (WM_USER+103)
#define BFFM_SETSTATUSTEXTW (WM_USER+104)
LPITEMIDLIST WINAPI SHBrowseForFolder32A(LPBROWSEINFO32A lpbi);
/*
LPITEMIDLIST WINAPI SHBrowseForFolder32W(LPBROWSEINFO32W lpbi);
/*
#ifdef UNICODE
#define SHBrowseForFolder SHBrowseForFolderW
#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW
@ -412,6 +470,41 @@ LPITEMIDLIST WINAPI SHBrowseForFolder32W(LPBROWSEINFO32W lpbi);
#endif
*/
/****************************************************************************
* shlview structures
*/
typedef HRESULT(CALLBACK *SHELLVIEWPROC)(DWORD dwUserParam,LPSHELLFOLDER psf,HWND32 hwnd,UINT32 uMsg,UINT32 wParam,LPARAM lParam);
/* NF valid values for the "viewmode" item of the SHELLTEMPLATE*/
#define NF_INHERITVIEW 0x0000
#define NF_LOCALVIEW 0x0001
typedef struct _SHELLVIEWDATA // idl
{ DWORD dwSize;
LPSHELLFOLDER pShellFolder;
DWORD dwUserParam;
LPCITEMIDLIST pidl;
DWORD v3; // always 0
SHELLVIEWPROC pCallBack;
DWORD viewmode; // NF_* enum
} SHELLVIEWDATA, * LPSHELLVIEWDATA;
/****************************************************************************
* functions
*/
DWORD WINAPI ILGetSize(LPITEMIDLIST iil);
DWORD WINAPI SHAddToRecentDocs(UINT32 uFlags, LPCVOID pv);
LPVOID WINAPI SHAlloc(DWORD len);
LPITEMIDLIST WINAPI SHBrowseForFolder32A(LPBROWSEINFO32A lpbi);
/*LPITEMIDLIST WINAPI SHBrowseForFolder32W(LPBROWSEINFO32W lpbi);*/
DWORD WINAPI SHChangeNotifyRegister(HWND32 hwnd,LONG events1,LONG events2,DWORD msg,int count,IDSTRUCT *idlist);
DWORD WINAPI SHELL32_DllGetClassObject(LPCLSID,REFIID,LPVOID*);
DWORD WINAPI SHFileOperation32(LPSHFILEOPSTRUCT32 lpFileOp);
LPSTR WINAPI PathAddBackslash(LPSTR path);
LPSTR WINAPI PathRemoveBlanks(LPSTR str);
#undef PURE
#undef FAR
#undef THIS

View File

@ -51,6 +51,7 @@ typedef struct tagTOOLBAR_INFO
HWND32 hwndNotify; /* handle to the window that gets notifications */
BOOL32 bTransparent; /* background transparency flag */
BOOL32 bAutoSize;
DWORD dwExStyle; /* extended toolbar style */
COLORREF clrInsertMark; /* insert mark color */

View File

@ -18,18 +18,28 @@ typedef struct tagTTTOOL_INFO
LPSTR lpszText;
LPARAM lParam;
} TTTOOL_INFO;
typedef struct tagTOOLTIPS_INFO
{
CHAR szTipText[INFOTIPSIZE];
BOOL32 bActive;
UINT32 uNumTools;
COLORREF clrBk;
COLORREF clrText;
HFONT32 hFont;
INT32 iMaxTipWidth;
INT32 iCurrentTool;
INT32 nMaxTipWidth;
INT32 nTool;
INT32 nOldTool;
INT32 nCurrentTool;
INT32 nAutomaticTime;
INT32 nReshowTime;
INT32 nAutoPopTime;
INT32 nInitialTime;
RECT32 rcMargin;
TTTOOL_INFO *tools;
} TOOLTIPS_INFO;

View File

@ -9,7 +9,12 @@
typedef struct tagTREEVIEW_INFO
{
UINT32 uDummy; /* this is just a dummy to keep the compiler happy */
COLORREF clrBk;
COLORREF clrText;
HIMAGELIST himlNormal;
HIMAGELIST himlState;
} TREEVIEW_INFO;

25
include/ts_xf86dga.h Normal file
View File

@ -0,0 +1,25 @@
/*
* Thread safe wrappers around xf86dga calls.
* Always include this file instead of <X11/xf86dga.h>.
* This file was generated automatically by tools/make_X11wrappers
*
* Copyright 1998 Kristian Nielsen
*/
#ifndef __WINE_TSXF86DGA_H
#define __WINE_TSXF86DGA_H
#include <X11/Xlib.h>
#include <X11/extensions/xf86dga.h>
extern Bool TSXF86DGAQueryVersion(Display*,int*,int*);
extern Bool TSXF86DGAQueryExtension(Display*,int*,int*);
extern Status TSXF86DGAGetVideo(Display*,int,char**,int*,int*,int*);
extern Status TSXF86DGADirectVideo(Display*,int,int);
extern Status TSXF86DGAGetViewPortSize(Display*,int,int*,int*);
extern Status TSXF86DGASetViewPort(Display*,int,int,int);
extern Status TSXF86DGAInstallColormap(Display*,int,Colormap);
extern Status TSXF86DGAQueryDirectVideo(Display*,int,int*);
extern Status TSXF86DGAViewPortChanged(Display*,int,int);
#endif /* __WINE_TSXF86DGA_H */

View File

@ -83,7 +83,6 @@ extern int TSXGetKeyboardControl(Display*, XKeyboardState*);
extern int TSXGetScreenSaver(Display*, int*, int*, int*, int*);
extern int TSXGetWindowProperty(Display*, Window, Atom, long, long, int, Atom, Atom*, int*, unsigned long*, unsigned long*, unsigned char**);
extern int TSXGetWindowAttributes(Display*, Window, XWindowAttributes*);
extern int TSXGrabPointer(Display*, Window, int, unsigned int, int, int, Window, Cursor, Time);
extern int TSXGrabServer(Display*);
extern int TSXInstallColormap(Display*, Colormap);
extern KeyCode TSXKeysymToKeycode(Display*, KeySym);
@ -115,12 +114,12 @@ extern int TSXSetLineAttributes(Display*, GC, unsigned int, int, int, int);
extern int TSXSetScreenSaver(Display*, int, int, int, int);
extern int TSXSetSelectionOwner(Display*, Atom, Window, Time);
extern int TSXSetSubwindowMode(Display*, GC, int);
extern int TSXSetWindowColormap(Display*, Window, Colormap);
extern int TSXStoreColor(Display*, Colormap, XColor*);
extern int TSXStoreName(Display*, Window, const char*);
extern int TSXSync(Display*, int);
extern int TSXTextExtents(XFontStruct*, const char*, int, int*, int*, int*, XCharStruct*);
extern int TSXTextWidth(XFontStruct*, const char*, int);
extern int TSXUngrabPointer(Display*, Time);
extern int TSXUngrabServer(Display*);
extern int TSXUninstallColormap(Display*, Colormap);
extern int TSXUnmapWindow(Display*, Window);

View File

@ -1 +1 @@
#define WINE_RELEASE_INFO "Wine release 980712"
#define WINE_RELEASE_INFO "Wine release 980726"

View File

@ -5520,6 +5520,12 @@ DECL_WINELIB_TYPE_AW(LPDEVMODE)
#define DM_COLOR 0x00000800L
#define DM_DUPLEX 0x00001000L
#define DM_BITSPERPEL 0x00040000L
#define DM_PELSWIDTH 0x00080000L
#define DM_PELSHEIGHT 0x00100000L
#define DM_DISPLAYFLAGS 0x00200000L
#define DM_DISPLAYFREQUENCY 0x00400000L
/* etc.... */
#define DMORIENT_PORTRAIT 1
@ -5567,6 +5573,16 @@ typedef struct _PRINTER_DEFAULTS32W {
DECL_WINELIB_TYPE_AW(PRINTER_DEFAULTS)
DECL_WINELIB_TYPE_AW(LPPRINTER_DEFAULTS)
/* ChangeDisplaySettings return codes */
#define DISP_CHANGE_SUCCESSFUL 0
#define DISP_CHANGE_RESTART 1
#define DISP_CHANGE_FAILED (-1)
#define DISP_CHANGE_BADMODE (-2)
#define DISP_CHANGE_NOTUPDATED (-3)
#define DISP_CHANGE_BADFLAGS (-4)
typedef struct _SYSTEM_POWER_STATUS
{
BOOL16 ACLineStatus;
@ -6520,6 +6536,7 @@ DWORD WINAPI GetFullPathName32W(LPCWSTR,DWORD,LPWSTR,LPWSTR*);
#define GetFullPathName WINELIB_NAME_AW(GetFullPathName)
INT32 WINAPI GetGraphicsMode(HDC32);
BOOL32 WINAPI GetHandleInformation(HANDLE32,LPDWORD);
BOOL32 WINAPI GetIconInfo(HICON32,LPICONINFO);
DWORD WINAPI GetLargestConsoleWindowSize(HANDLE32);
VOID WINAPI GetLocalTime(LPSYSTEMTIME);
DWORD WINAPI GetLogicalDrives(void);

View File

@ -213,10 +213,13 @@ BOOL32 NE_LoadSegment( NE_MODULE *pModule, WORD segnum )
*((BYTE *)pModule + pModule->name_table),
(char *)pModule + pModule->name_table + 1 );
else
WARN(module, "No handler for %.*s.%d, setting to 0:0\n",
{
ERR(fixup, "No handler for %.*s.%d, setting to 0xdeadbeef\n",
*((BYTE *)pTarget + pTarget->name_table),
(char *)pTarget + pTarget->name_table + 1,
ordinal );
address = 0xdeadbeef;
}
}
if (TRACE_ON(fixup))
{
@ -241,10 +244,11 @@ BOOL32 NE_LoadSegment( NE_MODULE *pModule, WORD segnum )
if (ERR_ON(fixup) && !address)
{
NE_MODULE *pTarget = NE_GetPtr( module );
ERR(fixup, "Warning: no handler for %.*s.%s, setting to 0:0\n",
ERR(fixup, "Warning: no handler for %.*s.%s, setting to 0xdeadbeef\n",
*((BYTE *)pTarget + pTarget->name_table),
(char *)pTarget + pTarget->name_table + 1, func_name );
}
if (!address) address = 0xdeadbeef;
if (TRACE_ON(fixup))
{
NE_MODULE *pTarget = NE_GetPtr( module );

View File

@ -310,22 +310,24 @@ DWORD fixup_imports (PDB32 *process,WINE_MODREF *wm)
int ordinal = IMAGE_ORDINAL(import_list->u1.Ordinal);
TRACE(win32, "--- Ordinal %s,%d\n", name, ordinal);
thunk_list->u1.Function=(LPDWORD)MODULE_GetProcAddress32(
thunk_list->u1.Function=MODULE_GetProcAddress32(
process, hImpModule, (LPCSTR)ordinal
);
if (!thunk_list->u1.Function) {
ERR(win32,"No implementation for %s.%d, setting to NULL\n",
ERR(win32,"No implementation for %s.%d, setting to 0xdeadbeef\n",
name, ordinal);
thunk_list->u1.Function = (FARPROC32)0xdeadbeef;
}
} else { /* import by name */
pe_name = (LPIMAGE_IMPORT_BY_NAME)RVA(import_list->u1.AddressOfData);
TRACE(win32, "--- %s %s.%d\n", pe_name->Name, name, pe_name->Hint);
thunk_list->u1.Function=(LPDWORD)MODULE_GetProcAddress32(
thunk_list->u1.Function=MODULE_GetProcAddress32(
process, hImpModule, pe_name->Name
);
if (!thunk_list->u1.Function) {
ERR(win32,"No implementation for %s.%d(%s), setting to NULL\n",
ERR(win32,"No implementation for %s.%d(%s), setting to 0xdeadbeef\n",
name,pe_name->Hint,pe_name->Name);
thunk_list->u1.Function = (FARPROC32)0xdeadbeef;
}
}
import_list++;
@ -340,23 +342,25 @@ DWORD fixup_imports (PDB32 *process,WINE_MODREF *wm)
int ordinal = IMAGE_ORDINAL(thunk_list->u1.Ordinal);
TRACE(win32,"--- Ordinal %s.%d\n",name,ordinal);
thunk_list->u1.Function=(LPDWORD)MODULE_GetProcAddress32(
thunk_list->u1.Function=MODULE_GetProcAddress32(
process, hImpModule, (LPCSTR) ordinal
);
if (!thunk_list->u1.Function) {
ERR(win32, "No implementation for %s.%d, setting to NULL\n",
ERR(win32, "No implementation for %s.%d, setting to 0xdeadbeef\n",
name,ordinal);
thunk_list->u1.Function = (FARPROC32)0xdeadbeef;
}
} else {
pe_name=(LPIMAGE_IMPORT_BY_NAME) RVA(thunk_list->u1.AddressOfData);
TRACE(win32,"--- %s %s.%d\n",
pe_name->Name,name,pe_name->Hint);
thunk_list->u1.Function=(LPDWORD)MODULE_GetProcAddress32(
thunk_list->u1.Function=MODULE_GetProcAddress32(
process, hImpModule, pe_name->Name
);
if (!thunk_list->u1.Function) {
ERR(win32, "No implementation for %s.%d, setting to NULL\n",
ERR(win32, "No implementation for %s.%d, setting to 0xdeadbeef\n",
name, pe_name->Hint);
thunk_list->u1.Function = (FARPROC32)0xdeadbeef;
}
}
thunk_list++;

View File

@ -179,6 +179,8 @@ void SELECTOR_FreeBlock( WORD sel, WORD count )
WARN(selector, "Freeing %%fs selector (%04x), not good.\n", fs );
SET_FS( 0 );
}
fs = THREAD_Current()->saved_fs;
if ((fs >= sel) && (fs < nextsel)) THREAD_Current()->saved_fs = 0;
GET_GS(gs);
if ((gs >= sel) && (gs < nextsel)) SET_GS( 0 );
}

View File

@ -475,8 +475,9 @@ void WINAPI ASPI_DOS_func(DWORD srb)
UnMapLS(spSRB);
}
void ASPI_DOS_HandleInt(CONTEXT *context)
/* returns a real mode call address to ASPI_DOS_func() */
void ASPI_DOS_HandleInt(CONTEXT *context)
{
#ifdef linux
FARPROC16 DOS_func;
@ -497,3 +498,19 @@ void ASPI_DOS_HandleInt(CONTEXT *context)
SET_CFLAG(context);
#endif
}
/*******************************************************************
* GetASPI32SupportInfo [WNASPI32.0]
*
* Checks if the ASPI subsystem is initialized correctly.
*
* RETURNS
* HIWORD: 0.
* HIBYTE of LOWORD: status (SS_COMP or SS_FAILED_INIT)
* LOBYTE of LOWORD: # of host adapters.
*/
DWORD WINAPI GetASPI32SupportInfo()
{
return (SS_COMP << 8) | 1; /* FIXME: get # of host adapters installed */
}

View File

@ -1447,7 +1447,13 @@ BOOL16 WINAPI PrintDlg16( SEGPTR printdlg )
BOOL32 WINAPI PrintDlg32A( LPPRINTDLG32A printdlg )
{
FIXME(commdlg, "empty stub\n" );
return FALSE;
/* Altough returning FALSE is theoricaly the right thing
* most programs check for a printer at startup, and if
* none is found popup PrintDlg32A(), if it fails the program
* terminates; by returning TRUE the programs can still run
* as long as no printer related stuff is used
*/
return TRUE;
}
@ -3631,7 +3637,7 @@ LRESULT WINAPI FormatCharDlgProc32W(HWND32 hDlg, UINT32 uMsg, WPARAM32 wParam,
}
static BOOL32 Commdlg_GetFileName32A( BOOL16 (*dofunction)(),
static BOOL32 Commdlg_GetFileName32A( BOOL16 (CALLBACK *dofunction)(SEGPTR x),
LPOPENFILENAME32A ofn )
{
BOOL16 ret;
@ -3661,8 +3667,8 @@ static BOOL32 Commdlg_GetFileName32A( BOOL16 (*dofunction)(),
s = (LPSTR)ofn->lpstrCustomFilter;
while (*s)
s = s+strlen(s)+1;
x = SEGPTR_ALLOC(s-ofn->lpstrCustomFilter);
s++;
x = SEGPTR_ALLOC(s-ofn->lpstrCustomFilter);
memcpy(x,ofn->lpstrCustomFilter,s-ofn->lpstrCustomFilter);
ofn16->lpstrCustomFilter = SEGPTR_GET(x);
}
@ -3721,7 +3727,7 @@ static BOOL32 Commdlg_GetFileName32A( BOOL16 (*dofunction)(),
return ret;
}
static BOOL32 Commdlg_GetFileName32W( BOOL16 (*dofunction)(),
static BOOL32 Commdlg_GetFileName32W( BOOL16 (CALLBACK *dofunction)(SEGPTR x),
LPOPENFILENAME32W ofn )
{
BOOL16 ret;
@ -3830,7 +3836,7 @@ static BOOL32 Commdlg_GetFileName32W( BOOL16 (*dofunction)(),
*/
BOOL32 WINAPI GetOpenFileName32A( LPOPENFILENAME32A ofn )
{
BOOL16 (WINAPI * dofunction)(SEGPTR ofn16) = GetOpenFileName16;
BOOL16 (CALLBACK * dofunction)(SEGPTR ofn16) = GetOpenFileName16;
return Commdlg_GetFileName32A(dofunction,ofn);
}
@ -3839,7 +3845,7 @@ BOOL32 WINAPI GetOpenFileName32A( LPOPENFILENAME32A ofn )
*/
BOOL32 WINAPI GetOpenFileName32W( LPOPENFILENAME32W ofn )
{
BOOL16 (WINAPI * dofunction)(SEGPTR ofn16) = GetOpenFileName16;
BOOL16 (CALLBACK * dofunction)(SEGPTR ofn16) = GetOpenFileName16;
return Commdlg_GetFileName32W(dofunction,ofn);
}
@ -3848,7 +3854,7 @@ BOOL32 WINAPI GetOpenFileName32W( LPOPENFILENAME32W ofn )
*/
BOOL32 WINAPI GetSaveFileName32A( LPOPENFILENAME32A ofn )
{
BOOL16 (WINAPI * dofunction)(SEGPTR ofn16) = GetSaveFileName16;
BOOL16 (CALLBACK * dofunction)(SEGPTR ofn16) = GetSaveFileName16;
return Commdlg_GetFileName32A(dofunction,ofn);
}
@ -3857,7 +3863,7 @@ BOOL32 WINAPI GetSaveFileName32A( LPOPENFILENAME32A ofn )
*/
BOOL32 WINAPI GetSaveFileName32W( LPOPENFILENAME32W ofn )
{
BOOL16 (WINAPI * dofunction)(SEGPTR ofn16) = GetSaveFileName16;
BOOL16 (CALLBACK * dofunction)(SEGPTR ofn16) = GetSaveFileName16;
return Commdlg_GetFileName32W(dofunction,ofn);
}

View File

@ -182,4 +182,3 @@ void debug_dumpstr (LPCSTR s)
fputc ('"', stderr);
}
/* ---------------------------------------------------------------------- */

View File

@ -30,9 +30,7 @@
* an empty structure. It's just to keep compatibility.
*/
#define __WINE_IMAGELIST_C
/* This must be defined until "GetIconInfo" is not fully implemented. */
#define __GET_ICON_INFO_HACK__
#include "windows.h"
#include "compobj.h"
@ -41,10 +39,6 @@
#include "commctrl.h"
#include "debug.h"
#ifdef __GET_ICON_INFO_HACK__
#include "bitmap.h"
#endif
#define _MAX(a,b) (((a)>(b))?(a):(b))
#define _MIN(a,b) (((a)>(b))?(b):(a))
@ -112,7 +106,7 @@ IMAGELIST_InternalExpandBitmaps (HIMAGELIST himl, INT32 nImageCount)
if (himl->hbmMask) {
hbmNewBitmap =
CreateBitmap32 (nNewWidth, himl->cy, 1, himl->uBitsPixel, NULL);
CreateBitmap32 (nNewWidth, himl->cy, 1, 1, NULL);
if (hbmNewBitmap == 0)
ERR (imagelist, "creating new mask bitmap!");
@ -438,7 +432,7 @@ ImageList_Copy (HIMAGELIST himlDst, INT32 iDst, HIMAGELIST himlSrc,
hbmTempImage = CreateBitmap32 (himlSrc->cx, himlSrc->cy, 1,
himlSrc->uBitsPixel, NULL);
hbmTempMask = CreateBitmap32 (himlSrc->cx, himlSrc->cy, 1,
himlSrc->uBitsPixel, NULL);
1, NULL);
/* copy (and stretch) destination to temporary bitmaps.(save) */
/* image */
@ -546,6 +540,8 @@ ImageList_Create (INT32 cx, INT32 cy, UINT32 flags,
{0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA,
0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA, 0x5555, 0xAAAA};
TRACE (imagelist, "(%d %d 0x%x %d %d)\n", cx, cy, flags, cInitial, cGrow);
himl = (HIMAGELIST)LocalAlloc32 (LMEM_FIXED | LMEM_ZEROINIT,
sizeof(struct _IMAGELIST));
if (!himl)
@ -579,7 +575,7 @@ ImageList_Create (INT32 cx, INT32 cy, UINT32 flags,
if (himl->flags & ILC_MASK) {
himl->hbmMask = CreateBitmap32 (himl->cx * himl->cMaxImage, himl->cy,
1, himl->uBitsPixel, NULL);
1, 1, NULL);
if (himl->hbmMask == 0) {
ERR(imagelist, "Error creating mask bitmap!\n");
if (himl->hbmImage)
@ -1242,7 +1238,7 @@ ImageList_GetIcon (HIMAGELIST himl, INT32 i, UINT32 fStyle)
ii.xHotspot = 0;
ii.yHotspot = 0;
ii.hbmMask = CreateBitmap32 (nWidth, nHeight, 1, 1, NULL);
ii.hbmColor = CreateBitmap32 (nWidth, nHeight, 1, 1, NULL);
ii.hbmColor = CreateBitmap32 (nWidth, nHeight, 1, himl->uBitsPixel, NULL);
hdc = CreateCompatibleDC32(0);
@ -1431,36 +1427,16 @@ ImageList_LoadImage32A (HINSTANCE32 hi, LPCSTR lpbmp, INT32 cx, INT32 cGrow,
ImageList_AddMasked (himl, (HBITMAP32)handle, clrMask);
}
else if ((uType == IMAGE_ICON) || (uType == IMAGE_CURSOR)) {
#ifdef __GET_ICON_INFO_HACK__
HBITMAP32 hbmImage;
HBITMAP32 hbmMask;
CURSORICONINFO *ptr;
if (!(ptr = (CURSORICONINFO *)GlobalLock16(handle))) return (NULL);
hbmMask = CreateBitmap32 (ptr->nWidth, ptr->nHeight, 1, 1,
(char *)(ptr + 1));
hbmImage = CreateBitmap32 (ptr->nWidth, ptr->nHeight, ptr->bPlanes,
ptr->bBitsPerPixel,
(char *)(ptr + 1) + ptr->nHeight *
BITMAP_WIDTH_BYTES(ptr->nWidth, 1));
GlobalUnlock16 (handle);
himl = ImageList_Create (ptr->nWidth, ptr->nHeight,
ILC_MASK | ILC_COLOR, 1, cGrow);
ImageList_Add (himl, hbmImage, hbmMask);
DeleteObject32 (hbmImage);
DeleteObject32 (hbmMask);
#else
ICONINFO32 ii;
ICONINFO ii;
BITMAP32 bmp;
GetIconInfo (hIcon, &ii);
GetObject32A (ii->hbmColor, sizeof(BITMAP32), (LPVOID)&bmp);
GetIconInfo (handle, &ii);
GetObject32A (ii.hbmColor, sizeof(BITMAP32), (LPVOID)&bmp);
himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight,
ILC_MASK | ILC_COLOR, 1, cGrow);
ImageList_Add (himl, ii->hbmColor, ii->hbmMask);
DeleteObject32 (ii->hbmColor);
DeleteObject32 (ii->hbmMask);
#endif
ImageList_Add (himl, ii.hbmColor, ii.hbmMask);
DeleteObject32 (ii.hbmColor);
DeleteObject32 (ii.hbmMask);
}
DeleteObject32 (handle);
@ -1515,36 +1491,16 @@ ImageList_LoadImage32W (HINSTANCE32 hi, LPCWSTR lpbmp, INT32 cx, INT32 cGrow,
ImageList_AddMasked (himl, (HBITMAP32)handle, clrMask);
}
else if ((uType == IMAGE_ICON) || (uType == IMAGE_CURSOR)) {
#ifdef __GET_ICON_INFO_HACK__
HBITMAP32 hbmImage;
HBITMAP32 hbmMask;
CURSORICONINFO *ptr;
if (!(ptr = (CURSORICONINFO *)GlobalLock16(handle))) return (NULL);
hbmMask = CreateBitmap32 (ptr->nWidth, ptr->nHeight, 1, 1,
(char *)(ptr + 1));
hbmImage = CreateBitmap32 (ptr->nWidth, ptr->nHeight, ptr->bPlanes,
ptr->bBitsPerPixel,
(char *)(ptr + 1) + ptr->nHeight *
BITMAP_WIDTH_BYTES(ptr->nWidth, 1));
himl = ImageList_Create (ptr->nWidth, ptr->nHeight,
ILC_MASK | ILC_COLOR, 1, cGrow);
ImageList_Add (himl, hbmImage, hbmMask);
DeleteObject32 (hbmImage);
DeleteObject32 (hbmMask);
GlobalUnlock16 (handle);
#else
ICONINFO32 ii;
ICONINFO ii;
BITMAP32 bmp;
GetIconInfo (hIcon, &ii);
GetObject32A (ii->hbmMask, sizeof(BITMAP32), (LPVOID)&bmp);
GetIconInfo (handle, &ii);
GetObject32A (ii.hbmMask, sizeof(BITMAP32), (LPVOID)&bmp);
himl = ImageList_Create (bmp.bmWidth, bmp.bmHeight,
ILC_MASK | ILC_COLOR, 1, cGrow);
ImageList_Add (himl, ii->hbmColor, ii->hbmMask);
DeleteObject32 (ii->hbmColor);
DeleteObject32 (ii->hbmMask);
#endif
ImageList_Add (himl, ii.hbmColor, ii.hbmMask);
DeleteObject32 (ii.hbmColor);
DeleteObject32 (ii.hbmMask);
}
DeleteObject32 (handle);
@ -1747,7 +1703,7 @@ ImageList_Remove (HIMAGELIST himl, INT32 i)
DeleteObject32 (himl->hbmMask);
himl->hbmMask =
CreateBitmap32 (himl->cMaxImage * himl->cx, himl->cy,
1, himl->uBitsPixel, NULL);
1, 1, NULL);
}
}
else {
@ -1766,7 +1722,7 @@ ImageList_Remove (HIMAGELIST himl, INT32 i)
CreateBitmap32 (cxNew, himl->cy, 1, himl->uBitsPixel, NULL);
if (himl->hbmMask)
hbmNewMask = CreateBitmap32 (cxNew, himl->cy, 1, himl->uBitsPixel, NULL);
hbmNewMask = CreateBitmap32 (cxNew, himl->cy, 1, 1, NULL);
else
hbmNewMask = 0; /* Just to keep compiler happy! */
@ -1907,36 +1863,21 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT32 i, HICON32 hIcon)
{
HDC32 hdcImageList, hdcImage;
INT32 nIndex;
#ifdef __GET_ICON_INFO_HACK__
HBITMAP32 hbmImage;
HBITMAP32 hbmMask;
CURSORICONINFO *ptr;
#else
ICONINFO32 ii;
HBITMAP32 hbmOldSrc, hbmOldDst;
ICONINFO ii;
BITMAP32 bmp;
#endif
TRACE (imagelist, "(0x%x 0x%x 0x%x)\n", himl, i, hIcon);
TRACE (imagelist, "(0x%lx 0x%x 0x%x)\n", (DWORD)himl, i, hIcon);
if (himl == NULL) return (-1);
if ((i >= himl->cCurImage) || (i < -1)) return (-1);
#ifdef __GET_ICON_INFO_HACK__
if (!(ptr = (CURSORICONINFO *)GlobalLock16(hIcon))) return (-1);
hbmMask = CreateBitmap32 (ptr->nWidth, ptr->nHeight, 1, 1,
(char *)(ptr + 1));
if (!(hbmMask))
ERR (imagelist, " no mask!\n");
hbmImage = CreateBitmap32 (ptr->nWidth, ptr->nHeight, ptr->bPlanes,
ptr->bBitsPerPixel,
(char *)(ptr + 1) + ptr->nHeight *
BITMAP_WIDTH_BYTES(ptr->nWidth, 1));
if (!(hbmMask))
ERR (imagelist, " no image!\n");
#else
GetIconInfo (hIcon, &ii);
GetObject32A (ii->hbmMask, sizeof(BITMAP32), (LPVOID)&bmp);
#endif
if (ii.hbmMask == 0)
ERR (imagelist, "no mask!\n");
if (ii.hbmColor == 0)
ERR (imagelist, "no color!\n");
GetObject32A (ii.hbmMask, sizeof(BITMAP32), (LPVOID)&bmp);
if (i == -1) {
if (himl->cCurImage + 1 >= himl->cMaxImage)
@ -1949,42 +1890,42 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT32 i, HICON32 hIcon)
nIndex = i;
hdcImageList = CreateCompatibleDC32 (0);
hdcImage = CreateCompatibleDC32 (0);
TRACE (imagelist, "hdcImageList=0x%x!\n", hdcImageList);
if (hdcImageList == 0)
ERR (imagelist, "invalid hdcImageList!\n");
#ifdef __GET_ICON_INFO_HACK__
SelectObject32 (hdcImageList, himl->hbmImage);
SelectObject32 (hdcImage, hbmImage);
StretchBlt32 (hdcImageList, nIndex * himl->cx, 0, himl->cx, himl->cy,
hdcImage, 0, 0, ptr->nWidth, ptr->nHeight, SRCCOPY);
#else
SelectObject32 (hdcImage, ii->hbmColor);
hdcImage = CreateCompatibleDC32 (0);
TRACE (imagelist, "hdcImage=0x%x!\n", hdcImage);
if (hdcImage == 0)
ERR (imagelist, "invalid hdcImage!\n");
hbmOldDst = SelectObject32 (hdcImageList, himl->hbmImage);
SetTextColor32( hdcImageList, RGB(0,0,0));
SetBkColor32( hdcImageList, RGB(255,255,255));
hbmOldSrc = SelectObject32 (hdcImage, ii.hbmColor);
StretchBlt32 (hdcImageList, nIndex * himl->cx, 0, himl->cx, himl->cy,
hdcImage, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
#endif
if (himl->hbmMask) {
#ifdef __GET_ICON_INFO_HACK__
SelectObject32 (hdcImageList, himl->hbmMask);
SelectObject32 (hdcImage, hbmMask);
StretchBlt32 (hdcImageList, nIndex * himl->cx, 0, himl->cx, himl->cy,
hdcImage, 0, 0, ptr->nWidth, ptr->nHeight, SRCCOPY);
#else
SelectObject32 (hdcImage, ii->hbmMask);
SelectObject32 (hdcImage, ii.hbmMask);
StretchBlt32 (hdcImageList, nIndex * himl->cx, 0, himl->cx, himl->cy,
hdcImage, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
#endif
}
DeleteDC32 (hdcImageList);
DeleteDC32 (hdcImage);
#ifdef __GET_ICON_INFO_HACK__
DeleteObject32 (hbmImage);
DeleteObject32 (hbmMask);
GlobalUnlock16 (hIcon);
#else
DeleteObject32 (ii->hbmColor);
DeleteObject32 (ii->hbmMask);
#endif
SelectObject32 (hdcImage, hbmOldSrc);
SelectObject32 (hdcImageList, hbmOldDst);
if (hdcImageList)
DeleteDC32 (hdcImageList);
if (hdcImage)
DeleteDC32 (hdcImage);
// FIXME (imagelist, "deleting hbmColor!\n");
DeleteObject32 (ii.hbmColor);
// FIXME (imagelist, "deleted hbmColor!\n");
DeleteObject32 (ii.hbmMask);
return (nIndex);
}
@ -2084,7 +2025,7 @@ ImageList_SetDragCursorImage (HIMAGELIST himlDrag, INT32 iDrag,
BOOL32 WINAPI
ImageList_SetFilter (HIMAGELIST himl, INT32 i, DWORD dwFilter)
{
FIXME (imagelist, "(%p 0x%08x 0x%08x):empty stub!\n",
FIXME (imagelist, "(%p 0x%x 0x%lx):empty stub!\n",
himl, i, dwFilter);
return FALSE;
@ -2132,7 +2073,7 @@ ImageList_SetIconSize (HIMAGELIST himl, INT32 cx, INT32 cy)
DeleteObject32 (himl->hbmMask);
himl->hbmMask =
CreateBitmap32 (himl->cMaxImage * himl->cx, himl->cy,
1, himl->uBitsPixel, NULL);
1, 1, NULL);
}
return (TRUE);
@ -2189,7 +2130,7 @@ ImageList_SetImageCount (HIMAGELIST himl, INT32 iImageCount)
if (himl->hbmMask)
{
hbmNewBitmap = CreateBitmap32 (nNewCount * himl->cx, himl->cy,
1, himl->uBitsPixel, NULL);
1, 1, NULL);
if (hbmNewBitmap != 0)
{
SelectObject32 (hdcImageList, himl->hbmMask);

View File

@ -518,6 +518,7 @@ static void MAIN_CreateDesktop( int argc, char *argv[] )
/* Create window */
win_attr.background_pixel = BlackPixel(display,0);
win_attr.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask |
PointerMotionMask | ButtonPressMask |
ButtonReleaseMask | EnterWindowMask;
@ -526,7 +527,7 @@ static void MAIN_CreateDesktop( int argc, char *argv[] )
rootWindow = TSXCreateWindow( display, DefaultRootWindow(display),
x, y, width, height, 0,
CopyFromParent, InputOutput, CopyFromParent,
CWEventMask | CWCursor, &win_attr );
CWBackPixel | CWEventMask | CWCursor, &win_attr );
/* Set window manager properties */

View File

@ -83,7 +83,8 @@ BOOL32 WINAPI RtlFirstFreeAce(LPACL acl,LPACE_HEADER *x)
/**************************************************************************
* RtlAddAce [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlAddAce(LPACL acl,DWORD rev,DWORD xnrofaces,
DWORD /* NTSTATUS */
WINAPI RtlAddAce(LPACL acl,DWORD rev,DWORD xnrofaces,
LPACE_HEADER acestart,DWORD acelen)
{
LPACE_HEADER ace,targetace;
@ -108,7 +109,8 @@ DWORD /* NTSTATUS */ WINAPI RtlAddAce(LPACL acl,DWORD rev,DWORD xnrofaces,
/**************************************************************************
* RtlCreateSecurityDescriptor [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlCreateSecurityDescriptor(LPSECURITY_DESCRIPTOR lpsd,DWORD rev)
DWORD /* NTSTATUS */
WINAPI RtlCreateSecurityDescriptor(LPSECURITY_DESCRIPTOR lpsd,DWORD rev)
{
if (rev!=SECURITY_DESCRIPTOR_REVISION)
return STATUS_UNKNOWN_REVISION;
@ -120,7 +122,8 @@ DWORD /* NTSTATUS */ WINAPI RtlCreateSecurityDescriptor(LPSECURITY_DESCRIPTOR lp
/**************************************************************************
* RtlSetDaclSecurityDescriptor [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlSetDaclSecurityDescriptor ( LPSECURITY_DESCRIPTOR lpsd,BOOL32 daclpresent,LPACL dacl,BOOL32 dacldefaulted )
DWORD /* NTSTATUS */
WINAPI RtlSetDaclSecurityDescriptor ( LPSECURITY_DESCRIPTOR lpsd,BOOL32 daclpresent,LPACL dacl,BOOL32 dacldefaulted )
{
if (lpsd->Revision!=SECURITY_DESCRIPTOR_REVISION)
return STATUS_UNKNOWN_REVISION;
@ -142,7 +145,8 @@ DWORD /* NTSTATUS */ WINAPI RtlSetDaclSecurityDescriptor ( LPSECURITY_DESCRIPTOR
/**************************************************************************
* RtlSetSaclSecurityDescriptor [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlSetSaclSecurityDescriptor (
DWORD /* NTSTATUS */
WINAPI RtlSetSaclSecurityDescriptor (
LPSECURITY_DESCRIPTOR lpsd,BOOL32 saclpresent,LPACL sacl,BOOL32 sacldefaulted
)
{
@ -166,7 +170,8 @@ LPSECURITY_DESCRIPTOR lpsd,BOOL32 saclpresent,LPACL sacl,BOOL32 sacldefaulted
/**************************************************************************
* RtlSetOwnerSecurityDescriptor [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlSetOwnerSecurityDescriptor (LPSECURITY_DESCRIPTOR lpsd,LPSID owner,BOOL32 ownerdefaulted)
DWORD /* NTSTATUS */
WINAPI RtlSetOwnerSecurityDescriptor (LPSECURITY_DESCRIPTOR lpsd,LPSID owner,BOOL32 ownerdefaulted)
{
if (lpsd->Revision!=SECURITY_DESCRIPTOR_REVISION)
return STATUS_UNKNOWN_REVISION;
@ -184,7 +189,8 @@ DWORD /* NTSTATUS */ WINAPI RtlSetOwnerSecurityDescriptor (LPSECURITY_DESCRIPTOR
/**************************************************************************
* RtlSetOwnerSecurityDescriptor [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlSetGroupSecurityDescriptor (LPSECURITY_DESCRIPTOR lpsd,LPSID group,BOOL32 groupdefaulted)
DWORD /* NTSTATUS */
WINAPI RtlSetGroupSecurityDescriptor (LPSECURITY_DESCRIPTOR lpsd,LPSID group,BOOL32 groupdefaulted)
{
if (lpsd->Revision!=SECURITY_DESCRIPTOR_REVISION)
return STATUS_UNKNOWN_REVISION;
@ -255,7 +261,8 @@ DWORD WINAPI RtlCopySid(DWORD len,LPSID to,LPSID from)
/**************************************************************************
* RtlAnsiStringToUnicodeString [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlAnsiStringToUnicodeString(LPUNICODE_STRING uni,LPANSI_STRING ansi,BOOL32 doalloc)
DWORD /* NTSTATUS */
WINAPI RtlAnsiStringToUnicodeString(LPUNICODE_STRING uni,LPANSI_STRING ansi,BOOL32 doalloc)
{
DWORD unilen = (ansi->Length+1)*sizeof(WCHAR);
@ -277,7 +284,8 @@ DWORD /* NTSTATUS */ WINAPI RtlAnsiStringToUnicodeString(LPUNICODE_STRING uni,LP
/**************************************************************************
* RtlOemStringToUnicodeString [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlOemStringToUnicodeString(LPUNICODE_STRING uni,LPSTRING ansi,BOOL32 doalloc)
DWORD /* NTSTATUS */
WINAPI RtlOemStringToUnicodeString(LPUNICODE_STRING uni,LPSTRING ansi,BOOL32 doalloc)
{
DWORD unilen = (ansi->Length+1)*sizeof(WCHAR);
@ -299,7 +307,8 @@ DWORD /* NTSTATUS */ WINAPI RtlOemStringToUnicodeString(LPUNICODE_STRING uni,LPS
* RtlMultiByteToUnicodeN [NTDLL]
* FIXME: multibyte support
*/
DWORD /* NTSTATUS */ WINAPI RtlMultiByteToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen)
DWORD /* NTSTATUS */
WINAPI RtlMultiByteToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen)
{
DWORD len;
LPWSTR x;
@ -317,7 +326,8 @@ DWORD /* NTSTATUS */ WINAPI RtlMultiByteToUnicodeN(LPWSTR unistr,DWORD unilen,LP
/**************************************************************************
* RtlOemToUnicodeN [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlOemToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen)
DWORD /* NTSTATUS */
WINAPI RtlOemToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen)
{
DWORD len;
LPWSTR x;
@ -382,7 +392,8 @@ VOID WINAPI RtlFreeUnicodeString(LPUNICODE_STRING str)
/**************************************************************************
* RtlUnicodeToOemN [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlUnicodeToOemN(LPSTR oemstr,DWORD oemlen,LPDWORD reslen,LPWSTR unistr,DWORD unilen)
DWORD /* NTSTATUS */
WINAPI RtlUnicodeToOemN(LPSTR oemstr,DWORD oemlen,LPDWORD reslen,LPWSTR unistr,DWORD unilen)
{
DWORD len;
LPSTR x;
@ -400,7 +411,8 @@ DWORD /* NTSTATUS */ WINAPI RtlUnicodeToOemN(LPSTR oemstr,DWORD oemlen,LPDWORD r
/**************************************************************************
* RtlUnicodeStringToOemString [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlUnicodeStringToOemString(LPANSI_STRING oem,LPUNICODE_STRING uni,BOOL32 alloc)
DWORD /* NTSTATUS */
WINAPI RtlUnicodeStringToOemString(LPANSI_STRING oem,LPUNICODE_STRING uni,BOOL32 alloc)
{
if (alloc) {
oem->Buffer = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,uni->Length/2)+1;
@ -414,7 +426,8 @@ DWORD /* NTSTATUS */ WINAPI RtlUnicodeStringToOemString(LPANSI_STRING oem,LPUNIC
/**************************************************************************
* RtlUnicodeStringToAnsiString [NTDLL]
*/
DWORD /* NTSTATUS */ WINAPI RtlUnicodeStringToAnsiString(LPUNICODE_STRING uni,LPANSI_STRING oem,BOOL32 alloc)
DWORD /* NTSTATUS */
WINAPI RtlUnicodeStringToAnsiString(LPUNICODE_STRING uni,LPANSI_STRING oem,BOOL32 alloc)
{
if (alloc) {
oem->Buffer = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,uni->Length/2)+1;
@ -671,7 +684,8 @@ INT32 WINAPI RtlExtendedLargeIntegerDivide(
* Note: This even works, since gcc returns 64bit values in eax/edx just like
* the caller expects. However... The relay code won't grok this I think.
*/
long long /*LARGE_INTEGER*/ WINAPI RtlExtendedIntegerMultiply(
long long /*LARGE_INTEGER*/
WINAPI RtlExtendedIntegerMultiply(
LARGE_INTEGER factor1,INT32 factor2
) {
#if SIZEOF_LONG_LONG==8

View File

@ -1615,7 +1615,7 @@ DWORD WINAPI SHELL32_DllGetClassObject(REFCLSID rclsid,REFIID iid,LPVOID *ppv)
if(IsEqualCLSID(rclsid, &CLSID_ShellLink)) /*debug*/
TRACE(shell,"requested CLSID_ShellLink\n");
/* fixme: the IClassFactory_Constructor at the moment only
/* fixme: the IClassFactory_Constructor is at the moment only
for rclsid=CLSID_ShellDesktop, so we get the right Interface (jsch)*/
lpclf = IClassFactory_Constructor();
if(lpclf)
@ -1641,6 +1641,8 @@ DWORD WINAPI SHELL32_DllGetClassObject(REFCLSID rclsid,REFIID iid,LPVOID *ppv)
* RETURNS
* the interface to the shell desktop folder.
*
* FIXME
* the pdesktopfolder has to be released at the end (at dll unloading???)
*/
LPSHELLFOLDER pdesktopfolder=NULL;
@ -1648,23 +1650,28 @@ DWORD WINAPI SHGetDesktopFolder(LPSHELLFOLDER *shellfolder)
{ HRESULT hres = E_OUTOFMEMORY;
LPCLASSFACTORY lpclf;
TRACE(shell,"%p->(%p)\n",shellfolder,*shellfolder);
if (pdesktopfolder)
{ *shellfolder = pdesktopfolder;
hres = NOERROR;
{ hres = NOERROR;
}
else
{ lpclf = IClassFactory_Constructor();
else
{ lpclf = IClassFactory_Constructor();
/* fixme: the buildin IClassFactory_Constructor is at the moment only
for rclsid=CLSID_ShellDesktop, so we get the right Interface (jsch)*/
if(lpclf)
{ hres = lpclf->lpvtbl->fnCreateInstance(lpclf,NULL,(REFIID)&IID_IShellFolder, (void*)&pdesktopfolder);
lpclf->lpvtbl->fnRelease(lpclf);
}
}
if (pdesktopfolder)
{ *shellfolder = pdesktopfolder;
}
if (pdesktopfolder)
{ *shellfolder = pdesktopfolder;
pdesktopfolder->lpvtbl->fnAddRef(pdesktopfolder);
}
else
{ *shellfolder=NULL;
}
TRACE(shell,"-- %p->(%p)\n",shellfolder, *shellfolder);
return hres;
}
@ -1686,109 +1693,248 @@ DWORD WINAPI SHGetMalloc(LPMALLOC32 *lpmal)
/*************************************************************************
* SHGetSpecialFolderLocation [SHELL32.223]
* nFolder is a CSIDL_xxxxx.
* gets the folder locations from the registry and creates a pidl
* creates missing reg keys and directorys
*
* PARAMS
* hwndOwner [I]
* nFolder [I] CSIDL_xxxxx
* ppidl [O] PIDL of a special folder
*
* RETURNS
* returns the PIDL of a special folder
* HResult
*
* FIXME
* the path is every time x:\\windows\\desktop
* we should get the path's from the registry
* - look for "User Shell Folder" first
*
*/
HRESULT WINAPI SHGetSpecialFolderLocation(
HWND32 hwndOwner,
INT32 nFolder,
LPITEMIDLIST * ppidl)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITEMIDLIST * ppidl)
{ LPSHELLFOLDER shellfolder;
DWORD pchEaten;
CHAR pszTemp[256];
DWORD pchEaten,tpathlen=MAX_PATH,type,dwdisp,res;
CHAR pszTemp[256],buffer[256],tpath[MAX_PATH],npath[MAX_PATH];
LPWSTR lpszDisplayName = (LPWSTR)&pszTemp[0];
FIXME(shell,"(%04x,%d,%p),stub!\n", hwndOwner,nFolder,ppidl);
HKEY key;
LocalToWideChar32(lpszDisplayName, "x:\\windows\\desktop\\", 256);
if (SHGetDesktopFolder(&shellfolder)==S_OK)
{ shellfolder->lpvtbl->fnParseDisplayName(shellfolder,hwndOwner,
NULL,lpszDisplayName,&pchEaten,ppidl,NULL);
enum
{ FT_UNKNOWN= 0x00000000,
FT_DIR= 0x00000001,
FT_DESKTOP= 0x00000002
} tFolder;
TRACE(shell,"(%04x,%d,%p)\n", hwndOwner,nFolder,ppidl);
strcpy(buffer,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\");
res=RegCreateKeyEx32A(HKEY_CURRENT_USER,buffer,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&key,&dwdisp);
if (res)
{ ERR(shell,"Could not create key %s %08lx \n",buffer,res);
return E_OUTOFMEMORY;
}
tFolder=FT_DIR;
switch (nFolder)
{ case CSIDL_BITBUCKET:
TRACE (shell,"looking for Recyceler\n");
strcpy (buffer,"xxx"); /*not in the registry*/
TRACE (shell,"looking for Recycler\n");
tFolder=FT_UNKNOWN;
break;
case CSIDL_CONTROLS:
strcpy (buffer,"xxx"); /*virtual folder*/
TRACE (shell,"looking for Control\n");
tFolder=FT_UNKNOWN;
break;
case CSIDL_DESKTOP:
TRACE (shell,"looking for Desktop\n");
strcpy (buffer,"xxx"); /*virtual folder*/
TRACE (shell,"looking for Desktop\n");
tFolder=FT_DESKTOP;
break;
case CSIDL_DESKTOPDIRECTORY:
TRACE (shell,"looking for DeskDir\n");
strcpy (buffer,"Desktop");
break;
case CSIDL_DRIVES:
strcpy (buffer,"xxx"); /*virtual folder*/
TRACE (shell,"looking for Drives\n");
tFolder=FT_UNKNOWN;
break;
case CSIDL_FONTS:
TRACE (shell,"looking for Fonts\n");
strcpy (buffer,"Fonts");
break;
case CSIDL_NETHOOD:
TRACE (shell,"looking for Nethood\n");
strcpy (buffer,"NetHood");
break;
case CSIDL_NETWORK:
TRACE (shell,"looking for Network\n");
strcpy (buffer,"xxx"); /*virtual folder*/
TRACE (shell,"looking for Network\n");
tFolder=FT_UNKNOWN;
break;
case CSIDL_PERSONAL:
TRACE (shell,"looking for Personal\n");
strcpy (buffer,"Personal");
break;
case CSIDL_FAVORITES:
strcpy (buffer,"Favorites");
break;
case CSIDL_PRINTERS:
TRACE (shell,"looking for Printers\n");
strcpy (buffer,"PrintHood");
break;
case CSIDL_PROGRAMS:
TRACE (shell,"looking for Programms\n");
strcpy (buffer,"Programs");
break;
case CSIDL_RECENT:
TRACE (shell,"looking for Recent\n");
strcpy (buffer,"Recent");
break;
case CSIDL_SENDTO:
TRACE (shell,"looking for Sendto\n");
break;
strcpy (buffer,"SendTo");
break;
case CSIDL_STARTMENU:
TRACE (shell,"looking for Startmenu\n");
strcpy (buffer,"Start Menu");
break;
case CSIDL_STARTUP:
TRACE (shell,"looking for Startup\n");
strcpy (buffer,"Startup");
break;
case CSIDL_TEMPLATES:
TRACE (shell,"looking for Templates\n");
strcpy (buffer,"Templates");
break;
default:
ERR (shell,"unknown CSIDL\n");
tFolder=FT_UNKNOWN;
break;
}
TRACE(shell, "-- (new pidl %p)\n",*ppidl);
TRACE(shell,"Key=%s\n",buffer);
type=REG_SZ;
switch (tFolder)
{ case FT_DIR:
/* Directory: get the value from the registry, if its not there
create it and the directory*/
if (RegQueryValueEx32A(key,buffer,NULL,&type,tpath,&tpathlen))
{ GetWindowsDirectory32A(npath,MAX_PATH);
PathAddBackslash(npath);
switch (nFolder)
{ case CSIDL_DESKTOPDIRECTORY:
strcat (npath,"Desktop");
break;
case CSIDL_FONTS:
strcat (npath,"Fonts");
break;
case CSIDL_NETHOOD:
strcat (npath,"NetHood");
break;
case CSIDL_PERSONAL:
strcpy (npath,"C:\\Personal");
break;
case CSIDL_FAVORITES:
strcat (npath,"Favorites");
break;
case CSIDL_PRINTERS:
strcat (npath,"PrintHood");
break;
case CSIDL_PROGRAMS:
strcat (npath,"Start Menu");
CreateDirectory32A(npath,NULL);
strcat (npath,"\\Programs");
break;
case CSIDL_RECENT:
strcat (npath,"Recent");
break;
case CSIDL_SENDTO:
strcat (npath,"SendTo");
break;
case CSIDL_STARTMENU:
strcat (npath,"Start Menu");
break;
case CSIDL_STARTUP:
strcat (npath,"Start Menu");
CreateDirectory32A(npath,NULL);
strcat (npath,"\\Startup");
break;
case CSIDL_TEMPLATES:
strcat (npath,"Templates");
break;
default:
RegCloseKey(key);
return E_OUTOFMEMORY;
}
if (RegSetValueEx32A(key,buffer,0,REG_SZ,npath,sizeof(npath)+1))
{ ERR(shell,"could not create value %s\n",buffer);
RegCloseKey(key);
return E_OUTOFMEMORY;
}
TRACE(shell,"value %s=%s created\n",buffer,npath);
CreateDirectory32A(npath,NULL);
}
break;
case FT_DESKTOP:
strcpy (tpath,"Desktop");
break;
default:
RegCloseKey(key);
return E_OUTOFMEMORY;
break;
}
RegCloseKey(key);
TRACE(shell,"Value=%s\n",tpath);
LocalToWideChar32(lpszDisplayName, tpath, 256);
if (SHGetDesktopFolder(&shellfolder)==S_OK)
{ shellfolder->lpvtbl->fnParseDisplayName(shellfolder,hwndOwner, NULL,lpszDisplayName,&pchEaten,ppidl,NULL);
shellfolder->lpvtbl->fnRelease(shellfolder);
}
TRACE(shell, "-- (new pidl %p)\n",*ppidl);
return NOERROR;
}
/*************************************************************************
* SHGetPathFromIDList [SHELL32.221]
* returns the path from a passed PIDL.
* SHGetPathFromIDList32A [SHELL32.261][NT 4.0: SHELL32.220]
*
* NOTES
* exported by name
* FIXME
* fnGetDisplayNameOf can return different types of OLEString
*/
BOOL32 WINAPI SHGetPathFromIDList(LPCITEMIDLIST pidl,LPSTR pszPath)
{ STRRET lpName;
DWORD WINAPI SHGetPathFromIDList32A (
LPCITEMIDLIST pidl, /* [IN] pidl */
LPSTR pszPath) /* [OUT] path */
{ STRRET lpName;
LPSHELLFOLDER shellfolder;
TRACE(shell,"(pidl=%p,%p)\n",pidl,pszPath);
if (SHGetDesktopFolder(&shellfolder)==S_OK)
{ shellfolder->lpvtbl->fnGetDisplayNameOf(shellfolder,pidl,SHGDN_FORPARSING,&lpName);
shellfolder->lpvtbl->fnRelease(shellfolder);
}
WideCharToLocal32(pszPath, lpName.u.pOleStr, MAX_PATH);
/*WideCharToLocal32(pszPath, lpName.u.pOleStr, MAX_PATH);*/
strcpy(pszPath,lpName.u.cStr);
/* fixme free the olestring*/
TRACE(shell,"-- (%s)\n",pszPath);
return NOERROR;
}
/*************************************************************************
* SHGetPathFromIDList32W [SHELL32.262]
*
* NOTES
* exported by name
*/
DWORD WINAPI SHGetPathFromIDList32W (DWORD dwParam1,DWORD dwParam2)
{ FIXME (shell,"(0x%08lx,0x%08lx):stub.\n", dwParam1, dwParam2);
return 0;
}
/*************************************************************************
* SHGetPathFromIDList [SHELL32.221][NT 4.0: SHELL32.219]
*
* returns the path from a passed PIDL.
*/
BOOL32 WINAPI SHGetPathFromIDList(
LPCITEMIDLIST pidl, /* [IN] pidl */
LPSTR pszPath) /* [OUT] path */
{ TRACE(shell,"(pidl=%p,%p)\n",pidl,pszPath);
return SHGetPathFromIDList32A(pidl,pszPath);
}
/*************************************************************************
* SHHelpShortcuts_RunDLL [SHELL32.224]

View File

@ -32,15 +32,30 @@
/*************************************************************************
* SHChangeNotifyRegister [SHELL32.2]
* NOTES
* Idlist is an array of structures and Count specifies how many items in the array
* (usually just one I think).
*/
DWORD WINAPI
SHChangeNotifyRegister(HWND32 hwnd,DWORD x2,DWORD x3,DWORD x4,DWORD x5,DWORD x6) {
FIXME(shell,"(0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx):stub.\n",
hwnd,x2,x3,x4,x5,x6
);
SHChangeNotifyRegister(
HWND32 hwnd,
LONG events1,
LONG events2,
DWORD msg,
int count,
IDSTRUCT *idlist)
{ FIXME(shell,"(0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):stub.\n",
hwnd,events1,events2,msg,count,idlist);
return 0;
}
/*************************************************************************
* SHChangeNotifyDeregister [SHELL32.4]
*/
DWORD WINAPI
SHChangeNotifyDeregister(LONG x1,LONG x2)
{ FIXME(shell,"(0x%08lx,0x%08lx):stub.\n",x1,x2);
return 0;
}
/*************************************************************************
* ILGetDisplayName [SHELL32.15]
* get_path_from_itemlist(itemlist,path); ? not sure...
@ -67,6 +82,58 @@ LPSHITEMID WINAPI ILFindLastID(LPITEMIDLIST iil) {
}
return lastsii;
}
/*************************************************************************
* ILFindLastID [SHELL32.17]
* NOTES
* Creates a new list with the last tiem removed
*/
LPITEMIDLIST WINAPI ILRemoveLastID(LPCITEMIDLIST);
/*************************************************************************
* ILClone [SHELL32.18]
*
* NOTES
* dupicate an idlist
*/
LPITEMIDLIST WINAPI ILClone (LPITEMIDLIST iil) {
DWORD len;
LPITEMIDLIST newiil;
TRACE(shell,"%p\n",iil);
len = ILGetSize(iil);
newiil = (LPITEMIDLIST)SHAlloc(len);
if (newiil)
memcpy(newiil,iil,len);
return newiil;
}
/*************************************************************************
* ILCloneFirst [SHELL32.19]
*
* NOTES
* duplicates the first idlist of a complex pidl
*/
LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl);
/*************************************************************************
* ILCombine [SHELL32.25]
*
* NOTES
* Concatenates two complex idlists.
* The pidl is the first one, pidlsub the next one
* Does not destroy the passed in idlists!
*/
LPITEMIDLIST WINAPI ILCombine(LPITEMIDLIST iil1,LPITEMIDLIST iil2) {
DWORD len1,len2;
LPITEMIDLIST newiil;
TRACE(shell,"%p %p\n",iil1,iil2);
len1 = ILGetSize(iil1)-2;
len2 = ILGetSize(iil2);
newiil = SHAlloc(len1+len2);
memcpy(newiil,iil1,len1);
memcpy(((char*)newiil)+len1,iil2,len2);
return newiil;
}
/*************************************************************************
* PathIsRoot [SHELL32.29]
@ -125,16 +192,17 @@ LPSTR WINAPI PathFindExtension(LPSTR path) {
* NOTES
* append \ if there is none
*/
LPSTR WINAPI PathAddBackslash(LPSTR path) {
int len;
LPSTR WINAPI PathAddBackslash(LPSTR path)
{ int len;
TRACE(shell,"%p->%s\n",path,path);
len = lstrlen32A(path);
if (len && path[len-1]!='\\') {
path[len+0]='\\';
path[len+1]='\0';
return path+len+1;
} else
return path+len;
len = strlen(path);
if (len && path[len-1]!='\\')
{ path[len+0]='\\';
path[len+1]='\0';
return path+len+1;
}
else
return path+len;
}
/*************************************************************************
@ -143,20 +211,20 @@ LPSTR WINAPI PathAddBackslash(LPSTR path) {
* NOTES
* remove spaces from beginning and end of passed string
*/
LPSTR WINAPI PathRemoveBlanks(LPSTR str) {
LPSTR x = str;
TRACE(shell,"PathRemoveBlanks %s\n",str);
while (*x==' ') x++;
if (x!=str)
lstrcpy32A(str,x);
if (!*str)
return str;
x=str+strlen(str)-1;
while (*x==' ')
x--;
if (*x==' ')
*x='\0';
return x;
LPSTR WINAPI PathRemoveBlanks(LPSTR str)
{ LPSTR x = str;
TRACE(shell,"%s\n",str);
while (*x==' ') x++;
if (x!=str)
strcpy(str,x);
if (!*str)
return str;
x=str+strlen(str)-1;
while (*x==' ')
x--;
if (*x==' ')
*x='\0';
return x;
}
@ -168,7 +236,7 @@ LPSTR WINAPI PathRemoveBlanks(LPSTR str) {
*/
LPSTR WINAPI PathFindFilename(LPSTR fn) {
LPSTR basefn;
TRACE(shell,"PathFindFilename %s\n",fn);
TRACE(shell,"%s\n",fn);
basefn = fn;
while (fn[0]) {
if (((fn[0]=='\\') || (fn[0]==':')) && fn[1] && fn[1]!='\\')
@ -392,7 +460,19 @@ BOOL32 WINAPI Shell_GetImageList(LPDWORD x,LPDWORD y) {
void WINAPI Shell_GetCachedImageIndex(LPSTR x,DWORD y,DWORD z) {
FIXME(shell,"(%s,%08lx,%08lx):stub.\n",x,y,z);
}
/*************************************************************************
* SHShellFolderView_Message [SHELL32.73]
* NOTES
* Message SFVM_REARRANGE = 1
* This message gets sent when a column gets clicked to instruct the
* shell view to re-sort the item list. lParam identifies the column
* that was clicked.
*/
int WINAPI SHShellFolderView_Message(
HWND32 hwndCabinet, /* This hwnd defines the explorer cabinet window that contains the
shellview you need to communicate with*/
UINT32 uMsg, /* A parameter identifying the SFVM enum to perform */
LPARAM lParam);
/*************************************************************************
* SHCloneSpecialIDList [SHELL32.89]
*
@ -458,26 +538,38 @@ BOOL32 WINAPI PathYetAnotherMakeUniqueName(LPDWORD x,LPDWORD y) {
*
* NOTES
* exported by ordinal
*
*/
DWORD WINAPI
SHMapPIDLToSystemImageListIndex(DWORD x,DWORD y,DWORD z) {
FIXME(shell,"(%08lx,%08lx,%08lx):stub.\n",x,y,z);
SHMapPIDLToSystemImageListIndex(
DWORD x, /* pointer to an instance of IShellFolder */
DWORD y,
DWORD z)
{ FIXME(shell,"(%08lx,%08lx,%08lx):stub.\n",x,y,z);
return 0;
}
/*************************************************************************
* SHELL32_79 [SHELL32.79]
* create_directory_and_notify(...)
* OleStrToStrN [SHELL32.78]
*
* NOTES
* (isn't it StrToOleStrN ??? jsch)
* exported by ordinal
*/
DWORD WINAPI SHELL32_79(LPCSTR dir,LPVOID xvoid) {
TRACE(shell,"mkdir %s,%p\n",dir,xvoid);
if (!CreateDirectory32A(dir,xvoid))
return FALSE;
/* SHChangeNotify(8,1,dir,0); */
return TRUE;
BOOL32 WINAPI
OleStrToStrN (LPSTR lpMulti, INT32 nMulti, LPCWSTR lpWide, INT32 nWide) {
return WideCharToMultiByte (0, 0, lpWide, nWide,
lpMulti, nMulti, NULL, NULL);
}
/*************************************************************************
* StrToOleStrN [SHELL32.79]
*
* NOTES
* exported by ordinal
*/
BOOL32 WINAPI
StrToOleStrN (LPWSTR lpWide, INT32 nWide, LPCSTR lpMulti, INT32 nMulti) {
return MultiByteToWideChar (0, 0, lpMulti, nMulti, lpWide, nWide);
}
/*************************************************************************
@ -512,14 +604,21 @@ static GetClassPtr SH_find_moduleproc(LPSTR dllname,HMODULE32 *xhmod,
/*************************************************************************
*
*/
static DWORD SH_get_instance(REFCLSID clsid,LPSTR dllname,
LPVOID unknownouter,REFIID refiid,LPVOID inst
) {
GetClassPtr dllgetclassob;
static DWORD SH_get_instance(
REFCLSID clsid,
LPSTR dllname,
LPVOID unknownouter,
REFIID refiid,
LPVOID inst)
{ GetClassPtr dllgetclassob;
DWORD hres;
LPCLASSFACTORY classfac;
TRACE(shell,"%s\n",dllname);
char xclsid[50],xrefiid[50];
WINE_StringFromCLSID((LPCLSID)clsid,xclsid);
WINE_StringFromCLSID((LPCLSID)refiid,xrefiid);
TRACE(shell,"\n\tCLSID:%s,%s,%p,\n\tIID:%s,%p\n",
xclsid, dllname,unknownouter,xrefiid,inst);
dllgetclassob = SH_find_moduleproc(dllname,NULL,"DllGetClassObject");
if (!dllgetclassob)
@ -663,7 +762,8 @@ DWORD WINAPI SHRestricted (DWORD pol) {
* ILGetSize [SHELL32.152]
*
* NOTES
* exported by ordinal
* exported by ordinal
* Gets the byte size of an idlist including zero terminator
*/
DWORD WINAPI ILGetSize(LPITEMIDLIST iil) {
LPSHITEMID si;
@ -679,6 +779,16 @@ DWORD WINAPI ILGetSize(LPITEMIDLIST iil) {
}
return len;
}
/*************************************************************************
* ILAppend [SHELL32.154]
*
* NOTES
* Adds the single item to the idlist indicated by pidl.
* if bEnd is 0, adds the item to the front of the list,
* otherwise adds the item to the end.
* Destroys the passed in idlist!
*/
LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl,LPCITEMIDLIST item,BOOL32 bEnd);
/*************************************************************************
* PathGetExtension [SHELL32.158]
@ -736,36 +846,6 @@ LPVOID WINAPI SHAlloc(DWORD len) {
return (LPVOID)LocalAlloc32(len,LMEM_ZEROINIT); /* FIXME */
}
/*************************************************************************
* ILClone [SHELL32.18]
*
*/
LPITEMIDLIST WINAPI ILClone (LPITEMIDLIST iil) {
DWORD len;
LPITEMIDLIST newiil;
TRACE(shell,"%p\n",iil);
len = ILGetSize(iil);
newiil = (LPITEMIDLIST)SHAlloc(len);
if (newiil)
memcpy(newiil,iil,len);
return newiil;
}
/*************************************************************************
* ILCombine [SHELL32.25]
*
*/
LPITEMIDLIST WINAPI ILCombine(LPITEMIDLIST iil1,LPITEMIDLIST iil2) {
DWORD len1,len2;
LPITEMIDLIST newiil;
TRACE(shell,"%p %p\n",iil1,iil2);
len1 = ILGetSize(iil1)-2;
len2 = ILGetSize(iil2);
newiil = SHAlloc(len1+len2);
memcpy(newiil,iil1,len1);
memcpy(((char*)newiil)+len1,iil2,len2);
return newiil;
}
/*************************************************************************
* ILFree [SHELL32.155]
@ -893,3 +973,57 @@ SignalFileOpen (DWORD dwParam1)
return 0;
}
/*************************************************************************
* SHAddToRecentDocs [SHELL32.234]
*
* NOTES
* exported by name
*/
DWORD WINAPI SHAddToRecentDocs32 (
UINT32 uFlags, /* [IN] SHARD_PATH or SHARD_PIDL */
LPCVOID pv) /* [IN] string or pidl, NULL clears the list */
{ if (SHARD_PIDL==uFlags)
{ FIXME (shell,"(0x%08x,pidl=%p):stub.\n", uFlags,pv);
}
else
{ FIXME (shell,"(0x%08x,%s):stub.\n", uFlags,(char*)pv);
}
return 0;
}
/*************************************************************************
* SHFileOperation [SHELL32.242]
*
* NOTES
* exported by name
*/
DWORD WINAPI SHFileOperation32 (
LPSHFILEOPSTRUCT32 lpFileOp)
{ FIXME (shell,"(%p):stub.\n", lpFileOp);
return 1;
}
/*************************************************************************
* SHChangeNotify [SHELL32.239]
*
* NOTES
* exported by name
*/
DWORD WINAPI SHChangeNotify32 (
INT32 wEventId, /* [IN] flags that specifies the event*/
UINT32 uFlags, /* [IN] the meaning of dwItem[1|2]*/
LPCVOID dwItem1,
LPCVOID dwItem2)
{ FIXME (shell,"(0x%08x,0x%08ux,%p,%p):stub.\n", wEventId,uFlags,dwItem1,dwItem2);
return 0;
}
/*************************************************************************
* SHCreateShellFolderViewEx [SHELL32.174]
*
*/
HRESULT WINAPI SHCreateShellFolderViewEx32(
LPSHELLVIEWDATA psvcbi, /*[in ] shelltemplate struct*/
LPVOID* ppv) /*[out] IShellView pointer*/
{ FIXME (shell,"(%p,%p):stub.\n", psvcbi,ppv);
return 0;
}

View File

@ -36,14 +36,9 @@
#include "windows.h"
/* Parameters for windows/nonclient.c */
extern int NC_CaptionLeftNudge;
extern int NC_CaptionTopNudge;
extern int NC_SysControlNudge;
extern int NC_MaxControlNudge;
extern int NC_MinControlNudge;
extern UINT32 NC_CaptionTextFlags;
extern HBRUSH32 NC_WinHighlight95;
extern HBRUSH32 NC_WinShadow95;
/* Parameters for controls/menu.c */
extern UINT32 MENU_BarItemTopNudge;
@ -125,20 +120,11 @@ static int TWEAK_NonClientInit()
{
char key_value[2];
NC_CaptionLeftNudge =
PROFILE_GetWineIniInt("Tweak.Layout", "CaptionLeftNudge", 0);
NC_CaptionTopNudge =
PROFILE_GetWineIniInt("Tweak.Layout", "CaptionTopNudge", 0);
NC_SysControlNudge =
PROFILE_GetWineIniInt("Tweak.Layout", "SysControlNudge", 0);
NC_MaxControlNudge =
PROFILE_GetWineIniInt("Tweak.Layout", "MaxControlNudge", 0);
NC_MinControlNudge =
PROFILE_GetWineIniInt("Tweak.Layout", "MinControlNudge", 0);
NC_WinHighlight95 = CreateSolidBrush32(RGB(0xc0, 0xc0, 0xc0));
NC_WinShadow95 = CreateSolidBrush32(RGB(0x00, 0x00, 0x00));
NC_CaptionTextFlags = DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX;
PROFILE_GetWineIniString("Tweak.Layout", "CaptionAlignment",

View File

@ -47,7 +47,8 @@
#define FASYNC FIOASYNC
#endif
typedef struct /* async DNS op control struct */
/* async DNS op control struct */
typedef struct
{
ws_async_op* ws_aop;
char* buffer;
@ -263,7 +264,8 @@ HANDLER_DEF(WINSOCK_sigio)
/* ----------------------------------- getXbyY requests */
static ws_async_ctl async_ctl; /* child process control struct */
/* child process control struct */
static ws_async_ctl async_ctl;
static int aop_control(ws_async_op* p_aop, int flag )
{

View File

@ -7,12 +7,17 @@
#ifdef linux
#include "config.h"
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
/* FIXME - how to make this OS independent ?? */
#include <linux/cdrom.h>
#include <linux/ucdrom.h>
#ifdef HAVE_LINUX_CDROM_H
# include <linux/cdrom.h>
#endif
#ifdef HAVE_LINUX_UCDROM_H
# include <linux/ucdrom.h>
#endif
#include "ldt.h"
#include "drive.h"
@ -107,7 +112,7 @@ else
if (!driver_request)
{ /* FIXME - to be deleted ?? */
ERR(int," ES:BX==0 ! SEGFAULT ?\n");
ERR(int," -->BX=0x%04X, ES=0x%04X, DS=0x%04X, CX=0x%04X\n\n",
ERR(int," -->BX=0x%04x, ES=0x%04lx, DS=0x%04lx, CX=0x%04x\n\n",
BX_reg(context),
ES_reg(context),
DS_reg(context),
@ -155,7 +160,7 @@ else
io_stru[2]=1; /* supports audio channels (?? FIXME ??) */
io_stru[1]=16; /* data read and plays audio racks */
io_stru[1]|=(ioctl(fdcd,CDROM_DRIVE_STATUS,0)==CDS_TRAY_OPEN);
TRACE(int," ----> DEVICE STATUS <0x%08X>\n\n",(DWORD)io_stru[1]);
TRACE(int," ----> DEVICE STATUS <0x%08lx>\n\n",(DWORD)io_stru[1]);
break;
case 9: /* media changed ? */

View File

@ -209,9 +209,26 @@ static void GetDrivePB( CONTEXT *context, int drive )
static void ioctlGetDeviceInfo( CONTEXT *context )
{
int curr_drive;
int curr_drive, i;
FILE_OBJECT *file;
TRACE(int21, "(%d)\n", BX_reg(context));
RESET_CFLAG(context);
/* DOS device ? */
if ((file = FILE_GetFile( BX_reg(context) )))
{
const DOS_DEVICE *dev = DOSFS_GetDevice( file->unix_name );
FILE_ReleaseFile( file );
if (dev)
{
DX_reg(context) = dev->flags;
return;
}
}
/* it seems to be a file */
curr_drive = DRIVE_GetCurrentDrive();
DX_reg(context) = 0x0140 + curr_drive + ((curr_drive > 1) ? 0x0800 : 0);
/* no floppy */
@ -222,7 +239,6 @@ static void ioctlGetDeviceInfo( CONTEXT *context )
* bit 14 - don't set file date/time on closing
* bit 15 - file is remote
*/
RESET_CFLAG(context);
}
static BOOL32 ioctlGenericBlkDevReq( CONTEXT *context )
@ -1323,8 +1339,9 @@ void WINAPI DOS3Call( CONTEXT *context )
case 0x02:{
FILE_OBJECT *file;
file = FILE_GetFile(BX_reg(context));
if (!strcasecmp(file->unix_name, "SCSIMGR$"))
if (!strcasecmp(file->unix_name, "SCSIMGR$"))
ASPI_DOS_HandleInt(context);
FILE_ReleaseFile( file );
break;
}
case 0x05:{ /* IOCTL - WRITE TO BLOCK DEVICE CONTROL CHANNEL */

View File

@ -30,6 +30,7 @@
#include "config.h"
#include <assert.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/fcntl.h>
@ -977,6 +978,8 @@ DSOUND_thread(LPVOID arg) {
while (curleft < sizeof(playbuf)) {
res = write(audiofd,(LPBYTE)playbuf+curleft,sizeof(playbuf)-curleft);
if (res==-1) {
if (errno==EINTR)
continue;
perror("write audiofd");
ExitThread(0);
break;

View File

@ -24,6 +24,8 @@
#include "debug.h"
#include "xmalloc.h"
#include "callback.h"
#include "module.h"
#include "selectors.h"
static int InstalledCount;
static int InstalledListLen;
@ -3708,18 +3710,61 @@ LRESULT WINAPI mmThreadSignal16(WORD hnd) {
/**************************************************************************
* mmTaskCreate [MMSYSTEM.900]
*/
LRESULT WINAPI mmTaskCreate16(LPWORD lphnd,DWORD x1,DWORD x2) {
FIXME(mmsys,"(%p,%08lx,%08lx): stub!\n",lphnd,x1,x2);
*lphnd = 0xcafe;
return 0;
HINSTANCE16 WINAPI mmTaskCreate16(LPWORD lphnd,HINSTANCE16 *hMmTask,DWORD x2)
{
DWORD showCmd = 0x40002;
LPSTR cmdline;
WORD sel1, sel2;
LOADPARAMS *lp;
HINSTANCE16 ret, handle;
TRACE(mmsys,"(%p,%p,%08lx);\n",lphnd,hMmTask,x2);
cmdline = (LPSTR)HeapAlloc(GetProcessHeap(), 0, 0x0d);
cmdline[0] = 0x0d;
(DWORD)cmdline[1] = (DWORD)lphnd;
(DWORD)cmdline[5] = x2;
(DWORD)cmdline[9] = 0;
sel1 = SELECTOR_AllocBlock(cmdline, 0x0d, SEGMENT_DATA, FALSE, FALSE);
sel2 = SELECTOR_AllocBlock(&showCmd, sizeof(showCmd),
SEGMENT_DATA, FALSE, FALSE);
lp = (LOADPARAMS *)HeapAlloc(GetProcessHeap(), 0, sizeof(LOADPARAMS));
lp->hEnvironment = 0;
lp->cmdLine = PTR_SEG_OFF_TO_SEGPTR(sel1, 0);
lp->showCmd = PTR_SEG_OFF_TO_SEGPTR(sel2, 0);
lp->reserved = 0;
ret = LoadModule16("c:\\windows\\mmtask.tsk", lp);
if (ret < 32) {
if (ret)
ret = 1;
else
ret = 2;
handle = 0;
}
else {
handle = ret;
ret = 0;
}
if (hMmTask)
*(HINSTANCE16 *)PTR_SEG_TO_LIN(hMmTask) = handle;
UnMapLS(PTR_SEG_OFF_TO_SEGPTR(sel2, 0));
UnMapLS(PTR_SEG_OFF_TO_SEGPTR(sel1, 0));
HeapFree(GetProcessHeap(), 0, lp);
HeapFree(GetProcessHeap(), 0, cmdline);
return ret;
}
/**************************************************************************
* mmTaskSignal [MMSYSTEM.903]
*/
LRESULT WINAPI mmTaskSignal16(HTASK16 ht) {
FIXME(mmsys,"(%04x): stub!\n",ht);
return PostAppMessage16(ht,0x400,0,0);
TRACE(mmsys,"(%04x);\n",ht);
return PostAppMessage16(ht,WM_USER,0,0);
}
/**************************************************************************

View File

@ -861,7 +861,9 @@ HCURSOR16 WINAPI CopyCursor16( HINSTANCE16 hInstance, HCURSOR16 hCursor )
*/
BOOL16 WINAPI DestroyIcon16( HICON16 hIcon )
{
return DestroyIcon32( hIcon );
TRACE(icon, "%04x\n", hIcon );
/* FIXME: should check for OEM/global heap icon here */
return (FreeResource16( hIcon ) == 0);
}
@ -871,8 +873,8 @@ BOOL16 WINAPI DestroyIcon16( HICON16 hIcon )
BOOL32 WINAPI DestroyIcon32( HICON32 hIcon )
{
TRACE(icon, "%04x\n", hIcon );
/* FIXME: should check for OEM icon here */
return (FreeResource16( hIcon ) == 0);
/* FIXME: should check for OEM/global heap icon here */
return (FreeResource32( hIcon ) == 0);
}
@ -881,7 +883,9 @@ BOOL32 WINAPI DestroyIcon32( HICON32 hIcon )
*/
BOOL16 WINAPI DestroyCursor16( HCURSOR16 hCursor )
{
return DestroyCursor32( hCursor );
TRACE(cursor, "%04x\n", hCursor );
/* FIXME: should check for OEM/global heap cursor here */
return (FreeResource16( hCursor ) == 0);
}
@ -891,8 +895,8 @@ BOOL16 WINAPI DestroyCursor16( HCURSOR16 hCursor )
BOOL32 WINAPI DestroyCursor32( HCURSOR32 hCursor )
{
TRACE(cursor, "%04x\n", hCursor );
/* FIXME: should check for OEM cursor here */
return (FreeResource16( hCursor ) == 0);
/* FIXME: should check for OEM/global heap cursor here */
return (FreeResource32( hCursor ) == 0);
}
@ -1531,7 +1535,17 @@ BOOL32 WINAPI GetIconInfo(HICON32 hIcon,LPICONINFO iconinfo) {
iconinfo->xHotspot = ciconinfo->ptHotSpot.x;
iconinfo->yHotspot = ciconinfo->ptHotSpot.y;
iconinfo->fIcon = TRUE; /* hmm */
/* FIXME ... add both bitmaps */
iconinfo->hbmColor = CreateBitmap32 ( ciconinfo->nWidth, ciconinfo->nHeight,
ciconinfo->bPlanes, ciconinfo->bBitsPerPixel,
(char *)(ciconinfo + 1)
+ ciconinfo->nHeight *
BITMAP_WIDTH_BYTES(ciconinfo->nWidth,1) );
iconinfo->hbmMask = CreateBitmap32 ( ciconinfo->nWidth, ciconinfo->nHeight,
1, 1, (char *)(ciconinfo + 1));
GlobalUnlock16(hIcon);
return TRUE;
}

View File

@ -659,9 +659,13 @@ INT32 WINAPI GetTextFace32A( HDC32 hdc, INT32 count, LPSTR name )
if (!dc) return 0;
if (!(font = (FONTOBJ *) GDI_GetObjPtr( dc->w.hFont, FONT_MAGIC )))
return 0;
lstrcpyn32A( name, font->logfont.lfFaceName, count );
if (name)
lstrcpyn32A( name, font->logfont.lfFaceName, count );
GDI_HEAP_UNLOCK( dc->w.hFont );
return strlen(name);
if (name)
return strlen(name);
else
return strlen(font->logfont.lfFaceName) + 1;
}
/***********************************************************************

View File

@ -162,18 +162,22 @@ UINT32 WINAPI GetPaletteEntries32(
if (!palPtr) return 0;
numEntries = palPtr->logpalette.palNumEntries;
if (start >= numEntries)
{
GDI_HEAP_UNLOCK( hpalette );
return 0;
}
if (start+count > numEntries) count = numEntries - start;
memcpy( entries, &palPtr->logpalette.palPalEntry[start],
count * sizeof(PALETTEENTRY) );
for( numEntries = 0; numEntries < count ; numEntries++ )
if (entries[numEntries].peFlags & 0xF0)
entries[numEntries].peFlags = 0;
GDI_HEAP_UNLOCK( hpalette );
if (entries)
{
if (start >= numEntries)
{
GDI_HEAP_UNLOCK( hpalette );
return 0;
}
memcpy( entries, &palPtr->logpalette.palPalEntry[start],
count * sizeof(PALETTEENTRY) );
for( numEntries = 0; numEntries < count ; numEntries++ )
if (entries[numEntries].peFlags & 0xF0)
entries[numEntries].peFlags = 0;
GDI_HEAP_UNLOCK( hpalette );
}
return count;
}

View File

@ -37,7 +37,7 @@ LPSTR GetNextElement(
DWORD dwOut) /*[IN] length of pszOut*/
{ LPSTR pszTail = pszNext;
DWORD dwCopy;
TRACE(shell,"(%s %p %lx)\n",pszNext, pszOut, dwOut);
TRACE(shell,"(%s %p 0x%08lx)\n",pszNext, pszOut, dwOut);
if(!pszNext || !*pszNext)
return NULL;
@ -52,7 +52,7 @@ LPSTR GetNextElement(
{ pszTail++;
}
TRACE(shell,"--(%s %s %lx)\n",pszNext, pszOut, dwOut);
TRACE(shell,"--(%s %s 0x%08lx)\n",pszNext, pszOut, dwOut);
return pszTail;
}
@ -138,32 +138,36 @@ static ULONG WINAPI IClassFactory_Release(LPCLASSFACTORY this)
*/
static HRESULT WINAPI IClassFactory_CreateInstance(
LPCLASSFACTORY this, LPUNKNOWN pUnknown, REFIID riid, LPVOID *ppObject)
{ LPSHELLFOLDER pSHFolder;
HRESULT hResult=E_OUTOFMEMORY;
{ IUnknown *pObj = NULL;
HRESULT hres;
char xriid[50];
WINE_StringFromCLSID((LPCLSID)riid,xriid);
TRACE(shell,"%p->(%p,\n\tIID:\t%s)\n",this,pUnknown,xriid);
*ppObject = NULL;
*ppObject = NULL;
if(pUnknown)
{ return CLASS_E_NOAGGREGATION;
{ return(CLASS_E_NOAGGREGATION);
}
if (IsEqualIID(riid, &IID_IShellFolder))
{ pSHFolder = IShellFolder_Constructor(NULL,NULL);
if(pSHFolder)
{ hResult = pSHFolder->lpvtbl->fnQueryInterface(pSHFolder,riid, ppObject);
pSHFolder->lpvtbl->fnRelease(pSHFolder);
TRACE(shell,"-- ShellFolder created: (%p)->%p\n",this,*ppObject);
}
}
{ pObj = (IUnknown *)IShellFolder_Constructor(NULL,NULL);
}
else
{ FIXME(shell,"unknown IID requested\n\tIID:\t%s\n",xriid);
hResult=E_NOINTERFACE;
{ ERR(shell,"unknown IID requested\n\tIID:\t%s\n",xriid);
return(E_NOINTERFACE);
}
return hResult;
if (!pObj)
{ return(E_OUTOFMEMORY);
}
hres = pObj->lpvtbl->fnQueryInterface(pObj,riid, ppObject);
pObj->lpvtbl->fnRelease(pObj);
TRACE(shell,"-- Object created: (%p)->%p\n",this,*ppObject);
return hres;
}
/******************************************************************************
* IClassFactory_LockServer
@ -217,7 +221,7 @@ LPENUMIDLIST IEnumIDList_Constructor( LPCSTR lpszPath, DWORD dwFlags, HRESULT* p
lpeidl->mpLast=NULL;
lpeidl->mpCurrent=NULL;
TRACE(shell,"(%p)->(%s %lx %p)\n",lpeidl,lpszPath,dwFlags,pResult);
TRACE(shell,"(%p)->(%s 0x%08lx %p)\n",lpeidl,lpszPath,dwFlags,pResult);
lpeidl->mpPidlMgr=PidlMgr_Constructor();
if (!lpeidl->mpPidlMgr)
@ -368,60 +372,63 @@ static BOOL32 WINAPI IEnumIDList_CreateEnumList(LPENUMIDLIST this, LPCSTR lpszPa
WIN32_FIND_DATA32A stffile;
HANDLE32 hFile;
TRACE(shell,"(%p)->(%s %lx) \n",this,lpszPath,dwFlags);
TRACE(shell,"(%p)->(%s 0x%08lx) \n",this,lpszPath,dwFlags);
/*enumerate the folders*/
if(dwFlags & SHCONTF_FOLDERS)
{ /* special case - we can't enumerate the Desktop level Objects (MyComputer,Nethood...
so we need to fake an enumeration of those.*/
if(!lpszPath)
{ //create the pidl for this item
pidl = this->mpPidlMgr->lpvtbl->fnCreateDesktop(this->mpPidlMgr);
if(pidl)
{ if(!IEnumIDList_AddToEnumList(this, pidl))
return FALSE;
}
{ /* special case - we can't enumerate the Desktop level Objects (MyComputer,Nethood...
so we need to fake an enumeration of those.*/
if(!lpszPath)
{ TRACE (shell,"(%p)-> enumerate the special-folder items\n",this);
//create the pidl for this item
pidl = this->mpPidlMgr->lpvtbl->fnCreateDesktop(this->mpPidlMgr);
if(pidl)
{ if(!IEnumIDList_AddToEnumList(this, pidl))
return FALSE;
}
else
{ return FALSE;
}
}
else
{ return FALSE;
}
}
else
{ hFile = FindFirstFile32A(lpszPath,&stffile);
do
{ if (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
//create the pidl for this item
/* fixme: the shortname should be given too*/
pidl = this->mpPidlMgr->lpvtbl->fnCreateFolder(this->mpPidlMgr, stffile.cFileName);
if(pidl)
{ if(!IEnumIDList_AddToEnumList(this, pidl))
return FALSE;
}
else
{ return FALSE;
}
{ TRACE (shell,"(%p)-> enumerate the folder items for %s\n",this,lpszPath);
hFile = FindFirstFile32A(lpszPath,&stffile);
do
{ if (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
//create the pidl for this item
/* fixme: the shortname should be given too*/
pidl = this->mpPidlMgr->lpvtbl->fnCreateFolder(this->mpPidlMgr, stffile.cFileName);
if(pidl)
{ if(!IEnumIDList_AddToEnumList(this, pidl))
return FALSE;
}
else
{ return FALSE;
}
} while( FindNextFile32A(hFile,&stffile));
FindClose32 (hFile);
}
}
//enumerate the non-folder items (values)
if(dwFlags & SHCONTF_NONFOLDERS)
{ hFile = FindFirstFile32A(lpszPath,&stffile);
do
{ if (! (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
//create the pidl for this item
/* fixme: the shortname should be given too*/
pidl = this->mpPidlMgr->lpvtbl->fnCreateFolder(this->mpPidlMgr, stffile.cFileName);
if(pidl)
{ if(!IEnumIDList_AddToEnumList(this, pidl))
{ return FALSE;
}
}
else
{ TRACE (shell,"(%p)-> enumerate the non-folder items (values) of %s\n",this,lpszPath);
hFile = FindFirstFile32A(lpszPath,&stffile);
do
{ if (! (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
//create the pidl for this item
/* fixme: the shortname should be given too*/
pidl = this->mpPidlMgr->lpvtbl->fnCreateFolder(this->mpPidlMgr, stffile.cFileName);
if(pidl)
{ if(!IEnumIDList_AddToEnumList(this, pidl))
{ return FALSE;
}
} while( FindNextFile32A(hFile,&stffile));
FindClose32 (hFile);
}
}
}
else
{ return FALSE;
}
} while( FindNextFile32A(hFile,&stffile));
FindClose32 (hFile);
}
return TRUE;
}
@ -504,7 +511,7 @@ static struct IShellFolder_VTable sfvt = {
IShellFolder_QueryInterface,
IShellFolder_AddRef,
IShellFolder_Release,
IShellFolder_Initialize,
/* IShellFolder_Initialize,*/
IShellFolder_ParseDisplayName,
IShellFolder_EnumObjects,
IShellFolder_BindToObject,
@ -530,8 +537,9 @@ LPSHELLFOLDER IShellFolder_Constructor(LPSHELLFOLDER pParent,LPITEMIDLIST pidl)
sf->mlpszFolder=NULL;
sf->mpSFParent=pParent;
TRACE(shell,"(%p)->(parent:%p, pidl=%p)\n",sf,pParent, pidl);
TRACE(shell,"(%p)->(parent=%p, pidl=%p)\n",sf,pParent, pidl);
/* create own pidl-manager*/
sf->pPidlMgr = PidlMgr_Constructor();
if (! sf->pPidlMgr )
{ HeapFree(GetProcessHeap(),0,sf);
@ -539,10 +547,11 @@ LPSHELLFOLDER IShellFolder_Constructor(LPSHELLFOLDER pParent,LPITEMIDLIST pidl)
return NULL;
}
/* keep a copy of the pidl in the instance*/
sf->mpidl = sf->pPidlMgr->lpvtbl->fnCopy(sf->pPidlMgr, pidl);
sf->mpidlNSRoot = NULL;
if(sf->mpidl)
if(sf->mpidl) /* do we have a pidl?*/
{ /*if(sf->pPidlMgr->lpvtbl->fnIsDesktop(sf->pPidlMgr,sf->mpidl))
{ sf->pPidlMgr->lpvtbl->fnGetDesktop(sf->pPidlMgr,sf->mpidl);
}*/
@ -566,7 +575,7 @@ LPSHELLFOLDER IShellFolder_Constructor(LPSHELLFOLDER pParent,LPITEMIDLIST pidl)
}
}
TRACE(shell,"-- (%p)->(%p,%p)\n",sf,pParent, pidl);
TRACE(shell,"-- (%p)->(%p,%p,%s)\n",sf,pParent, pidl, debugstr_a(sf->mlpszFolder));
return sf;
}
/**************************************************************************
@ -612,6 +621,10 @@ static ULONG WINAPI IShellFolder_Release(LPSHELLFOLDER this)
{ TRACE(shell,"(%p)->(count=%lu)\n",this,this->ref);
if (!--(this->ref)) {
TRACE(shell,"-- destroying IShellFolder(%p)\n",this);
if (pdesktopfolder==this)
{ pdesktopfolder=NULL;
TRACE(shell,"-- destroyed IShellFolder(%p) was Desktopfolder\n",this);
}
HeapFree(GetProcessHeap(),0,this);
return 0;
}
@ -632,66 +645,70 @@ static HRESULT WINAPI IShellFolder_ParseDisplayName(
LPITEMIDLIST *ppidl, /* [out] the pidl*/
DWORD *pdwAttributes)
{ HRESULT hr=E_OUTOFMEMORY;
LPITEMIDLIST pidlFull=NULL;
DWORD dwChars=lstrlen32W(lpszDisplayName) + 1;
LPSTR pszTemp=(LPSTR)HeapAlloc(GetProcessHeap(),0,dwChars * sizeof(CHAR));
LPITEMIDLIST pidlFull=NULL, pidlTemp = NULL, pidlOld = NULL;
LPSTR pszNext=NULL;
CHAR szElement[MAX_PATH];
BOOL32 bType;
LPITEMIDLIST pidlTemp = NULL;
LPITEMIDLIST pidlOld = NULL;
DWORD dwChars=lstrlen32W(lpszDisplayName) + 1;
LPSTR pszTemp=(LPSTR)HeapAlloc(GetProcessHeap(),0,dwChars * sizeof(CHAR));
TRACE(shell,"(%p)->(%x,%p,%p=%s,%p,pidl=%p,%p)\n",
this,hwndOwner,pbcReserved,lpszDisplayName,debugstr_w(lpszDisplayName),pchEaten,ppidl,pdwAttributes
);
TRACE(shell,"(%p)->(HWND=0x%08x,%p,%p=%s,%p,pidl=%p,%p)\n",
this,hwndOwner,pbcReserved,lpszDisplayName,debugstr_w(lpszDisplayName),pchEaten,ppidl,pdwAttributes);
if(pszTemp)
{ hr = E_FAIL;
WideCharToLocal32(pszTemp, lpszDisplayName, dwChars);
if(*pszTemp)
{ pidlFull = this->pPidlMgr->lpvtbl->fnCreateDesktop(this->pPidlMgr);
{ if (strcmp(pszTemp,"Desktop")==0)
{ pidlFull = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,sizeof(ITEMIDLIST));
pidlFull->mkid.cb = 0;
pidlFull->mkid.abID[0] = 0;
}
else
{ pidlFull = this->pPidlMgr->lpvtbl->fnCreateMyComputer(this->pPidlMgr);
/* check if the lpszDisplayName is Folder or File*/
bType = ! (GetFileAttributes32A(pszNext)&FILE_ATTRIBUTE_DIRECTORY);
pszNext = GetNextElement(pszTemp, szElement, MAX_PATH);
pidlTemp = this->pPidlMgr->lpvtbl->fnCreateDrive(this->pPidlMgr,szElement);
pidlOld = pidlFull;
pidlFull = this->pPidlMgr->lpvtbl->fnConcatenate(this->pPidlMgr,pidlFull,pidlTemp);
this->pPidlMgr->lpvtbl->fnDelete(this->pPidlMgr,pidlOld);
if(pidlFull)
{ while((pszNext=GetNextElement(pszNext, szElement, MAX_PATH)))
{ if(!*pszNext && bType)
{ pidlTemp = this->pPidlMgr->lpvtbl->fnCreateValue(this->pPidlMgr,szElement);
}
else
{ pidlTemp = this->pPidlMgr->lpvtbl->fnCreateFolder(this->pPidlMgr,szElement);
}
pidlOld = pidlFull;
pidlFull = this->pPidlMgr->lpvtbl->fnConcatenate(this->pPidlMgr,pidlFull,pidlTemp);
this->pPidlMgr->lpvtbl->fnDelete(this->pPidlMgr,pidlOld);
}
hr = S_OK;
}
}
HeapFree(GetProcessHeap(),0,pszTemp);
/* check if the lpszDisplayName is Folder or File*/
bType = ! (GetFileAttributes32A(pszNext)&FILE_ATTRIBUTE_DIRECTORY);
pszNext = GetNextElement(pszTemp, szElement, MAX_PATH);
pidlTemp = this->pPidlMgr->lpvtbl->fnCreateDrive(this->pPidlMgr,szElement);
pidlOld = pidlFull;
pidlFull = this->pPidlMgr->lpvtbl->fnConcatenate(this->pPidlMgr,pidlFull,pidlTemp);
this->pPidlMgr->lpvtbl->fnDelete(this->pPidlMgr,pidlOld);
if(pidlFull)
{ while((pszNext=GetNextElement(pszNext, szElement, MAX_PATH)))
{ if(!*pszNext && bType)
{ pidlTemp = this->pPidlMgr->lpvtbl->fnCreateValue(this->pPidlMgr,szElement);
}
else
{ pidlTemp = this->pPidlMgr->lpvtbl->fnCreateFolder(this->pPidlMgr,szElement);
}
pidlOld = pidlFull;
pidlFull = this->pPidlMgr->lpvtbl->fnConcatenate(this->pPidlMgr,pidlFull,pidlTemp);
this->pPidlMgr->lpvtbl->fnDelete(this->pPidlMgr,pidlOld);
}
hr = S_OK;
}
}
}
}
HeapFree(GetProcessHeap(),0,pszTemp);
*ppidl = pidlFull;
return hr;
}
/**************************************************************************
* IShellFolder_EnumObjects
*/
static HRESULT WINAPI IShellFolder_EnumObjects(
LPSHELLFOLDER this,HWND32 hwndOwner,DWORD dwFlags,
LPSHELLFOLDER this,
HWND32 hwndOwner,
DWORD dwFlags,
LPENUMIDLIST* ppEnumIDList)
{ HRESULT hr;
TRACE(shell,"(%p)->(%x,%lx,%p)\n",this,hwndOwner,dwFlags,ppEnumIDList);
TRACE(shell,"(%p)->(HWND=0x%08x,0x%08lx,%p)\n",this,hwndOwner,dwFlags,ppEnumIDList);
*ppEnumIDList = NULL;
*ppEnumIDList = IEnumIDList_Constructor (this->mlpszFolder, dwFlags, &hr);
@ -726,19 +743,20 @@ static HRESULT WINAPI IShellFolder_BindToObject(
LPBC pbcReserved,
REFIID riid,
LPVOID * ppvOut)
{ char xclsid[50];
{ char xriid[50];
HRESULT hr;
LPSHELLFOLDER pShellFolder;
WINE_StringFromCLSID(riid,xclsid);
WINE_StringFromCLSID(riid,xriid);
TRACE(shell,"(%p)->(pidl=%p,%p,\n\tSID:%s,%p)\n",this,pidl,pbcReserved,xclsid,ppvOut);
TRACE(shell,"(%p)->(pidl=%p,%p,\n\tIID:%s,%p)\n",this,pidl,pbcReserved,xriid,ppvOut);
*ppvOut = NULL;
pShellFolder = IShellFolder_Constructor(this, pidl);
if(!pShellFolder)
return E_OUTOFMEMORY;
pShellFolder->lpvtbl->fnInitialize(pShellFolder, this->mpidlNSRoot);
/* pShellFolder->lpvtbl->fnInitialize(pShellFolder, this->mpidlNSRoot);*/
IShellFolder_Initialize(pShellFolder, this->mpidlNSRoot);
hr = pShellFolder->lpvtbl->fnQueryInterface(pShellFolder, riid, ppvOut);
pShellFolder->lpvtbl->fnRelease(pShellFolder);
TRACE(shell,"-- (%p)->(interface=%p)\n",this, ppvOut);
@ -754,10 +772,10 @@ static HRESULT WINAPI IShellFolder_BindToStorage(
LPBC pbcReserved,
REFIID riid,
LPVOID *ppvOut)
{ char xclsid[50];
WINE_StringFromCLSID(riid,xclsid);
{ char xriid[50];
WINE_StringFromCLSID(riid,xriid);
FIXME(shell,"(%p)->(pidl=%p,%p,\n\tSID:%s,%p) stub\n",this,pidl,pbcReserved,xclsid,ppvOut);
FIXME(shell,"(%p)->(pidl=%p,%p,\n\tIID:%s,%p) stub\n",this,pidl,pbcReserved,xriid,ppvOut);
*ppvOut = NULL;
return E_NOTIMPL;
@ -776,7 +794,7 @@ static HRESULT WINAPI IShellFolder_CompareIDs(
int nReturn;
LPCITEMIDLIST pidlTemp1 = pidl1, pidlTemp2 = pidl2;
TRACE(shell,"(%p)->(%lx,pidl1=%p,pidl2=%p) stub\n",this,lParam,pidl1,pidl2);
TRACE(shell,"(%p)->(0x%08lx,pidl1=%p,pidl2=%p) stub\n",this,lParam,pidl1,pidl2);
/*Special case - If one of the items is a Path and the other is a File, always
make the Path come before the File.*/
@ -813,16 +831,21 @@ static HRESULT WINAPI IShellFolder_CompareIDs(
/**************************************************************************
* IShellFolder_CreateViewObject
* NOTES
* the same as SHCreateShellFolderViewEx ???
*/
static HRESULT WINAPI IShellFolder_CreateViewObject(
LPSHELLFOLDER this,HWND32 hwndOwner,REFIID riid,LPVOID *ppv)
{ char xclsid[50];
LPSHELLFOLDER this,
HWND32 hwndOwner,
REFIID riid,
LPVOID *ppvOut)
{ char xriid[50];
WINE_StringFromCLSID(riid,xclsid);
FIXME(shell,"(%p)->(0x%04x,\n\tIID:\t%s,%p),stub!\n",this,hwndOwner,xclsid,ppv);
WINE_StringFromCLSID(riid,xriid);
FIXME(shell,"(%p)->(0x%04x,\n\tIID:\t%s,%p),stub!\n",this,hwndOwner,xriid,ppvOut);
*(DWORD*)ppv = 0;
return E_OUTOFMEMORY;
*ppvOut = NULL;
return E_NOTIMPL;
}
/**************************************************************************
@ -851,12 +874,17 @@ static HRESULT WINAPI IShellFolder_GetUIObjectOf(
WINE_StringFromCLSID(riid,xclsid);
FIXME(shell,"(%p)->(%u %u,pidl=%p,\n\tIID:%s,%p,%p),stub!\n",
FIXME(shell,"(%p)->(%u,%u,pidl=%p,\n\tIID:%s,%p,%p),stub!\n",
this,hwndOwner,cidl,apidl,xclsid,prgfInOut,ppvOut);
return E_FAIL;
*ppvOut = NULL;
return E_NOTIMPL;
}
/**************************************************************************
* IShellFolder_GetDisplayNameOf
*
* FIXME
* if the name is in the pidl the ret value should be a STRRET_OFFSET
*/
#define GET_SHGDN_FOR(dwFlags) ((DWORD)dwFlags & (DWORD)0x0000FF00)
#define GET_SHGDN_RELATION(dwFlags) ((DWORD)dwFlags & (DWORD)0x000000FF)
@ -866,45 +894,100 @@ static HRESULT WINAPI IShellFolder_GetDisplayNameOf(
LPCITEMIDLIST pidl,
DWORD dwFlags,
LPSTRRET lpName)
{ CHAR szText[MAX_PATH];
int cchOleStr;
LPITEMIDLIST pidlTemp;
{ CHAR szText[MAX_PATH];
CHAR szTemp[MAX_PATH];
CHAR szSpecial[MAX_PATH];
CHAR szDrive[MAX_PATH];
DWORD dwVolumeSerialNumber,dwMaximumComponetLength,dwFileSystemFlags;
LPITEMIDLIST pidlTemp=NULL;
BOOL32 bSimplePidl=FALSE;
TRACE(shell,"(%p)->(pidl=%p,0x%08lx,%p)\n",this,pidl,dwFlags,lpName);
TRACE(shell,"(%p)->(pidl=%p,%lx,%p)\n",this,pidl,dwFlags,lpName);
switch(GET_SHGDN_RELATION(dwFlags))
{ case SHGDN_NORMAL:
//get the full name
this->pPidlMgr->lpvtbl->fnGetPidlPath(this->pPidlMgr, pidl, szText, sizeof(szText));
/* FIXME if the text is NULL and this is a value, then is something wrong*/
/* if(!*szText && this->pPidlMgr->lpvtbl->fnIsValue(this->pPidlMgr, this->pPidlMgr->lpvtbl->fnGetLastItem(this->pPidlMgr, pidl)))
{ do_something()
}*/
break;
case SHGDN_INFOLDER:
pidlTemp = this->pPidlMgr->lpvtbl->fnGetLastItem(this->pPidlMgr,pidl);
//get the relative name
this->pPidlMgr->lpvtbl->fnGetItemText(this->pPidlMgr, pidlTemp, szText, sizeof(szText));
/* FIXME if the text is NULL and this is a value, then is something wrong*/
if(!*szText && this->pPidlMgr->lpvtbl->fnIsValue(this->pPidlMgr,pidlTemp))
/* { do_something()
}*/
break;
default: return E_INVALIDARG;
/* test if simple(relative) or complex(absolute) pidl */
pidlTemp = this->pPidlMgr->lpvtbl->fnGetNextItem(this->pPidlMgr,pidl);
if (pidlTemp->mkid.cb==0x00)
{ bSimplePidl = TRUE;
}
if (this->pPidlMgr->lpvtbl->fnIsDesktop(this->pPidlMgr, pidl))
{ strcpy (szText,"Desktop");
}
else
{ szSpecial[0]=0x00;
if (this->pPidlMgr->lpvtbl->fnIsMyComputer(this->pPidlMgr, pidl))
{ this->pPidlMgr->lpvtbl->fnGetItemText(this->pPidlMgr, pidl, szSpecial, MAX_PATH);
}
szDrive[0]=0x00;
if (this->pPidlMgr->lpvtbl->fnIsDrive(this->pPidlMgr, pidl))
{ pidlTemp = this->pPidlMgr->lpvtbl->fnGetLastItem(this->pPidlMgr,pidl);
if (pidlTemp)
{ this->pPidlMgr->lpvtbl->fnGetItemText(this->pPidlMgr, pidlTemp, szTemp, MAX_PATH);
}
if ( dwFlags==SHGDN_NORMAL || dwFlags==SHGDN_INFOLDER)
{ GetVolumeInformation32A(szTemp,szDrive,MAX_PATH,&dwVolumeSerialNumber,&dwMaximumComponetLength,&dwFileSystemFlags,NULL,0);
if (szTemp[2]=='\\')
{ szTemp[2]='\0';
}
strcat (szDrive," (");
strcat (szDrive,szTemp);
strcat (szDrive,")");
}
else
{ PathAddBackslash (szTemp);
strcpy(szDrive,szTemp);
}
}
switch(dwFlags)
{ case SHGDN_NORMAL:
this->pPidlMgr->lpvtbl->fnGetPidlPath(this->pPidlMgr, pidl, szText, MAX_PATH);
break;
case SHGDN_INFOLDER:
pidlTemp = this->pPidlMgr->lpvtbl->fnGetLastItem(this->pPidlMgr,pidl);
if (pidlTemp)
{ this->pPidlMgr->lpvtbl->fnGetItemText(this->pPidlMgr, pidlTemp, szText, MAX_PATH);
}
break;
case SHGDN_FORPARSING:
if (bSimplePidl)
{ /* if the IShellFolder has parents, get the path from the
parent and add the ItemName*/
if (this->mlpszFolder && strlen (this->mlpszFolder))
{ strcpy (szText,this->mlpszFolder);
PathAddBackslash (szText);
}
else
{ strcpy(szText,"");
}
pidlTemp = this->pPidlMgr->lpvtbl->fnGetLastItem(this->pPidlMgr,pidl);
if (pidlTemp)
{ this->pPidlMgr->lpvtbl->fnGetItemText(this->pPidlMgr, pidlTemp, szTemp, MAX_PATH );
}
strcat(szText,szTemp);
}
else
{ /* if the pidl is absolute, get everything from the pidl*/
this->pPidlMgr->lpvtbl->fnGetPidlPath(this->pPidlMgr, pidl, szText, MAX_PATH);
}
break;
default: return E_INVALIDARG;
}
if ((szText[0]==0x00 && szDrive[0]!=0x00)|| (bSimplePidl && szDrive[0]!=0x00))
{ strcpy(szText,szDrive);
}
if (szText[0]==0x00 && szSpecial[0]!=0x00)
{ strcpy(szText,szSpecial);
}
}
TRACE(shell,"-- (%p)->(%s,%s,%s)\n",this,szSpecial,szDrive,szText);
//get the number of characters required
cchOleStr = strlen(szText) + 1;
TRACE(shell,"-- (%p)->(%s)\n",this,szText);
//allocate the wide character string
lpName->u.pOleStr = (LPWSTR)HeapAlloc(GetProcessHeap(),0,cchOleStr * sizeof(WCHAR));
if(!(lpName->u.pOleStr))
if(!(lpName))
{ return E_OUTOFMEMORY;
}
lpName->uType = STRRET_WSTR;
LocalToWideChar32(lpName->u.pOleStr, szText, cchOleStr);
lpName->uType = STRRET_CSTR;
strcpy(lpName->u.cStr,szText);
return S_OK;
}
@ -967,6 +1050,7 @@ LPSHELLLINK IShellLink_Constructor()
* INTERNAL CLASS pidlmgr
*/
LPITEMIDLIST PidlMgr_CreateDesktop(LPPIDLMGR);
LPITEMIDLIST PidlMgr_CreateMyComputer(LPPIDLMGR);
LPITEMIDLIST PidlMgr_CreateDrive(LPPIDLMGR,LPCSTR);
LPITEMIDLIST PidlMgr_CreateFolder(LPPIDLMGR,LPCSTR);
LPITEMIDLIST PidlMgr_CreateValue(LPPIDLMGR,LPCSTR);
@ -979,6 +1063,7 @@ BOOL32 PidlMgr_GetDrive(LPPIDLMGR,LPCITEMIDLIST,LPSTR,UINT16);
LPITEMIDLIST PidlMgr_GetLastItem(LPPIDLMGR,LPCITEMIDLIST);
DWORD PidlMgr_GetItemText(LPPIDLMGR,LPCITEMIDLIST,LPSTR,UINT16);
BOOL32 PidlMgr_IsDesktop(LPPIDLMGR,LPCITEMIDLIST);
BOOL32 PidlMgr_IsMyComputer(LPPIDLMGR,LPCITEMIDLIST);
BOOL32 PidlMgr_IsDrive(LPPIDLMGR,LPCITEMIDLIST);
BOOL32 PidlMgr_IsFolder(LPPIDLMGR,LPCITEMIDLIST);
BOOL32 PidlMgr_IsValue(LPPIDLMGR,LPCITEMIDLIST);
@ -996,7 +1081,8 @@ BOOL32 PidlMgr_SeparatePathAndValue(LPPIDLMGR,LPITEMIDLIST,LPITEMIDLIST*,LPITEMI
static struct PidlMgr_VTable pmgrvt = {
PidlMgr_CreateDesktop,
PidlMgr_CreateDrive,
PidlMgr_CreateMyComputer,
PidlMgr_CreateDrive,
PidlMgr_CreateFolder,
PidlMgr_CreateValue,
PidlMgr_Delete,
@ -1008,7 +1094,8 @@ static struct PidlMgr_VTable pmgrvt = {
PidlMgr_GetLastItem,
PidlMgr_GetItemText,
PidlMgr_IsDesktop,
PidlMgr_IsDrive,
PidlMgr_IsMyComputer,
PidlMgr_IsDrive,
PidlMgr_IsFolder,
PidlMgr_IsValue,
PidlMgr_HasFolders,
@ -1051,11 +1138,19 @@ void PidlMgr_Destructor(LPPIDLMGR this)
*/
LPITEMIDLIST PidlMgr_CreateDesktop(LPPIDLMGR this)
{ TRACE(shell,"(%p)->()\n",this);
return PidlMgr_Create(this,PT_DESKTOP, (void *)"Desktop", sizeof("Desktop"));
return PidlMgr_Create(this,PT_DESKTOP, NULL, 0);
}
LPITEMIDLIST PidlMgr_CreateMyComputer(LPPIDLMGR this)
{ TRACE(shell,"(%p)->()\n",this);
return PidlMgr_Create(this,PT_MYCOMP, (void *)"My Computer", sizeof("My Computer"));
}
LPITEMIDLIST PidlMgr_CreateDrive(LPPIDLMGR this, LPCSTR lpszNew)
{ TRACE(shell,"(%p)->(%s)\n",this,lpszNew);
return PidlMgr_Create(this,PT_DRIVE, (LPVOID)lpszNew , strlen(lpszNew)+1);
{ char sTemp[4];
strncpy (sTemp,lpszNew,4);
sTemp[2]='\\';
sTemp[3]=0x00;
TRACE(shell,"(%p)->(%s)\n",this,sTemp);
return PidlMgr_Create(this,PT_DRIVE,(LPVOID)&sTemp[0],4);
}
LPITEMIDLIST PidlMgr_CreateFolder(LPPIDLMGR this, LPCSTR lpszNew)
{ TRACE(shell,"(%p)->(%s)\n",this,lpszNew);
@ -1078,9 +1173,13 @@ void PidlMgr_Delete(LPPIDLMGR this,LPITEMIDLIST pidl)
* PidlMgr_GetNextItem()
*/
LPITEMIDLIST PidlMgr_GetNextItem(LPPIDLMGR this, LPITEMIDLIST pidl)
{ TRACE(shell,"(%p)->(pidl=%p)\n",this,pidl);
{ LPITEMIDLIST nextpidl;
TRACE(shell,"(%p)->(pidl=%p)\n",this,pidl);
if(pidl)
{ return (LPITEMIDLIST)(LPBYTE)(((LPBYTE)pidl) + pidl->mkid.cb);
{ nextpidl = (LPITEMIDLIST)(LPBYTE)(((LPBYTE)pidl) + pidl->mkid.cb);
/* TRACE(shell,"-- (%p)->(next pidl=%p)\n",this,nextpidl);*/
return nextpidl;
}
else
{ return (NULL);
@ -1094,10 +1193,10 @@ LPITEMIDLIST PidlMgr_Copy(LPPIDLMGR this, LPITEMIDLIST pidlSource)
{ LPITEMIDLIST pidlTarget = NULL;
UINT16 cbSource = 0;
TRACE(shell,"-- (%p)->(pidl=%p)\n",this,pidlSource);
TRACE(shell,"(%p)->(pidl=%p)\n",this,pidlSource);
if(NULL == pidlSource)
{ ERR(shell,"-- (%p)->(%p)\n",this,pidlSource);
{ TRACE(shell,"-- (%p)->(%p)\n",this,pidlSource);
return (NULL);
}
@ -1150,12 +1249,11 @@ BOOL32 PidlMgr_GetDrive(LPPIDLMGR this,LPCITEMIDLIST pidl,LPSTR pOut, UINT16 uSi
{ LPITEMIDLIST pidlTemp=NULL;
TRACE(shell,"(%p)->(%p,%p,%u)\n",this,pidl,pOut,uSize);
if(PidlMgr_IsDesktop(this,pidl))
if(PidlMgr_IsMyComputer(this,pidl))
{ pidlTemp = PidlMgr_GetNextItem(this,pidl);
}
else if (PidlMgr_IsDrive(this,pidl))
{ pidlTemp = PidlMgr_GetNextItem(this,pidl);
return (BOOL32)PidlMgr_GetData(this,PT_DRIVE, pidlTemp, (LPVOID)pOut, uSize);
else if (PidlMgr_IsDrive(this,pidlTemp))
{ return (BOOL32)PidlMgr_GetData(this,PT_DRIVE, pidlTemp, (LPVOID)pOut, uSize);
}
return FALSE;
}
@ -1182,8 +1280,8 @@ LPITEMIDLIST PidlMgr_GetLastItem(LPPIDLMGR this,LPCITEMIDLIST pidl)
*/
DWORD PidlMgr_GetItemText(LPPIDLMGR this,LPCITEMIDLIST pidl, LPSTR lpszText, UINT16 uSize)
{ TRACE(shell,"(%p)->(pidl=%p %p %x)\n",this,pidl,lpszText,uSize);
if (PidlMgr_IsDesktop(this, pidl))
{ return PidlMgr_GetData(this,PT_DESKTOP, pidl, (LPVOID)lpszText, uSize);
if (PidlMgr_IsMyComputer(this, pidl))
{ return PidlMgr_GetData(this,PT_MYCOMP, pidl, (LPVOID)lpszText, uSize);
}
if (PidlMgr_IsDrive(this, pidl))
{ return PidlMgr_GetData(this,PT_DRIVE, pidl, (LPVOID)lpszText, uSize);
@ -1197,10 +1295,15 @@ DWORD PidlMgr_GetItemText(LPPIDLMGR this,LPCITEMIDLIST pidl, LPSTR lpszText, UIN
* PidlMgr_IsValue()
*/
BOOL32 PidlMgr_IsDesktop(LPPIDLMGR this,LPCITEMIDLIST pidl)
{ TRACE(shell,"%p->(%p)\n",this,pidl);
return ( pidl->mkid.cb == 0x00 );
}
BOOL32 PidlMgr_IsMyComputer(LPPIDLMGR this,LPCITEMIDLIST pidl)
{ LPPIDLDATA pData;
TRACE(shell,"%p->(%p)\n",this,pidl);
pData = PidlMgr_GetDataPointer(this,pidl);
return (PT_DESKTOP == pData->type);
return (PT_MYCOMP == pData->type);
}
BOOL32 PidlMgr_IsDrive(LPPIDLMGR this,LPCITEMIDLIST pidl)
@ -1248,8 +1351,7 @@ BOOL32 PidlMgr_HasFolders(LPPIDLMGR this, LPSTR pszPath, LPCITEMIDLIST pidl)
/**************************************************************************
* PidlMgr_GetFolderText()
* Creates a Path string from a PIDL, filtering out the Desktop and the Drive
* value, if either is present.
* Creates a Path string from a PIDL, filtering out the special Folders
*/
DWORD PidlMgr_GetFolderText(LPPIDLMGR this,LPCITEMIDLIST pidl,
LPSTR lpszPath, DWORD dwSize)
@ -1262,12 +1364,9 @@ DWORD PidlMgr_GetFolderText(LPPIDLMGR this,LPCITEMIDLIST pidl,
{ return 0;
}
if(PidlMgr_IsDesktop(this,pidl))
if(PidlMgr_IsMyComputer(this,pidl))
{ pidlTemp = PidlMgr_GetNextItem(this,pidl);
}
else if (PidlMgr_IsFolder(this,pidl))
{ pidlTemp = PidlMgr_GetNextItem(this,pidl);
}
else
{ pidlTemp = (LPITEMIDLIST)pidl;
}
@ -1284,6 +1383,7 @@ DWORD PidlMgr_GetFolderText(LPPIDLMGR this,LPCITEMIDLIST pidl,
}
//add one for the NULL terminator
TRACE(shell,"-- (%p)->(size=%lu)\n",this,dwCopied);
return dwCopied + 1;
}
@ -1299,10 +1399,10 @@ DWORD PidlMgr_GetFolderText(LPPIDLMGR this,LPCITEMIDLIST pidl,
strcat(lpszPath, pData->szText);
strcat(lpszPath, "\\");
dwCopied += strlen(pData->szText) + 1;
pidlTemp = PidlMgr_GetNextItem(this,pidlTemp);
TRACE(shell,"-- (%p)->(size=%lu,%s)\n",this,dwCopied,lpszPath);
}
//remove the last backslash if necessary
@ -1312,6 +1412,7 @@ DWORD PidlMgr_GetFolderText(LPPIDLMGR this,LPCITEMIDLIST pidl,
dwCopied--;
}
}
TRACE(shell,"-- (%p)->(path=%s)\n",this,lpszPath);
return dwCopied;
}
@ -1325,7 +1426,7 @@ DWORD PidlMgr_GetValueText(LPPIDLMGR this,
{ LPITEMIDLIST pidlTemp=pidl;
CHAR szText[MAX_PATH];
TRACE(shell,"(%p)->(pidl=%p %p %lx)\n",this,pidl,lpszValue,dwSize);
TRACE(shell,"(%p)->(pidl=%p %p 0x%08lx)\n",this,pidl,lpszValue,dwSize);
if(!pidl)
{ return 0;
@ -1345,14 +1446,16 @@ DWORD PidlMgr_GetValueText(LPPIDLMGR this,
{ return strlen(szText) + 1;
}
strcpy(lpszValue, szText);
TRACE(shell,"-- (%p)->(pidl=%p %p=%s %lx)\n",this,pidl,lpszValue,lpszValue,dwSize);
TRACE(shell,"-- (%p)->(pidl=%p %p=%s 0x%08lx)\n",this,pidl,lpszValue,lpszValue,dwSize);
return strlen(lpszValue);
}
/**************************************************************************
* PidlMgr_GetValueType()
*/
BOOL32 PidlMgr_GetValueType( LPPIDLMGR this,
LPCITEMIDLIST pidlPath, LPCITEMIDLIST pidlValue, LPDWORD pdwType)
LPCITEMIDLIST pidlPath,
LPCITEMIDLIST pidlValue,
LPDWORD pdwType)
{ LPSTR lpszFolder,
lpszValueName;
DWORD dwNameSize;
@ -1449,7 +1552,7 @@ DWORD PidlMgr_GetDataText( LPPIDLMGR this,
HeapFree(GetProcessHeap(),0,lpszFolder);
HeapFree(GetProcessHeap(),0,lpszValueName);
TRACE(shell,"-- (%p)->(%p=%s %lx)\n",this,lpszOut,lpszOut,dwOutSize);
TRACE(shell,"-- (%p)->(%p=%s 0x%08lx)\n",this,lpszOut,lpszOut,dwOutSize);
return TRUE;
}
@ -1502,7 +1605,10 @@ DWORD PidlMgr_GetPidlPath(LPPIDLMGR this,
* PidlMgr_Concatenate()
* Create a new PIDL by combining two existing PIDLs.
*/
LPITEMIDLIST PidlMgr_Concatenate(LPPIDLMGR this,LPITEMIDLIST pidl1, LPITEMIDLIST pidl2)
LPITEMIDLIST PidlMgr_Concatenate(
LPPIDLMGR this,
LPITEMIDLIST pidl1,
LPITEMIDLIST pidl2)
{ LPITEMIDLIST pidlNew;
UINT32 cb1 = 0, cb2 = 0;
@ -1550,6 +1656,11 @@ LPITEMIDLIST PidlMgr_Create(LPPIDLMGR this,PIDLTYPE type, LPVOID pIn, UINT16 uIn
TRACE(shell,"(%p)->(%x %p %x)\n",this,type,pIn,uInSize);
if ( type == PT_DESKTOP)
{ pidlOut = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,sizeof(ITEMIDLIST));
memset(pidlOut, 0x00, sizeof(ITEMIDLIST));
}
if (! pIn)
{ return NULL;
}
@ -1558,23 +1669,24 @@ LPITEMIDLIST PidlMgr_Create(LPPIDLMGR this,PIDLTYPE type, LPVOID pIn, UINT16 uIn
/* Allocate the memory, adding an additional ITEMIDLIST for the NULL terminating
ID List. */
pidlOut = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,uSize + sizeof(ITEMIDLIST));
memset(pidlOut, 0xAA, uSize);
pidlTemp = pidlOut;
if(pidlOut)
{ pidlTemp->mkid.cb = uSize;
pData = PidlMgr_GetDataPointer(this,pidlTemp);
pData->type = type;
switch(type)
{ case PT_DESKTOP: memcpy(pData->szText, pIn, uInSize);
TRACE(shell,"-- (%p)->create Desktop: %s\n",this,debugstr_a(pData->szText));
{ case PT_MYCOMP: memcpy(pData->szText, pIn, uInSize);
TRACE(shell,"- (%p)->create My Computer: %s\n",this,debugstr_a(pData->szText));
break;
case PT_DRIVE: memcpy(pData->szText, pIn, uInSize);
TRACE(shell,"-- (%p)->create Drive: %s\n",this,debugstr_a(pData->szText));
TRACE(shell,"- (%p)->create Drive: %s\n",this,debugstr_a(pData->szText));
break;
case PT_FOLDER:
case PT_VALUE: memcpy(pData->szText, pIn, uInSize);
TRACE(shell,"-- (%p)->create Value: %s\n",this,debugstr_a(pData->szText));
TRACE(shell,"- (%p)->create Value: %s\n",this,debugstr_a(pData->szText));
break;
default: FIXME(shell,"-- (%p) wrong argument\n",this);
default: FIXME(shell,"- (%p) wrong argument\n",this);
break;
}
@ -1607,21 +1719,21 @@ DWORD PidlMgr_GetData(
//copy the data
switch(type)
{ case PT_DESKTOP: if(uOutSize < 1)
{ case PT_MYCOMP: if(uOutSize < 1)
return 0;
if(PT_DESKTOP != pData->type)
if(PT_MYCOMP != pData->type)
return 0;
*(LPSTR)pOut = 0;
strncpy((LPSTR)pOut, "DESKTOP", uOutSize);
strncpy((LPSTR)pOut, "My Computer", uOutSize);
dwReturn = strlen((LPSTR)pOut);
break;
case PT_DRIVE: if(uOutSize < 1)
return 0;
if(PT_DESKTOP != pData->type)
if(PT_DRIVE != pData->type)
return 0;
*(LPSTR)pOut = 0;
strncpy((LPSTR)pOut, "DRIVE", uOutSize);
strncpy((LPSTR)pOut, pData->szText, uOutSize);
dwReturn = strlen((LPSTR)pOut);
break;
@ -1631,8 +1743,9 @@ DWORD PidlMgr_GetData(
strncpy((LPSTR)pOut, pData->szText, uOutSize);
dwReturn = strlen((LPSTR)pOut);
break;
default: break;
}
TRACE(shell,"-- (%p)->(%p:%s %lx)\n",this,pOut,(char*)pOut,dwReturn);
TRACE(shell,"-- (%p)->(%p=%s 0x%08lx)\n",this,pOut,(char*)pOut,dwReturn);
return dwReturn;
}

View File

@ -15,6 +15,7 @@
#include "heap.h"
#include "compobj.h"
#include "interfaces.h"
#include "storage.h"
#include "shlobj.h"
#include "local.h"
#include "module.h"
@ -31,3 +32,14 @@ CreateFileMoniker16(
FIXME(ole,"(%s,%p),stub!\n",lpszPathName,ppmk);
return E_FAIL;
}
/****************************************************************************
* CreateFileMoniker (OLE32.55)
*/
HRESULT WINAPI
CreateFileMoniker32(
LPCOLESTR32 lpszPathName, /* [in] pathname */
LPMONIKER * ppmk /* [out] new moniker object */
) {
FIXME(ole,"(%s,%p),stub!\n",debugstr_w(lpszPathName),ppmk);
return E_FAIL;
}

View File

@ -8,10 +8,10 @@ LOCVAL(LOCALE_SLANGUAGE,"Catal
LOCVAL(LOCALE_SENGLANGUAGE,"Catalan")
LOCVAL(LOCALE_SABBREVLANGNAME,"cat")
LOCVAL(LOCALE_SNATIVELANGNAME,"Català")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_ICOUNTRY,"34")
LOCVAL(LOCALE_SCOUNTRY,"Espanya")
LOCVAL(LOCALE_SENGCOUNTRY,"Spain")
LOCVAL(LOCALE_SABBREVCTRYNAME,"Es")
LOCVAL(LOCALE_SABBREVCTRYNAME,"ESP")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Espanya")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */

View File

@ -1,21 +1,21 @@
/*
* OLE2NLS library
* Czech Republic
* (Czech strings in iso-8859-2)
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SENGLANGUAGE,"Czech Republic")
LOCVAL(LOCALE_SENGLANGUAGE,"Czech")
LOCVAL(LOCALE_SABBREVLANGNAME,"cze")
LOCVAL(LOCALE_SNATIVELANGNAME,"Èeský jazyk")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_ICOUNTRY,"42")
LOCVAL(LOCALE_SCOUNTRY,"Èeská Republika")
LOCVAL(LOCALE_SENGCOUNTRY,"Czech Republic")
LOCVAL(LOCALE_SABBREVCTRYNAME,"Cz")
/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */
LOCVAL(LOCALE_SNATIVECTRYNAME,"Èeská Republika")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
LOCVAL(LOCALE_IDEFAULTCOUNTRY,"42")
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"895")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */

View File

@ -7,12 +7,12 @@ LOCVAL(LOCALE_ILANGUAGE,"9")
LOCVAL(LOCALE_SLANGUAGE,"Deutsch")
LOCVAL(LOCALE_SENGLANGUAGE,"German")
LOCVAL(LOCALE_SABBREVLANGNAME,"dea")
LOCVAL(LOCALE_SNATIVELANGNAME,"sterreich")
LOCVAL(LOCALE_SNATIVELANGNAME,"Österreich")
LOCVAL(LOCALE_ICOUNTRY,"41")
LOCVAL(LOCALE_SCOUNTRY,"sterreich (Deutsch)")
LOCVAL(LOCALE_SCOUNTRY,"Österreich (Deutsch)")
LOCVAL(LOCALE_SENGCOUNTRY,"Austria")
LOCVAL(LOCALE_SABBREVCTRYNAME,"ATS")
LOCVAL(LOCALE_SNATIVECTRYNAME,"sterreich")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Österreich")
LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
LOCVAL(LOCALE_IDEFAULTCOUNTRY,"41")
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"851")
@ -72,7 +72,7 @@ LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
LOCVAL(LOCALE_SABBREVDAYNAME7,"So")
LOCVAL(LOCALE_SMONTHNAME1,"Jnner")
LOCVAL(LOCALE_SMONTHNAME1,"Jänner")
LOCVAL(LOCALE_SMONTHNAME2,"Februar")
LOCVAL(LOCALE_SMONTHNAME3,"März")
LOCVAL(LOCALE_SMONTHNAME4,"April")
@ -86,7 +86,7 @@ LOCVAL(LOCALE_SMONTHNAME11,"November")
LOCVAL(LOCALE_SMONTHNAME12,"Dezember")
LOCVAL(LOCALE_SMONTHNAME13,"")
LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jn")
LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jän")
LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär")
LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
@ -109,4 +109,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_INEGSYMPRECEDES) */
/* LOCVAL(LOCALE_INEGSEPBYSPACE) */
/* Gregorianischer Kalender */
/* Gregorianischer Kalender */

View File

@ -28,8 +28,8 @@ LOCVAL(LOCALE_ILZERO,"1")
LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789")
LOCVAL(LOCALE_SCURRENCY,"DM")
LOCVAL(LOCALE_SINTLSYMBOL, "DEM")
/* LOCVAL(LOCALE_SMONDECIMALSEP) */
/* LOCVAL(LOCALE_SMONTHOUSANDSEP) */
LOCVAL(LOCALE_SMONDECIMALSEP, ",")
LOCVAL(LOCALE_SMONTHOUSANDSEP, ".")
LOCVAL(LOCALE_SMONGROUPING, "3;0")
LOCVAL(LOCALE_ICURRDIGITS,"2")
/* LOCVAL(LOCALE_IINTLCURRDIGITS) */

View File

@ -4,18 +4,18 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"esa")
LOCVAL(LOCALE_SNATIVELANGNAME,"Panama")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
/* LOCVAL(LOCALE_SCOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"Panamá")
LOCVAL(LOCALE_SENGCOUNTRY,"Panama")
LOCVAL(LOCALE_SABBREVCTRYNAME,"PAN")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Panama")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Panamá")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
@ -57,19 +57,19 @@ LOCVAL(LOCALE_SMONGROUPING,"3;0")
LOCVAL(LOCALE_SDAYNAME1,"lunes")
LOCVAL(LOCALE_SDAYNAME2,"martes")
LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles")
LOCVAL(LOCALE_SDAYNAME3,"miércoles")
LOCVAL(LOCALE_SDAYNAME4,"jueves")
LOCVAL(LOCALE_SDAYNAME5,"viernes")
LOCVAL(LOCALE_SDAYNAME6,"s?abado")
LOCVAL(LOCALE_SDAYNAME6,"sábado")
LOCVAL(LOCALE_SDAYNAME7,"domingo")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"lun")
LOCVAL(LOCALE_SABBREVDAYNAME2,"mar")
LOCVAL(LOCALE_SABBREVDAYNAME3,"mié")
LOCVAL(LOCALE_SABBREVDAYNAME4,"jue")
LOCVAL(LOCALE_SABBREVDAYNAME5,"vie")
LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dom")
LOCVAL(LOCALE_SMONTHNAME1,"enero")
LOCVAL(LOCALE_SMONTHNAME2,"febrero")
@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */
LOCVAL(LOCALE_SPOSITIVESIGN, "")
LOCVAL(LOCALE_SNEGATIVESIGN, "-")
/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */
/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */
/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */

View File

@ -4,18 +4,18 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"esb")
LOCVAL(LOCALE_SNATIVELANGNAME,"Bolivia")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
/* LOCVAL(LOCALE_SCOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"Bolivia")
LOCVAL(LOCALE_SENGCOUNTRY,"Bolivia")
LOCVAL(LOCALE_SABBREVCTRYNAME,"BOL")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Bolivia")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
@ -57,19 +57,19 @@ LOCVAL(LOCALE_SMONGROUPING,"3;0")
LOCVAL(LOCALE_SDAYNAME1,"lunes")
LOCVAL(LOCALE_SDAYNAME2,"martes")
LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles")
LOCVAL(LOCALE_SDAYNAME3,"miércoles")
LOCVAL(LOCALE_SDAYNAME4,"jueves")
LOCVAL(LOCALE_SDAYNAME5,"viernes")
LOCVAL(LOCALE_SDAYNAME6,"s?abado")
LOCVAL(LOCALE_SDAYNAME6,"sábado")
LOCVAL(LOCALE_SDAYNAME7,"domingo")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"lun")
LOCVAL(LOCALE_SABBREVDAYNAME2,"mar")
LOCVAL(LOCALE_SABBREVDAYNAME3,"mié")
LOCVAL(LOCALE_SABBREVDAYNAME4,"jue")
LOCVAL(LOCALE_SABBREVDAYNAME5,"vie")
LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dom")
LOCVAL(LOCALE_SMONTHNAME1,"enero")
LOCVAL(LOCALE_SMONTHNAME2,"febrero")
@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */
LOCVAL(LOCALE_SPOSITIVESIGN, "")
LOCVAL(LOCALE_SNEGATIVESIGN, "-")
/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */
/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */
/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */

View File

@ -4,18 +4,18 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"esa")
LOCVAL(LOCALE_SNATIVELANGNAME,"Costa Rica")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
/* LOCVAL(LOCALE_SCOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"Costa Rica")
LOCVAL(LOCALE_SENGCOUNTRY,"Costa Rica")
LOCVAL(LOCALE_SABBREVCTRYNAME,"CRI")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Costa Rica")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
@ -57,19 +57,19 @@ LOCVAL(LOCALE_S2359, "PM")
LOCVAL(LOCALE_SDAYNAME1,"lunes")
LOCVAL(LOCALE_SDAYNAME2,"martes")
LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles")
LOCVAL(LOCALE_SDAYNAME3,"miércoles")
LOCVAL(LOCALE_SDAYNAME4,"jueves")
LOCVAL(LOCALE_SDAYNAME5,"viernes")
LOCVAL(LOCALE_SDAYNAME6,"s?abado")
LOCVAL(LOCALE_SDAYNAME6,"sábado")
LOCVAL(LOCALE_SDAYNAME7,"domingo")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"lun")
LOCVAL(LOCALE_SABBREVDAYNAME2,"mar")
LOCVAL(LOCALE_SABBREVDAYNAME3,"mié")
LOCVAL(LOCALE_SABBREVDAYNAME4,"jue")
LOCVAL(LOCALE_SABBREVDAYNAME5,"vie")
LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dom")
LOCVAL(LOCALE_SMONTHNAME1,"enero")
LOCVAL(LOCALE_SMONTHNAME2,"febrero")
@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */
LOCVAL(LOCALE_SPOSITIVESIGN, "")
LOCVAL(LOCALE_SNEGATIVESIGN, "-")
/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */
/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */
/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */

View File

@ -4,18 +4,18 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"esd")
LOCVAL(LOCALE_SNATIVELANGNAME,"Rep?blica Dominicana")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
/* LOCVAL(LOCALE_SCOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"República Dominicana")
LOCVAL(LOCALE_SENGCOUNTRY,"Dominican Republic")
LOCVAL(LOCALE_SABBREVCTRYNAME,"DMA")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a")
LOCVAL(LOCALE_SNATIVECTRYNAME,"República Dominicana")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
@ -57,19 +57,19 @@ LOCVAL(LOCALE_SMONGROUPING,"3;0")
LOCVAL(LOCALE_SDAYNAME1,"lunes")
LOCVAL(LOCALE_SDAYNAME2,"martes")
LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles")
LOCVAL(LOCALE_SDAYNAME3,"miércoles")
LOCVAL(LOCALE_SDAYNAME4,"jueves")
LOCVAL(LOCALE_SDAYNAME5,"viernes")
LOCVAL(LOCALE_SDAYNAME6,"s?abado")
LOCVAL(LOCALE_SDAYNAME6,"sábado")
LOCVAL(LOCALE_SDAYNAME7,"domingo")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"lun")
LOCVAL(LOCALE_SABBREVDAYNAME2,"mar")
LOCVAL(LOCALE_SABBREVDAYNAME3,"mié")
LOCVAL(LOCALE_SABBREVDAYNAME4,"jue")
LOCVAL(LOCALE_SABBREVDAYNAME5,"vie")
LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dom")
LOCVAL(LOCALE_SMONTHNAME1,"enero")
LOCVAL(LOCALE_SMONTHNAME2,"febrero")
@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */
LOCVAL(LOCALE_SPOSITIVESIGN, "")
LOCVAL(LOCALE_SNEGATIVESIGN, "-")
/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */
/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */
/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */

View File

@ -4,18 +4,18 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"ese")
LOCVAL(LOCALE_SNATIVELANGNAME,"Espaol")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
/* LOCVAL(LOCALE_SCOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"El Salvador")
LOCVAL(LOCALE_SENGCOUNTRY,"El Salvador")
LOCVAL(LOCALE_SABBREVCTRYNAME,"SVD")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Espa€a")
LOCVAL(LOCALE_SNATIVECTRYNAME,"El Salvador")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
@ -57,19 +57,19 @@ LOCVAL(LOCALE_SMONGROUPING,"3;0")
LOCVAL(LOCALE_SDAYNAME1,"lunes")
LOCVAL(LOCALE_SDAYNAME2,"martes")
LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles")
LOCVAL(LOCALE_SDAYNAME3,"miércoles")
LOCVAL(LOCALE_SDAYNAME4,"jueves")
LOCVAL(LOCALE_SDAYNAME5,"viernes")
LOCVAL(LOCALE_SDAYNAME6,"s?abado")
LOCVAL(LOCALE_SDAYNAME6,"sábado")
LOCVAL(LOCALE_SDAYNAME7,"domingo")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"lun")
LOCVAL(LOCALE_SABBREVDAYNAME2,"mar")
LOCVAL(LOCALE_SABBREVDAYNAME3,"mié")
LOCVAL(LOCALE_SABBREVDAYNAME4,"jue")
LOCVAL(LOCALE_SABBREVDAYNAME5,"vie")
LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dom")
LOCVAL(LOCALE_SMONTHNAME1,"enero")
LOCVAL(LOCALE_SMONTHNAME2,"febrero")
@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */
LOCVAL(LOCALE_SPOSITIVESIGN, "")
LOCVAL(LOCALE_SNEGATIVESIGN, "-")
/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */
/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */
/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */

View File

@ -4,10 +4,10 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"esf")
LOCVAL(LOCALE_SNATIVELANGNAME,"Espaol")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"Ecuador")
LOCVAL(LOCALE_SENGCOUNTRY,"Ecuador")
@ -15,7 +15,7 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"ECU")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Ecuador")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
@ -57,21 +57,21 @@ LOCVAL(LOCALE_SMONGROUPING, "3;0")
LOCVAL(LOCALE_SDAYNAME1,"lunes")
LOCVAL(LOCALE_SDAYNAME2,"martes")
LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles")
LOCVAL(LOCALE_SDAYNAME3,"miércoles")
LOCVAL(LOCALE_SDAYNAME4,"jueves")
LOCVAL(LOCALE_SDAYNAME5,"viernes")
LOCVAL(LOCALE_SDAYNAME6,"s?abado")
LOCVAL(LOCALE_SDAYNAME6,"sábado")
LOCVAL(LOCALE_SDAYNAME7,"domingo")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"lun")
LOCVAL(LOCALE_SABBREVDAYNAME2,"mar")
LOCVAL(LOCALE_SABBREVDAYNAME3,"mié")
LOCVAL(LOCALE_SABBREVDAYNAME4,"jue")
LOCVAL(LOCALE_SABBREVDAYNAME5,"vie")
LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dom")
/* LOCVAL(LOCALE_SMONTHNAME1,"") */
LOCVAL(LOCALE_SMONTHNAME1,"enero")
LOCVAL(LOCALE_SMONTHNAME2,"febrero")
LOCVAL(LOCALE_SMONTHNAME3,"marzo")
LOCVAL(LOCALE_SMONTHNAME4,"abril")
@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */
LOCVAL(LOCALE_SPOSITIVESIGN, "")
LOCVAL(LOCALE_SNEGATIVESIGN, "-")
/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */
/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */
/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */

View File

@ -4,10 +4,10 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"esg")
LOCVAL(LOCALE_SNATIVELANGNAME,"Espaol")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"Guatemala")
LOCVAL(LOCALE_SENGCOUNTRY,"Guatemala")
@ -15,7 +15,7 @@ LOCVAL(LOCALE_SABBREVCTRYNAME,"GTM")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Guatemala")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
@ -57,21 +57,21 @@ LOCVAL(LOCALE_SMONGROUPING, "3;0")
LOCVAL(LOCALE_SDAYNAME1,"lunes")
LOCVAL(LOCALE_SDAYNAME2,"martes")
LOCVAL(LOCALE_SDAYNAME3,"mi?rcoles")
LOCVAL(LOCALE_SDAYNAME3,"miércoles")
LOCVAL(LOCALE_SDAYNAME4,"jueves")
LOCVAL(LOCALE_SDAYNAME5,"viernes")
LOCVAL(LOCALE_SDAYNAME6,"s?abado")
LOCVAL(LOCALE_SDAYNAME6,"sábado")
LOCVAL(LOCALE_SDAYNAME7,"domingo")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"lun") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"mar") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"mi?") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"jue") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"vie") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"lun")
LOCVAL(LOCALE_SABBREVDAYNAME2,"mar")
LOCVAL(LOCALE_SABBREVDAYNAME3,"mié")
LOCVAL(LOCALE_SABBREVDAYNAME4,"jue")
LOCVAL(LOCALE_SABBREVDAYNAME5,"vie")
LOCVAL(LOCALE_SABBREVDAYNAME6,"sáb")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dom")
/* LOCVAL(LOCALE_SMONTHNAME1,"") */
LOCVAL(LOCALE_SMONTHNAME1,"enero")
LOCVAL(LOCALE_SMONTHNAME2,"febrero")
LOCVAL(LOCALE_SMONTHNAME3,"marzo")
LOCVAL(LOCALE_SMONTHNAME4,"abril")
@ -99,8 +99,8 @@ LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dic")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */
LOCVAL(LOCALE_SPOSITIVESIGN, "")
LOCVAL(LOCALE_SNEGATIVESIGN, "-")
/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */
/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */
/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */

View File

@ -4,10 +4,10 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español (Honduras)")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish (Honduras)")
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"esh")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español (Honduras)")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"Honduras")
LOCVAL(LOCALE_SENGCOUNTRY,"Honduras")

View File

@ -4,10 +4,10 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Español (Nicaragua)")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish (Nicaragua)")
LOCVAL(LOCALE_SLANGUAGE,"Español")
LOCVAL(LOCALE_SENGLANGUAGE,"Spanish")
LOCVAL(LOCALE_SABBREVLANGNAME,"esi")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español (Nicaragua)")
LOCVAL(LOCALE_SNATIVELANGNAME,"Español")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"Nicaragua")
LOCVAL(LOCALE_SENGCOUNTRY,"Nicaragua")

View File

@ -8,7 +8,7 @@ LOCVAL(LOCALE_SLANGUAGE,"")
LOCVAL(LOCALE_SENGLANGUAGE,"Faroese")
LOCVAL(LOCALE_SABBREVLANGNAME,"fos")
LOCVAL(LOCALE_SNATIVELANGNAME,"f?royskt")
/* LOCVAL(LOCALE_ICOUNTRY,"49") */
LOCVAL(LOCALE_ICOUNTRY,"298")
LOCVAL(LOCALE_SCOUNTRY,"")
LOCVAL(LOCALE_SENGCOUNTRY,"Faroe Islands")
LOCVAL(LOCALE_SABBREVCTRYNAME,"FRS")
@ -55,19 +55,19 @@ LOCVAL(LOCALE_ITLZERO,"1")
/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
LOCVAL(LOCALE_SDAYNAME1,"mnadagur")
LOCVAL(LOCALE_SDAYNAME2,"?osdagur")
LOCVAL(LOCALE_SDAYNAME1,"mánadagur")
LOCVAL(LOCALE_SDAYNAME2,"sdagur")
LOCVAL(LOCALE_SDAYNAME3,"mikudagur")
LOCVAL(LOCALE_SDAYNAME4,"h?sdagur")
LOCVAL(LOCALE_SDAYNAME5,"fr?ggjadagur")
LOCVAL(LOCALE_SDAYNAME4,"hósdagur")
LOCVAL(LOCALE_SDAYNAME5,"fríggjadagur")
LOCVAL(LOCALE_SDAYNAME6,"leygardagur")
LOCVAL(LOCALE_SDAYNAME7,"sunnudagur")
LOCVAL(LOCALE_SABBREVDAYNAME1,"m?n")
LOCVAL(LOCALE_SABBREVDAYNAME2,"t?s")
LOCVAL(LOCALE_SABBREVDAYNAME1,"mán")
LOCVAL(LOCALE_SABBREVDAYNAME2,"týs")
LOCVAL(LOCALE_SABBREVDAYNAME3,"mik")
LOCVAL(LOCALE_SABBREVDAYNAME4,"h?s")
LOCVAL(LOCALE_SABBREVDAYNAME5,"fr?")
LOCVAL(LOCALE_SABBREVDAYNAME4,"hós")
LOCVAL(LOCALE_SABBREVDAYNAME5,"frí")
LOCVAL(LOCALE_SABBREVDAYNAME6,"ley")
LOCVAL(LOCALE_SABBREVDAYNAME7,"sun")

View File

@ -11,7 +11,7 @@ LOCVAL(LOCALE_SNATIVELANGNAME,"Fran
LOCVAL(LOCALE_ICOUNTRY,"33")
LOCVAL(LOCALE_SCOUNTRY,"France")
LOCVAL(LOCALE_SENGCOUNTRY,"France")
LOCVAL(LOCALE_SABBREVCTRYNAME,"Fr")
LOCVAL(LOCALE_SABBREVCTRYNAME,"FRA")
LOCVAL(LOCALE_SNATIVECTRYNAME,"France")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
@ -108,4 +108,4 @@ LOCVAL(LOCALE_SNEGATIVESIGN, "-")
/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */
/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */
/* calendrier grgorien */
/* calendrier grégorien */

View File

@ -11,7 +11,7 @@ LOCVAL(LOCALE_SNATIVELANGNAME,"Fran
LOCVAL(LOCALE_ICOUNTRY,"32")
LOCVAL(LOCALE_SCOUNTRY,"Belgique")
LOCVAL(LOCALE_SENGCOUNTRY,"Belgium")
LOCVAL(LOCALE_SABBREVCTRYNAME,"Be")
LOCVAL(LOCALE_SABBREVCTRYNAME,"BEL")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Belgique")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */

View File

@ -7,9 +7,9 @@
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SENGLANGUAGE,"French")
LOCVAL(LOCALE_SABBREVLANGNAME,"frc")
LOCVAL(LOCALE_SNATIVELANGNAME,"franais")
LOCVAL(LOCALE_SNATIVELANGNAME,"français")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
/* LOCVAL(LOCALE_SCOUNTRY,"") */
LOCVAL(LOCALE_SCOUNTRY,"Canada")
LOCVAL(LOCALE_SENGCOUNTRY,"Canada")
LOCVAL(LOCALE_SABBREVCTRYNAME,"CAN")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Canada")
@ -72,31 +72,31 @@ LOCVAL(LOCALE_SABBREVDAYNAME6,"sam")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dim")
LOCVAL(LOCALE_SMONTHNAME1,"janvier")
LOCVAL(LOCALE_SMONTHNAME2,"fvrier")
LOCVAL(LOCALE_SMONTHNAME2,"février")
LOCVAL(LOCALE_SMONTHNAME3,"mars")
LOCVAL(LOCALE_SMONTHNAME4,"avril")
LOCVAL(LOCALE_SMONTHNAME5,"mai")
LOCVAL(LOCALE_SMONTHNAME6,"juin")
LOCVAL(LOCALE_SMONTHNAME7,"juillet")
LOCVAL(LOCALE_SMONTHNAME8,"aot")
LOCVAL(LOCALE_SMONTHNAME8,"août")
LOCVAL(LOCALE_SMONTHNAME9,"septembre")
LOCVAL(LOCALE_SMONTHNAME10,"octobre")
LOCVAL(LOCALE_SMONTHNAME11,"novembre")
LOCVAL(LOCALE_SMONTHNAME12,"dcembre")
LOCVAL(LOCALE_SMONTHNAME12,"décembre")
LOCVAL(LOCALE_SMONTHNAME13,"")
LOCVAL(LOCALE_SABBREVMONTHNAME1,"janv")
LOCVAL(LOCALE_SABBREVMONTHNAME2,"fvr")
LOCVAL(LOCALE_SABBREVMONTHNAME2,"févr")
LOCVAL(LOCALE_SABBREVMONTHNAME3,"mars")
LOCVAL(LOCALE_SABBREVMONTHNAME4,"avr")
LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai")
LOCVAL(LOCALE_SABBREVMONTHNAME6,"juin")
LOCVAL(LOCALE_SABBREVMONTHNAME7,"juil")
LOCVAL(LOCALE_SABBREVMONTHNAME8,"aot")
LOCVAL(LOCALE_SABBREVMONTHNAME8,"août")
LOCVAL(LOCALE_SABBREVMONTHNAME9,"sept")
LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct")
LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dc")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"déc")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
@ -108,4 +108,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */
/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */
/* calendrier grgorien */
/* calendrier grégorien */

View File

@ -4,18 +4,18 @@
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SLANGUAGE,"Français")
LOCVAL(LOCALE_SENGLANGUAGE,"French")
LOCVAL(LOCALE_SABBREVLANGNAME,"frl")
LOCVAL(LOCALE_SNATIVELANGNAME,"franais")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_SNATIVELANGNAME,"français")
LOCVAL(LOCALE_ICOUNTRY,"352")
LOCVAL(LOCALE_SCOUNTRY,"Luxembourg")
LOCVAL(LOCALE_SENGCOUNTRY,"Luxemburg")
LOCVAL(LOCALE_SABBREVCTRYNAME,"LUX")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Luxembourg")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
LOCVAL(LOCALE_IDEFAULTCODEPAGE,"850")
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
@ -72,31 +72,31 @@ LOCVAL(LOCALE_SABBREVDAYNAME6,"sam")
LOCVAL(LOCALE_SABBREVDAYNAME7,"dim")
LOCVAL(LOCALE_SMONTHNAME1,"janvier")
LOCVAL(LOCALE_SMONTHNAME2,"fvrier")
LOCVAL(LOCALE_SMONTHNAME2,"février")
LOCVAL(LOCALE_SMONTHNAME3,"mars")
LOCVAL(LOCALE_SMONTHNAME4,"avril")
LOCVAL(LOCALE_SMONTHNAME5,"mai")
LOCVAL(LOCALE_SMONTHNAME6,"juin")
LOCVAL(LOCALE_SMONTHNAME7,"juillet")
LOCVAL(LOCALE_SMONTHNAME8,"aot")
LOCVAL(LOCALE_SMONTHNAME8,"août")
LOCVAL(LOCALE_SMONTHNAME9,"septembre")
LOCVAL(LOCALE_SMONTHNAME10,"octobre")
LOCVAL(LOCALE_SMONTHNAME11,"novembre")
LOCVAL(LOCALE_SMONTHNAME12,"dcembre")
LOCVAL(LOCALE_SMONTHNAME12,"décembre")
LOCVAL(LOCALE_SMONTHNAME13,"")
LOCVAL(LOCALE_SABBREVMONTHNAME1,"janv")
LOCVAL(LOCALE_SABBREVMONTHNAME2,"fvr")
LOCVAL(LOCALE_SABBREVMONTHNAME2,"févr")
LOCVAL(LOCALE_SABBREVMONTHNAME3,"mars")
LOCVAL(LOCALE_SABBREVMONTHNAME4,"avr")
LOCVAL(LOCALE_SABBREVMONTHNAME5,"mai")
LOCVAL(LOCALE_SABBREVMONTHNAME6,"juin")
LOCVAL(LOCALE_SABBREVMONTHNAME7,"juil")
LOCVAL(LOCALE_SABBREVMONTHNAME8,"aot")
LOCVAL(LOCALE_SABBREVMONTHNAME8,"août")
LOCVAL(LOCALE_SABBREVMONTHNAME9,"sept")
LOCVAL(LOCALE_SABBREVMONTHNAME10,"oct")
LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"déc")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
@ -108,4 +108,4 @@ LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */
/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */
/* calendrier grgorien */
/* calendrier grégorien */

View File

@ -8,10 +8,10 @@ LOCVAL(LOCALE_SLANGUAGE,"Fran
LOCVAL(LOCALE_SENGLANGUAGE,"French (Switzerland)")
LOCVAL(LOCALE_SABBREVLANGNAME,"frs")
LOCVAL(LOCALE_SNATIVELANGNAME,"Français (Suisse)")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_ICOUNTRY,"41")
LOCVAL(LOCALE_SCOUNTRY,"Suisse")
LOCVAL(LOCALE_SENGCOUNTRY,"Switzerland")
LOCVAL(LOCALE_SABBREVCTRYNAME,"Ch")
/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */
LOCVAL(LOCALE_SNATIVECTRYNAME,"Suisse")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */

View File

@ -1,6 +1,7 @@
/*
* OLE2NLS library
* Greek
* (Greek strings in iso-8859-7)
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
@ -8,9 +9,9 @@
LOCVAL(LOCALE_SENGLANGUAGE,"Greek")
LOCVAL(LOCALE_SABBREVLANGNAME,"grc")
/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */
/* LOCVAL(LOCALE_ICOUNTRY,"") */
LOCVAL(LOCALE_ICOUNTRY,"30")
/* LOCVAL(LOCALE_SCOUNTRY,"") */
/* LOCVAL(LOCALE_SENGCOUNTRY,"") */
LOCVAL(LOCALE_SENGCOUNTRY,"Greece")
/* LOCVAL(LOCALE_SABBREVCTRYNAME,"") */
/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
@ -26,7 +27,7 @@ LOCVAL(LOCALE_SABBREVLANGNAME,"grc")
/* LOCVAL(LOCALE_ILZERO,"1") */
/* LOCVAL(LOCALE_INEGNUMBER) */
LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789")
/* LOCVAL(LOCALE_SCURRENCY,"") */
LOCVAL(LOCALE_SCURRENCY,"äñ÷")
LOCVAL(LOCALE_SINTLSYMBOL, "GRD")
/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */
/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */
@ -55,48 +56,48 @@ LOCVAL(LOCALE_SMONGROUPING, "3;0")
/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
/* LOCVAL(LOCALE_SDAYNAME1,"") */
/* LOCVAL(LOCALE_SDAYNAME2,"") */
/* LOCVAL(LOCALE_SDAYNAME3,"") */
/* LOCVAL(LOCALE_SDAYNAME4,"") */
/* LOCVAL(LOCALE_SDAYNAME5,"") */
/* LOCVAL(LOCALE_SDAYNAME6,"") */
/* LOCVAL(LOCALE_SDAYNAME7,"") */
LOCVAL(LOCALE_SDAYNAME1,"ÄåõôÝñá")
LOCVAL(LOCALE_SDAYNAME2,"Ôñßôç")
LOCVAL(LOCALE_SDAYNAME3,"ÔåôÜñôç")
LOCVAL(LOCALE_SDAYNAME4,"ÐÝìðôç")
LOCVAL(LOCALE_SDAYNAME5,"ÐáñáóêåõÞ")
LOCVAL(LOCALE_SDAYNAME6,"ÓáââÜôï")
LOCVAL(LOCALE_SDAYNAME7,"Êõñéáêç")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"On") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"To") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"Äåõ")
LOCVAL(LOCALE_SABBREVDAYNAME2,"Ôñé")
LOCVAL(LOCALE_SABBREVDAYNAME3,"Ôåô")
LOCVAL(LOCALE_SABBREVDAYNAME4,"Ðåì")
LOCVAL(LOCALE_SABBREVDAYNAME5,"Ðáñ")
LOCVAL(LOCALE_SABBREVDAYNAME6,"Óáâ")
LOCVAL(LOCALE_SABBREVDAYNAME7,"Êõñ")
/* LOCVAL(LOCALE_SMONTHNAME1,"") */
/* LOCVAL(LOCALE_SMONTHNAME2,"") */
/* LOCVAL(LOCALE_SMONTHNAME3,"") */
/* LOCVAL(LOCALE_SMONTHNAME4,"") */
/* LOCVAL(LOCALE_SMONTHNAME5,"") */
/* LOCVAL(LOCALE_SMONTHNAME6,"") */
/* LOCVAL(LOCALE_SMONTHNAME7,"") */
/* LOCVAL(LOCALE_SMONTHNAME8,"") */
/* LOCVAL(LOCALE_SMONTHNAME9,"") */
/* LOCVAL(LOCALE_SMONTHNAME10,"") */
/* LOCVAL(LOCALE_SMONTHNAME11,"") */
/* LOCVAL(LOCALE_SMONTHNAME12,"") */
LOCVAL(LOCALE_SMONTHNAME1,"ÉáíïÜñéïò")
LOCVAL(LOCALE_SMONTHNAME2,"ÖåâñïÜñéïò")
LOCVAL(LOCALE_SMONTHNAME3,"ÌÜñôéïò")
LOCVAL(LOCALE_SMONTHNAME4,"Áðñßëéïò")
LOCVAL(LOCALE_SMONTHNAME5,"ÌÜéïò")
LOCVAL(LOCALE_SMONTHNAME6,"Éïýíéïò")
LOCVAL(LOCALE_SMONTHNAME7,"Éïýëéïò")
LOCVAL(LOCALE_SMONTHNAME8,"Áýãïõóôïò")
LOCVAL(LOCALE_SMONTHNAME9,"ÓåðôÝìâñéïò")
LOCVAL(LOCALE_SMONTHNAME10,"Ïêôþâñéïò")
LOCVAL(LOCALE_SMONTHNAME11,"ÍïÝìâñéïò")
LOCVAL(LOCALE_SMONTHNAME12,"ÄåêÝìâñéïò")
/* LOCVAL(LOCALE_SMONTHNAME13,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */
LOCVAL(LOCALE_SABBREVMONTHNAME1,"Éáí")
LOCVAL(LOCALE_SABBREVMONTHNAME2,"Öåâ")
LOCVAL(LOCALE_SABBREVMONTHNAME3,"ÌÜñ")
LOCVAL(LOCALE_SABBREVMONTHNAME4,"Áðñ")
LOCVAL(LOCALE_SABBREVMONTHNAME5,"ÌÜé")
LOCVAL(LOCALE_SABBREVMONTHNAME6,"Éïýí")
LOCVAL(LOCALE_SABBREVMONTHNAME7,"Éïýë")
LOCVAL(LOCALE_SABBREVMONTHNAME8,"Áýã")
LOCVAL(LOCALE_SABBREVMONTHNAME9,"Óåð")
LOCVAL(LOCALE_SABBREVMONTHNAME10,"Ïêô")
LOCVAL(LOCALE_SABBREVMONTHNAME11,"ÍïÝ")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"Äåê")
/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */

View File

@ -1,6 +1,7 @@
/*
* OLE2NLS library
* Croatia
* (Croatian strings in iso-8859-2)
*/
/* LOCVAL(LOCALE_ILANGUAGE,"") */
@ -11,7 +12,7 @@ LOCVAL(LOCALE_SNATIVELANGNAME,"hrvatski")
/* LOCVAL(LOCALE_ICOUNTRY,"") */
/* LOCVAL(LOCALE_SCOUNTRY,"") */
LOCVAL(LOCALE_SENGCOUNTRY,"Croatia")
/* LOCVAL(LOCALE_SABBREVCTRYNAME,"HRV")
LOCVAL(LOCALE_SABBREVCTRYNAME,"HRV")
LOCVAL(LOCALE_SNATIVECTRYNAME,"Hrvatska")
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"") */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
@ -55,49 +56,48 @@ LOCVAL(LOCALE_SMONGROUPING,"3;0")
/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
/* LOCVAL(LOCALE_SDAYNAME1,"ponedj") */
/* LOCVAL(LOCALE_SDAYNAME2,"eljak") */
/* LOCVAL(LOCALE_SDAYNAME3,"utorak") */
/* LOCVAL(LOCALE_SDAYNAME4,"srijeda") */
/* LOCVAL(LOCALE_SDAYNAME5,"etvrtak") */
/* LOCVAL(LOCALE_SDAYNAME6,"petak") */
/* LOCVAL(LOCALE_SDAYNAME7,"subota") */
/* LOCVAL(LOCALE_SDAYNAME?,"nedjelja") */
LOCVAL(LOCALE_SDAYNAME1,"ponedeljak")
LOCVAL(LOCALE_SDAYNAME2,"utorak")
LOCVAL(LOCALE_SDAYNAME3,"sreda")
LOCVAL(LOCALE_SDAYNAME4,"èetvrtak")
LOCVAL(LOCALE_SDAYNAME5,"petak")
LOCVAL(LOCALE_SDAYNAME6,"subota")
LOCVAL(LOCALE_SDAYNAME7,"nedelja")
/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */
LOCVAL(LOCALE_SABBREVDAYNAME1,"pon")
LOCVAL(LOCALE_SABBREVDAYNAME2,"tor")
LOCVAL(LOCALE_SABBREVDAYNAME3,"sre")
LOCVAL(LOCALE_SABBREVDAYNAME4,"èet")
LOCVAL(LOCALE_SABBREVDAYNAME5,"pet")
LOCVAL(LOCALE_SABBREVDAYNAME6,"sub")
LOCVAL(LOCALE_SABBREVDAYNAME7,"ned")
LOCVAL(LOCALE_SMONTHNAME1,"sije?anj")
LOCVAL(LOCALE_SMONTHNAME2,"velja")
LOCVAL(LOCALE_SMONTHNAME3,"o?ujak")
LOCVAL(LOCALE_SMONTHNAME4,"travanj")
LOCVAL(LOCALE_SMONTHNAME5,"svibanj")
LOCVAL(LOCALE_SMONTHNAME6,"lipanj")
LOCVAL(LOCALE_SMONTHNAME7,"srpanj")
LOCVAL(LOCALE_SMONTHNAME7,"kolovoz")
LOCVAL(LOCALE_SMONTHNAME9,"rujan")
LOCVAL(LOCALE_SMONTHNAME10,"listopad")
LOCVAL(LOCALE_SMONTHNAME11,"studeni")
LOCVAL(LOCALE_SMONTHNAME12,"prosinac")
LOCVAL(LOCALE_SMONTHNAME1,"januar")
LOCVAL(LOCALE_SMONTHNAME2,"februar")
LOCVAL(LOCALE_SMONTHNAME3,"mart")
LOCVAL(LOCALE_SMONTHNAME4,"april")
LOCVAL(LOCALE_SMONTHNAME5,"maj")
LOCVAL(LOCALE_SMONTHNAME6,"jun")
LOCVAL(LOCALE_SMONTHNAME7,"jul")
LOCVAL(LOCALE_SMONTHNAME7,"august")
LOCVAL(LOCALE_SMONTHNAME9,"septembar")
LOCVAL(LOCALE_SMONTHNAME10,"oktobar")
LOCVAL(LOCALE_SMONTHNAME11,"novembar")
LOCVAL(LOCALE_SMONTHNAME12,"decembar")
LOCVAL(LOCALE_SMONTHNAME12,"")
LOCVAL(LOCALE_SABBREVMONTHNAME1,"sij")
LOCVAL(LOCALE_SABBREVMONTHNAME2,"vel")
LOCVAL(LOCALE_SABBREVMONTHNAME3,"o?u")
LOCVAL(LOCALE_SABBREVMONTHNAME4,"tra")
LOCVAL(LOCALE_SABBREVMONTHNAME5,"svi")
LOCVAL(LOCALE_SABBREVMONTHNAME6,"lip")
LOCVAL(LOCALE_SABBREVMONTHNAME7,"srp")
LOCVAL(LOCALE_SABBREVMONTHNAME8,"kol")
LOCVAL(LOCALE_SABBREVMONTHNAME9,"ruj")
LOCVAL(LOCALE_SABBREVMONTHNAME10,"lis")
LOCVAL(LOCALE_SABBREVMONTHNAME11,"stu")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"pro")
LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan")
LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb")
LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar")
LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr")
LOCVAL(LOCALE_SABBREVMONTHNAME5,"maj")
LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun")
LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul")
LOCVAL(LOCALE_SABBREVMONTHNAME8,"aug")
LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep")
LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt")
LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec")
LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */

View File

@ -1,6 +1,7 @@
/*
* OLE2NLS library
* Hungarian
* (Hungarian strings in iso-8859-2)
*/
LOCVAL(LOCALE_ILANGUAGE,"9")

View File

@ -8,13 +8,13 @@ LOCVAL(LOCALE_SLANGUAGE, "English")
LOCVAL(LOCALE_SENGLANGUAGE, "English")
LOCVAL(LOCALE_SABBREVLANGNAME, "irl")
LOCVAL(LOCALE_SNATIVELANGNAME, "English")
LOCVAL(LOCALE_ICOUNTRY, "1")
LOCVAL(LOCALE_ICOUNTRY, "353")
LOCVAL(LOCALE_SCOUNTRY, "Ireland")
LOCVAL(LOCALE_SENGCOUNTRY, "Ireland")
LOCVAL(LOCALE_SABBREVCTRYNAME, "IRL")
LOCVAL(LOCALE_SNATIVECTRYNAME, "Eire")
LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0409")
LOCVAL(LOCALE_IDEFAULTCOUNTRY, "1")
LOCVAL(LOCALE_IDEFAULTCOUNTRY, "353")
LOCVAL(LOCALE_IDEFAULTCODEPAGE, "437")
LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252")
LOCVAL(LOCALE_SLIST, ",")
@ -108,4 +108,4 @@ LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
/* Gregorian Calendar */
/* Gregorian Calendar */

Some files were not shown because too many files have changed in this diff Show More