Release 950918

Sun Sep 17 16:47:49 1995  Alexandre Julliard  <julliard@sunsite.unc.edu>

	* [configure.in] [*/Makefile.in] [Make.rules.in]
	Cleaned up makefiles, added configuration option for Winelib,
	grouped common make rules in Make.rules.in.

	* [Configure]
	Renamed to 'Configure.old'; please use 'configure' instead.

	* [controls/menu.c]
	Fixed DestroyMenu() to avoid deleting the same menu twice.
	More fixes to WM_MENUSELECT, and added WM_INITMENU.

	* [if1632/relay.c]
	Fixed wrong register values displayed by RELAY_DebugCall32().

	* [memory/local.c]
	Fixed LocalLock() and LocalUnlock() to increment/decrement the
	lock count for moveable blocks.

	* [misc/commdlg.c] [misc/shell.c] [rc/winerc.c]
	Modified the generated C file so that the resource information
	(size, etc.) is also exported.
	Modified common dialogs to use the new informations.

	* [misc/main.c] [ANNOUNCE]
	Update the list of contributors. Please let me know if I forgot
	someone.

	* [rc/sysres.rc] [rc/sysres_En.rc]
	Moved English resources to sysres_En.rc.
	Changed ids from numeric to symbolic for dialogs.

	* [windows/dialog.c]
	Modified template parsing to be able to pass segmented pointers to
	CreateWindow().

	* [windows/win.c]
	CreateWindow() now takes segmented pointers for class and window
	names.
	Maxmimize or minimize the window upon creation if the WS_MAXIMIZE
	or WS_MINIMIZE bits are set.

Thu Sep 14 17:19:57 1995  Paul Wilhelm  <paul@paul.accessone.com>

	* [controls/scroll.c]
	Fixed scroll-bar bugs for non-client windows.

Thu Sep 14 14:04:14 MET DST 1995 Jochen Hoenicke <Jochen.Hoenicke@arbi.Informatik.Uni-Oldenburg.de>

	* [include/cursor.h] [windows/cursor.c]
	Cursor is not mirrored any more and the hotspot is set right.

Wed Sep 13 14:22:31 1995  Marcus Meissner  <msmeissn@faui01.informatik.uni-erlangen.de>

	* [ole.h]
	Misc small fixes.

Mon Sep  4 00:01:23 1995  Jon Tombs <jon@gte.esi.us.es>

	* [rc/sysres_Es.rc]
	First attempt at Spanish [Es] language support.

Sun Sep  3 13:22:33 1995     Martin von Loewis <loewis@informatik.hu-berlin.de>

	* [include/alias.h][windows/alias.c][include/relay32.h]
	New files

	* [controls/widgets.c]
	WIDGETS_Init: register alias window procedures

	* [if1632/callback.c]
	CallWndProc: Call alias functions if necessary

	* [if1632/gdi32.spec]
	GetStockObject, TextOutA: new relays

	* [misc/user32.c][if1632/user32.spec][misc/Makefile.in][misc/Imakefile]
	user32.c: new file
	BeginPaint,CreateWindowExA,DefWindowProcA,DispatchMessage,EndPaint,
	GetMessageA,RegisterClassA,ShowWindow,UpdateWindow: new relays

	* [if1632/winprocs32.spec][loader/pe_image.c][loader/module.c]
	PE_Win32CallToStart: new function
	MODULE_CreateInstance: removed static attribute
	LoadModule: Try loading PE image on error 21
	PE_LoadModule: new function
	PE_LoadImage: initialize pe_data with 0
	
	* [include/dlls.h][include/peexe.h]
	moved pe_data and w_files to peexe.h
	
	* [misc/shell.c]
	ShellAbout: Register AboutWndProc aliases

	* [miscemu/int21.c]
	handle 0x440A and 0xDC

	* [miscemu/int2f.c]
	handle 0x84

	* [objects/dib.c]
	CreateDIBitmap: complain if BITMAPINFOHEADER is of wrong size

	* [tools/build.c]
	include windows.h and relay32.h into generated Win32 relays,
	don't declare the implementation as int (*)();
	limit in WIN32_builtin was off by one

	* [windows/caret.c]
	CARET_Initialize: new function, call on strategic places

	* [windows/messagebox.c]
	MessageBox: register message box proc aliases

	* [if1632/advapi32.spec][if1632/comdlg32.spec]
	New files

	* [if1632/Makefile.in][if1632/Imakefile][if1632/relay32.c]
	added new spec files
	RELAY32_GetBuiltinDLL: perform lookup case insensitive
	RELAY32_GetEntryPoint: start name search at 0

	* [if1632/user.spec][if1632/kernel.spec][if1632/gdi.spec]
	Added stubs for new Win95 API

Sat Sep 2 1995  Martin Roy

	* [misc/commdlg.c]
	In WM_INITDIALOG, current filter must reflect lpofn->nFilterIndex.
  	When process IDOK button in FILEDLG_WMCommand(),
 	lpofn->nFilterIndex should be updated to current selection.

Thu Aug 31 15:00:00 1995 Ram'on Garc'ia <ramon@ie3.clubs.etsit.upm.es>

	* [loader/module.c] [loader/ne_image.c]
	Added support of self-loading modules.
oldstable wine-950918
Alexandre Julliard 1995-09-18 11:19:54 +00:00
parent b7258befe0
commit ff8331ea68
93 changed files with 3543 additions and 1701 deletions

View File

@ -1,15 +1,15 @@
This is release 950901 of Wine the MS Windows emulator. This is still a
This is release 950918 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.
Patches should be submitted to "wine-new@amscons.com". Please don't forget
to include a ChangeLog entry. I'll make a new release every other week.
WHAT'S NEW with Wine-950901: (see ChangeLog for details)
- Accesses to BIOS segment 0x40 are trapped and emulated.
- Multimedia improvements.
- IPC can now be disabled at compile-time.
- Documentation for the IPC code.
WHAT'S NEW with Wine-950918: (see ChangeLog for details)
- Support for self-loading modules.
- Win32 support should begin to work again.
- Cursor fixes.
- New configure script should be useable now.
- Lots of bug fixes.
See the README file in the distribution for installation instructions.
@ -18,11 +18,11 @@ 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:
sunsite.unc.edu:/pub/Linux/ALPHA/wine/Wine-950901.tar.gz
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-950901.tar.gz
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-950901.tar.gz
ftp.funet.fi:/pub/OS/Linux/ALPHA/Wine/Wine-950901.tar.gz
aris.com:/pub/linux/ALPHA/Wine/development/Wine-950901.tar.gz
sunsite.unc.edu:/pub/Linux/ALPHA/wine/Wine-950918.tar.gz
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-950918.tar.gz
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-950918.tar.gz
ftp.funet.fi:/pub/OS/Linux/ALPHA/Wine/Wine-950918.tar.gz
aris.com:/pub/linux/ALPHA/Wine/development/Wine-950918.tar.gz
It should also be available from any site that mirrors tsx-11 or sunsite.
@ -36,14 +36,17 @@ reading for new developers.
Wine is available thanks to the work of Bob Amstadt, Dag Asheim,
Martin Ayotte, Ross Biro, Erik Bos, Fons Botman, John Brezak,
Andrew Bulhak, John Burton, Paul Falstad, Olaf Flebbe, Peter Galbavy,
Cameron Heide, Jeffrey Hsu, Miguel de Icaza, Alexandre Julliard,
Ramon Garcia, Hans de Graaf, Charles M. Hannum, Cameron Heide,
Jochen Hoenicke, Jeffrey Hsu, Miguel de Icaza, Alexandre Julliard,
Jon Konrath, Scott A. Laird, Martin von Loewis, Kenneth MacDonald,
Peter MacDonald, William Magro, David Metcalfe, Michael Patra,
John Richardson, Johannes Ruscheinski, Thomas Sandford,
Constantine Sapuntzakis, Bernd Schmidt, Yngvi Sigurjonsson, Rick Sladkey,
William Smith, Erik Svendsen, Goran Thyni, Jimmy Tirtawangsa, Jon Tombs,
Linus Torvalds, Michael Veksler, Carl Williams, Karl Guenter Wuensch,
Eric Youngdale, and James Youngman.
Peter MacDonald, William Magro, Marcus Meissner, Graham Menhennitt,
David Metcalfe, Michael Patra, John Richardson, Johannes Ruscheinski,
Thomas Sandford, Constantine Sapuntzakis, Daniel Schepler,
Bernd Schmidt, Yngvi Sigurjonsson, Rick Sladkey, William Smith,
Erik Svendsen, Goran Thyni, Jimmy Tirtawangsa, Jon Tombs,
Linus Torvalds, Gregory Trubetskoy, Michael Veksler, Morten Welinder,
Jan Willamowius, Carl Williams, Karl Guenter Wuensch, Eric Youngdale,
and James Youngman.
--
Alexandre Julliard

140
ChangeLog
View File

@ -1,3 +1,143 @@
----------------------------------------------------------------------
Sun Sep 17 16:47:49 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [configure.in] [*/Makefile.in] [Make.rules.in]
Cleaned up makefiles, added configuration option for Winelib,
grouped common make rules in Make.rules.in.
* [Configure]
Renamed to 'Configure.old'; please use 'configure' instead.
* [controls/menu.c]
Fixed DestroyMenu() to avoid deleting the same menu twice.
More fixes to WM_MENUSELECT, and added WM_INITMENU.
* [if1632/relay.c]
Fixed wrong register values displayed by RELAY_DebugCall32().
* [memory/local.c]
Fixed LocalLock() and LocalUnlock() to increment/decrement the
lock count for moveable blocks.
* [misc/commdlg.c] [misc/shell.c] [rc/winerc.c]
Modified the generated C file so that the resource information
(size, etc.) is also exported.
Modified common dialogs to use the new informations.
* [misc/main.c] [ANNOUNCE]
Update the list of contributors. Please let me know if I forgot
someone.
* [rc/sysres.rc] [rc/sysres_En.rc]
Moved English resources to sysres_En.rc.
Changed ids from numeric to symbolic for dialogs.
* [windows/dialog.c]
Modified template parsing to be able to pass segmented pointers to
CreateWindow().
* [windows/win.c]
CreateWindow() now takes segmented pointers for class and window
names.
Maxmimize or minimize the window upon creation if the WS_MAXIMIZE
or WS_MINIMIZE bits are set.
Thu Sep 14 17:19:57 1995 Paul Wilhelm <paul@paul.accessone.com>
* [controls/scroll.c]
Fixed scroll-bar bugs for non-client windows.
Thu Sep 14 14:04:14 MET DST 1995 Jochen Hoenicke <Jochen.Hoenicke@arbi.Informatik.Uni-Oldenburg.de>
* [include/cursor.h] [windows/cursor.c]
Cursor is not mirrored any more and the hotspot is set right.
Wed Sep 13 14:22:31 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [ole.h]
Misc small fixes.
Mon Sep 4 00:01:23 1995 Jon Tombs <jon@gte.esi.us.es>
* [rc/sysres_Es.rc]
First attempt at Spanish [Es] language support.
Sun Sep 3 13:22:33 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [include/alias.h][windows/alias.c][include/relay32.h]
New files
* [controls/widgets.c]
WIDGETS_Init: register alias window procedures
* [if1632/callback.c]
CallWndProc: Call alias functions if necessary
* [if1632/gdi32.spec]
GetStockObject, TextOutA: new relays
* [misc/user32.c][if1632/user32.spec][misc/Makefile.in][misc/Imakefile]
user32.c: new file
BeginPaint,CreateWindowExA,DefWindowProcA,DispatchMessage,EndPaint,
GetMessageA,RegisterClassA,ShowWindow,UpdateWindow: new relays
* [if1632/winprocs32.spec][loader/pe_image.c][loader/module.c]
PE_Win32CallToStart: new function
MODULE_CreateInstance: removed static attribute
LoadModule: Try loading PE image on error 21
PE_LoadModule: new function
PE_LoadImage: initialize pe_data with 0
* [include/dlls.h][include/peexe.h]
moved pe_data and w_files to peexe.h
* [misc/shell.c]
ShellAbout: Register AboutWndProc aliases
* [miscemu/int21.c]
handle 0x440A and 0xDC
* [miscemu/int2f.c]
handle 0x84
* [objects/dib.c]
CreateDIBitmap: complain if BITMAPINFOHEADER is of wrong size
* [tools/build.c]
include windows.h and relay32.h into generated Win32 relays,
don't declare the implementation as int (*)();
limit in WIN32_builtin was off by one
* [windows/caret.c]
CARET_Initialize: new function, call on strategic places
* [windows/messagebox.c]
MessageBox: register message box proc aliases
* [if1632/advapi32.spec][if1632/comdlg32.spec]
New files
* [if1632/Makefile.in][if1632/Imakefile][if1632/relay32.c]
added new spec files
RELAY32_GetBuiltinDLL: perform lookup case insensitive
RELAY32_GetEntryPoint: start name search at 0
* [if1632/user.spec][if1632/kernel.spec][if1632/gdi.spec]
Added stubs for new Win95 API
Sat Sep 2 1995 Martin Roy
* [misc/commdlg.c]
In WM_INITDIALOG, current filter must reflect lpofn->nFilterIndex.
When process IDOK button in FILEDLG_WMCommand(),
lpofn->nFilterIndex should be updated to current selection.
Thu Aug 31 15:00:00 1995 Ram'on Garc'ia <ramon@ie3.clubs.etsit.upm.es>
* [loader/module.c] [loader/ne_image.c]
Added support of self-loading modules.
---------------------------------------------------------------------
Thu Aug 31 17:19:57 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [Configure]

42
Make.rules.in 100644
View File

@ -0,0 +1,42 @@
# Global rules shared by all makefiles
# The makefile must define at least TOPSRC and MODULE
CC = @CC@
CFLAGS = @CFLAGS@
DEFS = @DEFS@
LANG = @LANG@
X_CFLAGS = @X_CFLAGS@
YACC = @YACC@
LEX = @LEX@
LEXLIB = @LEXLIB@
DIVINCL = -I$(TOPSRC)/include
ALLCFLAGS = $(CFLAGS) $(DEFS) $(LANG) $(X_CFLAGS) $(DIVINCL) $(EXTRA_DEFS)
LDCOMBINE = ld -r
RM = rm -f
@SET_MAKE@
OBJS = $(C_SRCS:.c=.o) $(ASM_SRCS:.S=.o)
.c.o:
$(CC) -c $(ALLCFLAGS) -o $*.o $<
.S.o:
$(CC) -c -o $*.o $<
$(MODULE).o: $(OBJS)
$(LDCOMBINE) $(OBJS) -o $(MODULE).o
depend:: $(C_SRCS)
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(ALLCFLAGS) -MM $(C_SRCS) >> tmp_make
mv tmp_make Makefile
clean::
$(RM) *.o \#*\# *~ *.bak tmp_make
distclean:: clean
$(RM) Makefile
langclean::
dummy:

View File

@ -3,78 +3,92 @@
# all (default): build wine
# clean: remove all intermediate files
# distclean: also remove all files created by configure
# countryclean: remove all files which have to be remade if
# langclean: remove all files which have to be remade if
# a different LANGuage is selected
# depend: create the dependencies
#
# Author: Michael Patra <micky@marie.physik.tu-berlin.de>
# <patra@itp1.physik.tu-berlin.de>
CC = @CC@
CFLAGS = @CFLAGS@
DEFS = @DEFS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
XPM_LIB = -lXpm
XLIB = -lXext -lX11
XDIR = -L@x_libraries@
LDLIBS = -lm
LD = @LD@
LANG = @LANG@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
CC = @CC@
CFLAGS = @CFLAGS@
DEFS = @DEFS@
LANG = @LANG@
X_CFLAGS = @X_CFLAGS@
X_LIBS = @X_LIBS@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
XPM_LIB = -lXpm
XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
LDLIBS = -lm
AR = ar rc
RANLIB = @RANLIB@
RM = rm -f
@SET_MAKE@
COMMONSUBDIRS = controls rc ipc loader misc multimedia objects windows
MAIN_TARGET = @MAIN_TARGET@
EMUSUBDIRS = tools debugger if1632 memory miscemu
COMMONSUBDIRS = rc controls ipc loader misc multimedia objects windows
EMUSUBDIRS = tools debugger debugger/readline if1632 memory miscemu
LIBSUBDIRS = toolkit
COMMONOBJS = controls/controls.o ipc/ipc.o loader/loader.o misc/misc.o \
multimedia/multimedia.o objects/objects.o rc/rc.o \
ALLSUBDIRS = $(COMMONSUBDIRS) $(EMUSUBDIRS) $(LIBSUBDIRS)
COMMONOBJS = \
controls/controls.o \
ipc/ipc.o \
loader/loader.o \
misc/misc.o \
multimedia/multimedia.o \
objects/objects.o \
rc/rc.o \
windows/windows.o
EMUOBJS = debugger/debugger.o if1632/if1632.o memory/memory.o miscemu/miscemu.o
EMUOBJS = \
debugger/debugger.o \
debugger/readline/readline.o \
if1632/if1632.o \
memory/memory.o \
miscemu/miscemu.o
LIBOBJS = toolkit/toolkit.o
SUBDIRS = $(COMMONSUBDIRS) $(EMUSUBDIRS)
OBJS = $(COMMONOBJS) $(EMUOBJS)
all: wine wine.sym
all: $(MAIN_TARGET)
wine.sym: wine
wine: $(COMMONSUBDIRS) $(EMUSUBDIRS) dummy
$(CC) -o wine $(COMMONOBJS) $(EMUOBJS) $(LDOPTIONS) $(X_LIBS) $(XPM_LIB) $(XLIB) $(LDLIBS)
nm wine | grep -v _compiled | sort >wine.sym
wine: $(SUBDIRS) dummy
$(CC) -o wine $(OBJS) $(LDOPTIONS) $(XDIR) $(XPM_LIB) $(XLIB) $(LDLIBS)
winelib.a: $(COMMONSUBDIRS) $(LIBSUBDIRS) dummy
$(RM) $@
$(AR) $@ $(COMMONOBJS) $(LIBOBJS)
$(RANLIB) $@
$(SUBDIRS): dummy
@cd $@; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)' 'LD=$(LD)' 'LDCOMBINEFLAGS=$(LDCOMBINEFLAGS)' 'LANG=$(LANG)'
$(ALLSUBDIRS): dummy
@cd $@; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)' 'LANG=$(LANG)'
depend:
for i in $(SUBDIRS); do (cd $$i; $(MAKE) depend); done
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) depend); done
etags:
etags `find . -name '*.[chS]' -print`
clean:
for i in $(SUBDIRS); do (cd $$i; $(MAKE) clean); done
rm -f *.o \#*\# *~ *.bak wine wine.sym TAGS
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) clean); done
$(RM) *.o \#*\# *~ *.bak wine wine.sym winelib.a TAGS
distclean:
for i in $(SUBDIRS); do (cd $$i; $(MAKE) distclean); done
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) distclean); done
echo "/* autoconf.h generated automatically. Run Configure */" >autoconf.h
echo "#error You must run Configure before you can build the makefiles." >>autoconf.h
rm -f *.o \#*\# *~ *.bak wine wine.sym TAGS
rm -f config.* include/config.h Makefile
$(RM) *.o \#*\# *~ *.bak wine wine.sym winelib.a TAGS
$(RM) config.* include/config.h Make.rules Makefile
countryclean:
for i in $(SUBDIRS); do (cd $$i; $(MAKE) countryclean); done
rm -f wine wine.sym
langclean:
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) langclean); done
$(RM) wine wine.sym winelib.a
dummy:

17
README
View File

@ -21,9 +21,9 @@ You also need to have libXpm installed on your system. The sources for
it are probably available on the ftp site where you got Wine. They can
also be found on ftp.x.org and all its mirror sites.
To build Wine, first do a "./Configure" and then a "make" (or "gmake"
if you're running *BSD). The executable "wine" will be built. "wine"
will load and run 16-bit Windows executables.
To build Wine, first do a "./configure" and then a "make depend; make".
The executable "wine" will be built. "wine" will load and run 16-bit
Windows executables.
To upgrade to a new release by using a patch file, first cd to the
top-level directory of the release (the one containing this README
@ -32,8 +32,8 @@ file). Then do a "make clean", and patch the release with:
gunzip -c patch-file | patch -p1
where "patch-file" is the name of the patch file (something like
Wine-yymmdd.diff.gz). You can then re-run "./Configure", and then
run "make".
Wine-yymmdd.diff.gz). You can then re-run "./configure", and then
run "make depend; make".
3. SETUP
@ -147,9 +147,10 @@ The best place to get help or to report bugs is the Usenet newsgroup
comp.emulators.ms-windows.wine. The Wine FAQ is posted there every
month.
If you add something, or fix a bug, please send a patch to
wine-new@amscons.com for inclusion in the next release.
If you add something, or fix a bug, please send a patch ('diff -u'
format preferred) to wine-new@amscons.com for inclusion in the next
release.
--
Alexandre Julliard
julliard@lamisun.epfl.ch
julliard@lrc.epfl.ch

View File

@ -1,5 +1,5 @@
.\" -*- nroff -*-
.TH WINE 1 "June 29, 1995" "Version 6/20/95" "Windows Emulation"
.TH WINE 1 "September 1, 1995" "Version 9/1/95" "Windows Emulation"
.SH NAME
wine \- run Windows 3.x programs under Linux
.SH SYNOPSIS
@ -23,7 +23,7 @@ has not been implemented.
See the files
.B README,
.B ChangeLog,
.B Configure,
.B configure,
and the
.B Makefile
contained in the source distribution
@ -45,8 +45,11 @@ was, or the sources may be FTP'd from ftp.x.org).
.SH INSTALLATION
To install
.B wine,
run "./Configure", which will ask for configuration information and
create the Makefiles, then run "make".
run "./configure", which will detect your specific setup and create
the Makefiles. You can run "./configure --help" to see the available
configuration options. Then do "make depend; make" to build the
.B wine
executable.
.SH OPTIONS
.TP
.I -depth n
@ -122,7 +125,7 @@ by placing all of them on the command line (such as: wine notepad clock).
expects a configuration file (/usr/local/etc/wine.conf),
which should conform to the following rules. The actual file name may
be specified during the execution of the
.B Configure
.B configure
script. Alternatively, you may have a
.I .winerc
file of this format in your home directory.
@ -259,28 +262,26 @@ Include=WM_COMMAND;
is available thanks to the work of Bob Amstadt, Dag Asheim,
Martin Ayotte, Ross Biro, Erik Bos, Fons Botman, John Brezak,
Andrew Bulhak, John Burton, Paul Falstad, Olaf Flebbe, Peter Galbavy,
Cameron Heide, Jeffrey Hsu, Miguel de Icaza, Alexandre Julliard,
Ramon Garcia, Hans de Graaf, Charles M. Hannum, Cameron Heide,
Jochen Hoenicke, Jeffrey Hsu, Miguel de Icaza, Alexandre Julliard,
Jon Konrath, Scott A. Laird, Martin von Loewis, Kenneth MacDonald,
Peter MacDonald, William Magro, David Metcalfe, Michael Patra,
John Richardson, Johannes Ruscheinski, Thomas Sandford,
Constantine Sapuntzakis, Bernd Schmidt, Yngvi Sigurjonsson, Rick Sladkey,
William Smith, Erik Svendsen, Goran Thyni, Jimmy Tirtawangsa, Jon Tombs,
Linus Torvalds, Michael Veksler, Carl Williams, Karl Guenter Wuensch,
Eric Youngdale, and James Youngman.
Peter MacDonald, William Magro, Marcus Meissner, Graham Menhennitt,
David Metcalfe, Michael Patra, John Richardson, Johannes Ruscheinski,
Thomas Sandford, Constantine Sapuntzakis, Daniel Schepler,
Bernd Schmidt, Yngvi Sigurjonsson, Rick Sladkey, William Smith,
Erik Svendsen, Goran Thyni, Jimmy Tirtawangsa, Jon Tombs,
Linus Torvalds, Gregory Trubetskoy, Michael Veksler, Morten Welinder,
Jan Willamowius, Carl Williams, Karl Guenter Wuensch, Eric Youngdale,
and James Youngman.
.PP
This man page is maintained by Mike Phillips (msphil@mail.wm.edu), so please
send all corrections, comments, flames, etc., to him.
This man page is maintained by Mike Phillips (msphil@facstaff.wm.edu), so
please send all corrections, comments, flames, etc., to him.
.SH BUGS
There are too many to count, much less list. Some are of note, however:
Any Windows program using Visual Basic (VBRUNxxx.DLL) will not run yet,
nor will any program depending on undocumented functions or on the
COMMDLG (any standard file open/save interface) unless you disable the
internal COMMDLG with the
.I -dll -commdlg
option. In addition, 16-color support is imperfect at best, and
icons sometimes display improperly on some systems. Certain
multi-language modules will not load properly. Progress is being made
regularly, however.
There are too many to count, much less list. Some bugs of note, however,
are that programs requiring VBRUNxxx.DLL are unreliable (with reports of
some working), OLE is not in place, the internal COMMDLG support is not yet
at 100% (although rapidly improving). Color support for other than 8bpp
(256 colors) is currently flaky.
.PP
Currently, no directories in the path can have upper-case letters in them
(ex. /msdos/driveC), as the conversions necessary to handle the msdos
@ -288,7 +289,7 @@ filename conventions currently cause them to be lost.
.PP
A partial list of applications known to work with
.B wine
include: sol, cruel, golf.exe, clock, notepad, charmap, and calc.
include: sol, cruel, golf, clock, notepad, charmap, calc, and wzip11.
The following URLs point to different success/testing lists:
.br
.I http://www.ifi.uio.no/~dash/wine/working-apps.html
@ -317,12 +318,9 @@ Main configuration file for wine.
.I ChangeLog
Changes in Wine, since the beginning (most recent changes first)
.TP
.I Configure
Shell script to automate compilation. Usually followed by make (or gmake
on *BSD systems) to compile wine; it can even build a sample
.B wine.conf
file
.I configure
Shell script to automatically generate Makefiles. Usually followed by make
(or gmake on *BSD systems) to compile wine.
.TP
.I Wine newsgroup
Subscribe to comp.emulators.ms-windows.wine

351
configure vendored
View File

@ -13,7 +13,9 @@ ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
--with-language=LANG change the default language (LANG=En/De/No)"
--with-library build Wine as a library instead of an emulator"
ac_help="$ac_help
--with-language=LANG change the default language (LANG=En/De/No/Es)"
ac_help="$ac_help
--with-ipc use inter-process communication for DDE"
ac_help="$ac_help
@ -412,6 +414,20 @@ fi
test -z "$CFLAGS" && CFLAGS="-g -O2 -Wall"
test -z "$LDFLAGS" && LDFLAGS=-g
# Check whether --with-library or --without-library was given.
withval="$with_library"
if test -n "$withval"; then
cat >> confdefs.h <<\EOF
#define WINELIB 1
EOF
MAIN_TARGET="winelib.a"
else
MAIN_TARGET="wine"
fi
# Check whether --with-language or --without-language was given.
withval="$with_language"
if test -n "$withval"; then
@ -421,6 +437,7 @@ else
fi
# Check whether --with-ipc or --without-ipc was given.
withval="$with_ipc"
if test -n "$withval"; then
@ -430,6 +447,7 @@ EOF
fi
# Check whether --with-malloc-debug or --without-malloc-debug was given.
withval="$with_malloc_debug"
if test -n "$withval"; then
@ -440,6 +458,7 @@ EOF
fi
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
set dummy ${MAKE-make}; ac_make=$2
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
@ -554,7 +573,7 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
#line 558 "configure"
#line 577 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
@ -568,7 +587,7 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
#line 572 "configure"
#line 591 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
@ -593,6 +612,26 @@ else
fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
echo "$ac_t""yes" 1>&6
ISC=yes # If later tests want to check for ISC.
cat >> confdefs.h <<\EOF
#define _POSIX_SOURCE 1
EOF
if test "$GCC" = yes; then
CC="$CC -posix"
else
CC="$CC -Xp"
fi
else
echo "$ac_t""no" 1>&6
ISC=
fi
# If we find X, set shell vars x_includes and x_libraries to the
# paths, otherwise set no_x=yes.
# Uses ac_ vars as temps to allow command line to override cache and checks.
@ -654,7 +693,7 @@ test -z "$x_direct_test_library" && x_direct_test_library=Xt
test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
cat > conftest.$ac_ext <<EOF
#line 658 "configure"
#line 697 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
@ -717,7 +756,7 @@ rm -f conftest*
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
#line 721 "configure"
#line 760 "configure"
#include "confdefs.h"
int main() { return 0; }
@ -799,6 +838,226 @@ else
echo "$ac_t""libraries $x_libraries, headers $x_includes" 1>&6
fi
if test "$no_x" = yes; then
# Not all programs may use this symbol, but it does not hurt to define it.
X_CFLAGS="$X_CFLAGS -DX_DISPLAY_MISSING"
else
if test -n "$x_includes"; then
X_CFLAGS="$X_CFLAGS -I$x_includes"
fi
# It would be nice to have a more robust check for the -R ld option than
# just checking for Solaris.
# It would also be nice to do this for all -L options, not just this one.
if test -n "$x_libraries"; then
X_LIBS="$X_LIBS -L$x_libraries"
if test "`(uname) 2>/dev/null`" = SunOS &&
uname -r | grep '^5' >/dev/null; then
X_LIBS="$X_LIBS -R$x_libraries"
fi
fi
# Check for libraries that X11R6 Xt/Xaw programs need.
ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -L$x_libraries"
# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
# check for ICE first), but we must link in the order -lSM -lICE or
# we get undefined symbols. So assume we have SM if we have ICE.
# These have to be linked with before -lX11, unlike the other
# libraries we check for below, so use a different variable.
# --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
echo $ac_n "checking for -lICE""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_lib_ICE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lICE $LIBS"
cat > conftest.$ac_ext <<EOF
#line 878 "configure"
#include "confdefs.h"
int main() { return 0; }
int t() {
IceConnectionNumber()
; return 0; }
EOF
if eval $ac_link; then
rm -rf conftest*
eval "ac_cv_lib_ICE=yes"
else
rm -rf conftest*
eval "ac_cv_lib_ICE=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'ICE`\" = yes"; then
echo "$ac_t""yes" 1>&6
X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
else
echo "$ac_t""no" 1>&6
fi
LDFLAGS="$ac_save_LDFLAGS"
# Check for system-dependent libraries X programs must link with.
if test "$ISC" = yes; then
X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
else
# Martyn.Johnson@cl.cam.ac.uk says this is needed for Ultrix, if the X
# libraries were built with DECnet support. And karl@cs.umb.edu says
# the Alpha needs dnet_stub (dnet does not exist).
echo $ac_n "checking for -ldnet""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_lib_dnet'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-ldnet $LIBS"
cat > conftest.$ac_ext <<EOF
#line 921 "configure"
#include "confdefs.h"
int main() { return 0; }
int t() {
dnet_ntoa()
; return 0; }
EOF
if eval $ac_link; then
rm -rf conftest*
eval "ac_cv_lib_dnet=yes"
else
rm -rf conftest*
eval "ac_cv_lib_dnet=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'dnet`\" = yes"; then
echo "$ac_t""yes" 1>&6
X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
else
echo "$ac_t""no" 1>&6
fi
if test $ac_cv_lib_dnet = no; then
echo $ac_n "checking for -ldnet_stub""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_lib_dnet_stub'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-ldnet_stub $LIBS"
cat > conftest.$ac_ext <<EOF
#line 955 "configure"
#include "confdefs.h"
int main() { return 0; }
int t() {
dnet_ntoa()
; return 0; }
EOF
if eval $ac_link; then
rm -rf conftest*
eval "ac_cv_lib_dnet_stub=yes"
else
rm -rf conftest*
eval "ac_cv_lib_dnet_stub=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'dnet_stub`\" = yes"; then
echo "$ac_t""yes" 1>&6
X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
else
echo "$ac_t""no" 1>&6
fi
fi
# msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
# to get the SysV transport functions.
# Not sure which flavor of 386 UNIX this is, but it seems harmless to
# check for it.
echo $ac_n "checking for -lnsl""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_lib_nsl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
#line 994 "configure"
#include "confdefs.h"
int main() { return 0; }
int t() {
t_accept()
; return 0; }
EOF
if eval $ac_link; then
rm -rf conftest*
eval "ac_cv_lib_nsl=yes"
else
rm -rf conftest*
eval "ac_cv_lib_nsl=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'nsl`\" = yes"; then
echo "$ac_t""yes" 1>&6
X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
else
echo "$ac_t""no" 1>&6
fi
# lieder@skyler.mavd.honeywell.com says without -lsocket,
# socket/setsockopt and other routines are undefined under SCO ODT 2.0.
# But -lsocket is broken on IRIX, according to simon@lia.di.epfl.ch.
if test "`(uname) 2>/dev/null`" != IRIX; then
echo $ac_n "checking for -lsocket""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_lib_socket'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1032 "configure"
#include "confdefs.h"
int main() { return 0; }
int t() {
socket()
; return 0; }
EOF
if eval $ac_link; then
rm -rf conftest*
eval "ac_cv_lib_socket=yes"
else
rm -rf conftest*
eval "ac_cv_lib_socket=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'socket`\" = yes"; then
echo "$ac_t""yes" 1>&6
X_EXTRA_LIBS="$X_EXTRA_LIBS -lsocket"
else
echo "$ac_t""no" 1>&6
fi
fi
fi
fi
for ac_prog in 'bison -y' byacc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
@ -873,7 +1132,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-l$ac_lib $LIBS"
cat > conftest.$ac_ext <<EOF
#line 877 "configure"
#line 1136 "configure"
#include "confdefs.h"
int main() { return 0; }
@ -901,20 +1160,33 @@ fi
fi
if test -n "$x_includes" ; then
x_includes="-I$x_includes"
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_prog_RANLIB="ranlib"
break
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
fi
if test -n "$x_no" ; then
AXFILES='AXFILES='
fi
LD=ld
LDCOMBINEFLAGS="-r"
RANLIB="$ac_cv_prog_RANLIB"
if test -n "$RANLIB"; then
echo "$ac_t""$RANLIB" 1>&6
else
echo "$ac_t""no" 1>&6
fi
for ac_func in tcgetattr
@ -924,7 +1196,7 @@ 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 928 "configure"
#line 1200 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -976,7 +1248,7 @@ 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 980 "configure"
#line 1252 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
@ -1009,7 +1281,7 @@ 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 1013 "configure"
#line 1285 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@ -1063,7 +1335,7 @@ 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 1067 "configure"
#line 1339 "configure"
#include "confdefs.h"
int main() { return 0; }
@ -1140,7 +1412,7 @@ else
ac_cv_c_cross=yes
else
cat > conftest.$ac_ext <<EOF
#line 1144 "configure"
#line 1416 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
@ -1161,7 +1433,7 @@ 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 1165 "configure"
#line 1437 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@ -1183,7 +1455,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 1187 "configure"
#line 1459 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@ -1201,7 +1473,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 1205 "configure"
#line 1477 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@ -1222,7 +1494,7 @@ if test "$cross_compiling" = yes; then
ac_cv_header_stdc=no
else
cat > conftest.$ac_ext <<EOF
#line 1226 "configure"
#line 1498 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@ -1256,7 +1528,7 @@ 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 1260 "configure"
#line 1532 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -1311,9 +1583,12 @@ WINE_INI_GLOBAL="\"${TOP_SRCDIR}/wine.ini\""
fi
fi
cat >> confdefs.h <<EOF
#define WINE_INI_GLOBAL $WINE_INI_GLOBAL
EOF
test -z "$LDFLAGS" && LDFLAGS=-g
MAKE_RULES=$TOP_SRCDIR/Make.rules
trap '' 1 2 15
@ -1414,7 +1689,7 @@ done
ac_given_srcdir=$srcdir
trap 'rm -fr `echo "controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile Makefile autoconf.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
trap 'rm -fr `echo "Make.rules controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile toolkit/Makefile Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
# Protect against being on the right side of a sed subst in config.status.
sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g;
@ -1430,26 +1705,28 @@ s%@LIBS@%$LIBS%g
s%@exec_prefix@%$exec_prefix%g
s%@prefix@%$prefix%g
s%@program_transform_name@%$program_transform_name%g
s%@MAIN_TARGET@%$MAIN_TARGET%g
s%@LANG@%$LANG%g
s%@SET_MAKE@%$SET_MAKE%g
s%@CC@%$CC%g
s%@CPP@%$CPP%g
s%@X_CFLAGS@%$X_CFLAGS%g
s%@X_PRE_LIBS@%$X_PRE_LIBS%g
s%@X_LIBS@%$X_LIBS%g
s%@X_EXTRA_LIBS@%$X_EXTRA_LIBS%g
s%@YACC@%$YACC%g
s%@LEX@%$LEX%g
s%@LEXLIB@%$LEXLIB%g
s%@AXFILES@%$AXFILES%g
s%@x_includes@%$x_includes%g
s%@x_libraries@%$x_libraries%g
s%@LIBOBJS@%$LIBOBJS%g
s%@LD@%$LD%g
s%@LDCOMBINEFLAGS@%$LDCOMBINEFLAGS%g
s%@RANLIB@%$RANLIB%g
s%@WINE_INI_GLOBAL@%$WINE_INI_GLOBAL%g
/@MAKE_RULES@/r $MAKE_RULES
s%@MAKE_RULES@%%g
CEOF
EOF
cat >> $CONFIG_STATUS <<EOF
CONFIG_FILES=\${CONFIG_FILES-"controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile Makefile autoconf.h"}
CONFIG_FILES=\${CONFIG_FILES-"Make.rules controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile toolkit/Makefile Makefile"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then

View File

@ -8,38 +8,35 @@ AC_INIT(controls/edit.c)
test -z "$CFLAGS" && CFLAGS="-g -O2 -Wall" AC_SUBST(CFLAGS)
test -z "$LDFLAGS" && LDFLAGS=-g AC_SUBST(LDFLAGS)
dnl **** Command-line arguments ****
AC_ARG_WITH(library,
[ --with-library build Wine as a library instead of an emulator],
[AC_DEFINE(WINELIB) MAIN_TARGET="winelib.a"],[MAIN_TARGET="wine"])
AC_SUBST(MAIN_TARGET)
AC_ARG_WITH(language,
[ --with-language=LANG change the default language (LANG=En/De/No)],
[ --with-language=LANG change the default language (LANG=En/De/No/Es)],
[LANG="-ALANG\($withval\)"],
[LANG="-ALANG\(En\)"],)
AC_SUBST(LANG)
AC_ARG_WITH(ipc,
[ --with-ipc use inter-process communication for DDE],
[AC_DEFINE(CONFIG_IPC)])
AC_ARG_WITH(malloc-debug,
[ --with-malloc-debug enable malloc() debugging],
[AC_DEFINE(MALLOC_DEBUGGING)])
dnl **** Check for some programs ****
AC_PROG_MAKE_SET
AC_PROG_CC
AC_PATH_X
AC_PATH_XTRA
AC_PROG_YACC
AC_PROG_LEX
if test -n "$x_includes" ; then
x_includes="-I$x_includes"
fi
if test -n "$x_no" ; then
AXFILES='AXFILES='
fi
AC_SUBST(AXFILES)
AC_SUBST(x_includes)
AC_SUBST(x_libraries)
AC_SUBST(LIBOBJS)
LD=ld
LDCOMBINEFLAGS="-r"
AC_SUBST(LD)
AC_SUBST(LDCOMBINEFLAGS)
AC_PROG_RANLIB
AC_CHECK_FUNCS(tcgetattr)
AC_CHECK_HEADERS(stdlib.h)
@ -75,8 +72,12 @@ WINE_INI_GLOBAL="\"${TOP_SRCDIR}/wine.ini\""
fi
fi
AC_SUBST(WINE_INI_GLOBAL)
AC_DEFINE_UNQUOTED(WINE_INI_GLOBAL,$WINE_INI_GLOBAL)
AC_OUTPUT(controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile Makefile autoconf.h)
MAKE_RULES=$TOP_SRCDIR/Make.rules
AC_SUBST_FILE(MAKE_RULES)
AC_OUTPUT(Make.rules controls/Makefile ipc/Makefile loader/Makefile memory/Makefile misc/Makefile miscemu/Makefile multimedia/Makefile objects/Makefile windows/Makefile rc/Makefile debugger/Makefile debugger/readline/Makefile tools/Makefile if1632/Makefile toolkit/Makefile Makefile)
echo
echo "Configure finished. Do 'make depend; make' to compile Wine."

View File

@ -1,39 +1,20 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
MODULE = controls
SRCS = button.c combo.c desktop.c edit.c listbox.c menu.c scroll.c \
static.c widgets.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
C_SRCS = \
button.c \
combo.c \
desktop.c \
edit.c \
listbox.c \
menu.c \
scroll.c \
static.c \
widgets.c
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
dummy:
@MAKE_RULES@
### Dependencies:

View File

@ -14,13 +14,14 @@
#include "windows.h"
#include "sysmetrics.h"
#include "combo.h"
#include "stackframe.h"
#include "user.h"
#include "win.h"
#include "stddebug.h"
#include "debug.h"
#include "graphics.h"
#include "listbox.h"
#include "dos_fs.h"
#include "stddebug.h"
#include "debug.h"
/*
* Note: Combos are probably implemented in a different way by Windows.
@ -127,7 +128,7 @@ static LONG CBCreate(HWND hwnd, WORD wParam, LONG lParam)
dprintf_combo(stddeb,"CBS_SIMPLE\n");
SetRectEmpty(&lphc->RectButton);
lphc->LBoxTop = lphl->StdItemHeight;
lphc->hWndEdit = CreateWindow(editName, "",
lphc->hWndEdit = CreateWindow(MAKE_SEGPTR(editName), (SEGPTR)0,
WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | SS_LEFT,
0, 0, rect.right, lphl->StdItemHeight,
hwnd, 1, GetWindowWord(hwnd,GWW_HINSTANCE), 0L);
@ -141,7 +142,7 @@ static LONG CBCreate(HWND hwnd, WORD wParam, LONG lParam)
SetWindowPos(hwnd, 0, 0, 0, rect.right - rect.left + 2*SYSMETRICS_CXBORDER,
lphl->StdItemHeight + 2*SYSMETRICS_CYBORDER,
SWP_NOMOVE | SWP_NOZORDER);
lphc->hWndEdit = CreateWindow(editName, "",
lphc->hWndEdit = CreateWindow(MAKE_SEGPTR(editName), (SEGPTR)0,
WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | SS_LEFT,
0, 0, lphc->RectButton.left, lphl->StdItemHeight,
hwnd, 1, GetWindowWord(hwnd,GWW_HINSTANCE), 0L);
@ -161,7 +162,7 @@ static LONG CBCreate(HWND hwnd, WORD wParam, LONG lParam)
/* FIXME: WinSight says these should be CHILD windows with the TOPMOST flag
* set. Wine doesn't support TOPMOST, and simply setting the WS_CHILD
* flag doesn't work. */
lphc->hWndLBox = CreateWindow(className, "",
lphc->hWndLBox = CreateWindow(MAKE_SEGPTR(className), (SEGPTR)0,
WS_POPUP | WS_BORDER | WS_VSCROLL,
lboxrect.left, lboxrect.top,
lboxrect.right - lboxrect.left,

View File

@ -29,6 +29,7 @@
/* #define DEBUG_MENUSHORTCUT */
#include "debug.h"
#include "../rc/sysres.h"
/* Dimension of the menu bitmaps */
static WORD check_bitmap_width = 0, check_bitmap_height = 0;
@ -673,7 +674,7 @@ static BOOL MENU_ShowPopup(HWND hwndOwner, HMENU hmenu, WORD id, int x, int y)
{
WND *wndPtr = WIN_FindWndPtr( hwndOwner );
if (!wndPtr) return FALSE;
menu->hWnd = CreateWindow( (LPSTR)POPUPMENU_CLASS_ATOM, "",
menu->hWnd = CreateWindow( POPUPMENU_CLASS_ATOM, (SEGPTR)0,
WS_POPUP | WS_BORDER, x, y,
menu->Width + 2*SYSMETRICS_CXBORDER,
menu->Height + 2*SYSMETRICS_CYBORDER,
@ -732,18 +733,25 @@ static void MENU_SelectItem( HWND hwndOwner, HMENU hmenu, WORD wIndex )
if (lppop->FocusedItem != NO_SELECTED_ITEM)
{
if (lppop->FocusedItem == SYSMENU_SELECTED)
{
NC_DrawSysButton( lppop->hWnd, hdc, TRUE );
SendMessage( hwndOwner, WM_MENUSELECT,
GetSystemMenu( lppop->hWnd, FALSE ),
MAKELONG( lppop->wFlags | MF_MOUSESELECT, hmenu ) );
}
else
{
items[lppop->FocusedItem].item_flags |= MF_HILITE;
MENU_DrawMenuItem( lppop->hWnd, hdc, &items[lppop->FocusedItem], lppop->Height,
!(lppop->wFlags & MF_POPUP) );
dprintf_menu(stddeb,"Sending WM_MENUSELECT %04x %04x\n", items[lppop->FocusedItem].item_id,items[lppop->FocusedItem].item_flags);
SendMessage( hwndOwner, WM_MENUSELECT,
items[lppop->FocusedItem].item_id,
MAKELONG( items[lppop->FocusedItem].item_flags | MF_MOUSESELECT, hmenu));
}
}
else SendMessage( hwndOwner, WM_MENUSELECT, hmenu,
MAKELONG( lppop->wFlags | MF_MOUSESELECT, hmenu ) );
ReleaseDC( lppop->hWnd, hdc );
}
@ -1399,6 +1407,7 @@ void MENU_TrackMouseMenuBar( HWND hwnd, POINT pt )
{
WND *wndPtr = WIN_FindWndPtr( hwnd );
SendMessage( hwnd, WM_ENTERMENULOOP, 0, 0 );
SendMessage( hwnd, WM_INITMENU, wndPtr->wIDmenu, 0 );
MENU_TrackMenu( (HMENU)wndPtr->wIDmenu, TPM_LEFTALIGN | TPM_LEFTBUTTON,
pt.x, pt.y, hwnd, NULL );
SendMessage( hwnd, WM_EXITMENULOOP, 0, 0 );
@ -1415,6 +1424,7 @@ void MENU_TrackKbdMenuBar( HWND hwnd, WORD wParam )
WND *wndPtr = WIN_FindWndPtr( hwnd );
if (!wndPtr->wIDmenu) return;
SendMessage( hwnd, WM_ENTERMENULOOP, 0, 0 );
SendMessage( hwnd, WM_INITMENU, wndPtr->wIDmenu, 0 );
/* Select first selectable item */
MENU_SelectItem( hwnd, wndPtr->wIDmenu, NO_SELECTED_ITEM );
MENU_SelectNextItem( hwnd, (HMENU)wndPtr->wIDmenu );
@ -1425,7 +1435,7 @@ void MENU_TrackKbdMenuBar( HWND hwnd, WORD wParam )
/**********************************************************************
* TrackPopupMenu [USER.416]
* TrackPopupMenu (USER.416)
*/
BOOL TrackPopupMenu( HMENU hMenu, WORD wFlags, short x, short y,
short nReserved, HWND hWnd, LPRECT lpRect )
@ -1932,28 +1942,29 @@ HMENU CreateMenu()
*/
BOOL DestroyMenu(HMENU hMenu)
{
LPPOPUPMENU lppop;
dprintf_menu(stddeb,"DestroyMenu (%04X) !\n", hMenu);
if (hMenu == 0) return FALSE;
lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
if (lppop == NULL) return FALSE;
if ((lppop->wFlags & MF_POPUP) && lppop->hWnd)
DestroyWindow( lppop->hWnd );
LPPOPUPMENU lppop;
dprintf_menu(stddeb,"DestroyMenu (%04X) !\n", hMenu);
if (hMenu == 0) return FALSE;
lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
if (!lppop || (lppop->wMagic != MENU_MAGIC)) return FALSE;
lppop->wMagic = 0; /* Mark it as destroyed */
if ((lppop->wFlags & MF_POPUP) && lppop->hWnd)
DestroyWindow( lppop->hWnd );
if (lppop->hItems)
{
int i;
MENUITEM *item = (MENUITEM *) USER_HEAP_LIN_ADDR( lppop->hItems );
for (i = lppop->nItems; i > 0; i--, item++)
{
if (item->item_flags & MF_POPUP)
DestroyMenu( item->item_id );
}
USER_HEAP_FREE( lppop->hItems );
}
USER_HEAP_FREE( hMenu );
dprintf_menu(stddeb,"DestroyMenu (%04X) // End !\n", hMenu);
return TRUE;
if (lppop->hItems)
{
int i;
MENUITEM *item = (MENUITEM *) USER_HEAP_LIN_ADDR( lppop->hItems );
for (i = lppop->nItems; i > 0; i--, item++)
{
if (item->item_flags & MF_POPUP)
DestroyMenu( item->item_id );
}
USER_HEAP_FREE( lppop->hItems );
}
USER_HEAP_FREE( hMenu );
dprintf_menu(stddeb,"DestroyMenu (%04X) // End !\n", hMenu);
return TRUE;
}
/**********************************************************************
@ -2137,10 +2148,10 @@ HMENU CopySysMenu()
{
HMENU hMenu;
LPPOPUPMENU menu;
extern unsigned char sysres_MENU_SYSMENU[];
hMenu=LoadMenuIndirect(sysres_MENU_SYSMENU);
if(!hMenu){
hMenu = LoadMenuIndirect( sysres_MENU_SYSMENU.bytes );
if(!hMenu)
{
dprintf_menu(stddeb,"No SYSMENU\n");
return 0;
}

View File

@ -593,12 +593,14 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
(hittest == trackHitTest), FALSE );
if (hittest == trackHitTest)
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
if ((msg == WM_LBUTTONDOWN) || (msg == WM_SYSTIMER))
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
SB_LINEUP, MAKELONG( 0, hwndCtl ));
}
}
else KillSystemTimer( hwnd, SCROLL_TIMER );
break;
@ -609,12 +611,14 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
(hittest == trackHitTest), FALSE );
if (hittest == trackHitTest)
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
if ((msg == WM_LBUTTONDOWN) || (msg == WM_SYSTIMER))
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
SB_PAGEUP, MAKELONG( 0, hwndCtl ));
}
}
else KillSystemTimer( hwnd, SCROLL_TIMER );
break;
@ -653,12 +657,14 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
FALSE, (hittest == trackHitTest) );
if (hittest == trackHitTest)
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
if ((msg == WM_LBUTTONDOWN) || (msg == WM_SYSTIMER))
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
SB_PAGEDOWN, MAKELONG( 0, hwndCtl ));
}
}
else KillSystemTimer( hwnd, SCROLL_TIMER );
break;
@ -668,12 +674,14 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
FALSE, (hittest == trackHitTest) );
if (hittest == trackHitTest)
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
if ((msg == WM_LBUTTONDOWN) || (msg == WM_SYSTIMER))
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
SB_LINEDOWN, MAKELONG( 0, hwndCtl ));
}
}
else KillSystemTimer( hwnd, SCROLL_TIMER );
break;

View File

@ -14,6 +14,8 @@
#include "user.h"
#include "selectors.h"
#include "stackframe.h"
#include "alias.h"
#include "relay32.h"
static WNDCLASS WIDGETS_BuiltinClasses[] =
{
@ -58,11 +60,20 @@ BOOL WIDGETS_Init(void)
for (i = 0; i < NB_BUILTIN_CLASSES; i++, class++)
{
DWORD WineProc,Win16Proc,Win32Proc;
/* currently, there is no way to get the 'real' pointer at run time */
WineProc=0;
Win16Proc = GetWndProcEntry16( (char *)class->lpfnWndProc );
Win32Proc = (DWORD)RELAY32_GetEntryPoint(
"WINPROCS32",(char *)class->lpfnWndProc, 0);
/* Register the alias so we don't pass Win16 pointers to Win32 apps */
ALIAS_RegisterAlias(WineProc,Win16Proc,Win32Proc);
strcpy( name, (char *)class->lpszClassName );
class->lpszClassName = MAKE_SEGPTR(name);
class->hCursor = LoadCursor( 0, IDC_ARROW );
class->hCursor = LoadCursor( 0, IDC_ARROW );
class->lpfnWndProc = GetWndProcEntry16( (char *)class->lpfnWndProc );
if (!RegisterClass( class )) return FALSE;
if (!RegisterClass( class )) return FALSE;
}
return TRUE;
}

View File

@ -1,58 +1,30 @@
CC = @CC@
CFLAGS = @CFLAGS@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
BISON = @YACC@
FLEX = @LEX@
DIVDEFS = -DUSE_READLINE
COMPILE = $(CC) $(CFLAGS) $(DIVINCL) $(DIVDEFS)
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
@SET_MAKE@
TOPSRC = @top_srcdir@
EXTRA_DEFS = -DUSE_READLINE
MODULE = debugger
MODULE = debugger
C_SRCS = \
break.c \
db_disasm.c \
hash.c \
info.c \
memory.c \
registers.c \
stack.c \
y.tab.c \
lex.yy.c
SRCS = break.c db_disasm.c hash.c info.c memory.c registers.c stack.c
all: $(MODULE).o
OBJS = $(SRCS:.c=.o) dbg.tab.o lex.yy.o
@MAKE_RULES@
all: $(MODULE).o dbg.tab.o lex.yy.o
y.tab.c y.tab.h: dbg.y
$(YACC) -d -t dbg.y
dbg.tab.c dbg.tab.h: dbg.y
$(BISON) -b dbg -d dbg.y
lex.yy.c: debug.l
$(LEX) -8 -I debug.l
lex.yy.c: debug.l dbg.tab.h
$(FLEX) -8 -I debug.l
.c.o:
$(COMPILE) -c -o $*.o $<
$(MODULE).o: $(OBJS) readline
$(LD) $(LDCOMBINEFLAGS) $(OBJS) readline/readline.o -o $(MODULE).o
readline: dummy
cd readline; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'LD=$(LD)' 'LDCOMBINEFLAGS=$(LDCOMBINEFLAGS)'
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
(cd readline; $(MAKE) clean)
rm -f *.o \#*\# *~ *.bak tmp_make
rm -f dbg.tab.c dbg.tab.h lex.yy.c y.tab.c y.tab.h
distclean:
(cd readline; $(MAKE) distclean)
rm -f *.o \#*\# *~ *.bak dbg.tab.c dbg.tab.h lex.yy.c y.tab.c y.tab.h tmp_make Makefile
countryclean:
dbg.tab.o: dbg.tab.c
lex.yy.o: lex.yy.c
dummy:
clean::
rm -f y.tab.c y.tab.h lex.yy.c
### Dependencies:

View File

@ -65,6 +65,7 @@ int yyerror(char *);
| ENABLE NUM '\n' { DEBUG_EnableBreakpoint( $2, TRUE ); }
| DISABLE NUM '\n' { DEBUG_EnableBreakpoint( $2, FALSE ); }
| BREAK '*' addr '\n' { DEBUG_AddBreakpoint( &$3 ); }
| BREAK symbol '\n' { DEBUG_AddBreakpoint( &$2 ); }
| BREAK '\n' { DBG_ADDR addr = { CS_reg(DEBUG_context),
EIP_reg(DEBUG_context) };
DEBUG_AddBreakpoint( &addr );
@ -140,7 +141,7 @@ void wine_debug( int signal, struct sigcontext_struct *regs )
char SymbolTableFile[256];
int instr_len = 0, newmode;
#ifdef YYDEBUG
yydebug = 1;
yydebug = 0;
#endif
yyin = stdin;

View File

@ -10,7 +10,7 @@
#include <stdlib.h>
#include <string.h>
#include "debugger.h"
#include "dbg.tab.h"
#include "y.tab.h"
#ifdef USE_READLINE
#undef YY_INPUT

View File

@ -1,41 +1,12 @@
CC = @CC@
CFLAGS = @CFLAGS@
DEFS = @DEFS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
DIVDEFS = $(DEFS) -DHIDE -DANSI_ARROWS
TOPSRC = @top_srcdir@
EXTRA_DEFS = -DHIDE -DANSI_ARROWS
MODULE = readline
MODULE = readline
SRCS = editline.c sysunix.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(DIVDEFS) $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
C_SRCS = editline.c sysunix.c
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
dummy:
@MAKE_RULES@
### Dependencies:

View File

@ -43,6 +43,8 @@ DLLS16 = \
winprocs.spec \
winsock.spec
DLLS32 = \
advapi32.spec \
comdlg32.spec \
gdi32.spec \
kernel32.spec \
shell32.spec \

View File

@ -1,17 +1,7 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
BUILD = $(TOPSRC)/tools/build
@SET_MAKE@
TOPSRC = @top_srcdir@
BUILD = $(TOPSRC)/tools/build
MODULE = if1632
SRCS = callback.c relay.c relay32.c
MODULE = if1632
DLLS16 = commdlg.spec compobj.spec ddeml.spec gdi.spec kernel.spec \
keyboard.spec mmsystem.spec mouse.spec ole2.spec ole2conv.spec \
@ -19,22 +9,24 @@ DLLS16 = commdlg.spec compobj.spec ddeml.spec gdi.spec kernel.spec \
shell.spec sound.spec storage.spec stress.spec system.spec \
toolhelp.spec user.spec win87em.spec winprocs.spec winsock.spec
DLLS32 = gdi32.spec kernel32.spec shell32.spec user32.spec winprocs32.spec
OBJS = $(SRCS:.c=.o) $(DLLS16:.spec=.o) $(DLLS32:.spec=.o) call16.o call32.o
DLLS32 = advapi32.spec comdlg32.spec gdi32.spec kernel32.spec shell32.spec user32.spec winprocs32.spec
SPEC16_FILES = $(DLLS16:.spec=.S)
SPEC32_FILES = $(DLLS32:.spec=.c)
C_SRCS = \
$(SPEC32_FILES) \
callback.c \
relay.c \
relay32.c
ASM_SRCS = \
$(SPEC16_FILES) \
call16.S \
call32.S
.SUFFIXES: .spec
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
.S.o:
$(CC) -c -o $*.o $<
.spec.S:
$(BUILD) -spec16 $< > $*.S
@ -43,10 +35,12 @@ SPEC32_FILES = $(DLLS32:.spec=.c)
all: checkbuild $(MODULE).o
$(SPEC16_FILES) $(SPEC32_FILES): $(TOPSRC)/tools/build
@MAKE_RULES@
checkbuild:
cd $(TOPSRC)/tools; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'LD=$(LD)' 'LDCOMBINEFLAGS=$(LDCOMBINEFLAGS)' build
$(SPEC16_FILES) $(SPEC32_FILES): $(BUILD)
$(BUILD) checkbuild:
cd $(TOPSRC)/tools; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)' 'LANG=$(LANG)' build
call16.S: $(TOPSRC)/include/callback.h $(BUILD)
$(BUILD) -call16 `cat $(TOPSRC)/include/callback.h | grep "extern.*CallTo16_" | sed 's/.*CallTo16_\(.*\)(.*/\1/' | sort | uniq` > call16.S
@ -54,23 +48,7 @@ call16.S: $(TOPSRC)/include/callback.h $(BUILD)
call32.S: $(SPEC16_FILES)
$(BUILD) -call32 `cat $(SPEC16_FILES) | grep CallTo32_ | sed 's/.*CallTo32_\(.*\)/\1/' | sort | uniq` > call32.S
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM $(SRCS) >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
rm -f $(DLLS16:.spec=.S) $(DLLS32:.spec=.c) call32.S call16.S
distclean: clean
rm -f Makefile
countryclean:
dummy:
clean::
rm -f $(SPEC16_FILES) $(SPEC32_FILES) call32.S call16.S
### Dependencies:

View File

@ -0,0 +1,204 @@
name advapi32
base 1
0000 stub AbortSystemShutdownA
0001 stub AbortSystemShutdownW
0002 stub AccessCheck
0003 stub AccessCheckAndAuditAlarmA
0004 stub AccessCheckAndAuditAlarmW
0005 stub AddAccessAllowedAce
0006 stub AddAccessDeniedAce
0007 stub AddAce
0008 stub AddAuditAccessAce
0009 stub AdjustTokenGroups
0010 stub AdjustTokenPrivileges
0011 stub AllocateAndInitializeSid
0012 stub AllocateLocallyUniqueId
0013 stub AreAllAccessesGranted
0014 stub AreAnyAccessesGranted
0015 stub BackupEventLogA
0016 stub BackupEventLogW
0017 stub ChangeServiceConfigA
0018 stub ChangeServiceConfigW
0019 stub ClearEventLogA
0020 stub ClearEventLogW
0021 stub CloseEventLog
0022 stub CloseServiceHandle
0023 stub ControlService
0024 stub CopySid
0025 stub CreatePrivateObjectSecurity
0026 stub CreateProcessAsUserA
0027 stub CreateProcessAsUserW
0028 stub CreateServiceA
0029 stub CreateServiceW
0030 stub DeleteAce
0031 stub DeleteService
0032 stub DeregisterEventSource
0033 stub DestroyPrivateObjectSecurity
0034 stub DuplicateToken
0035 stub EnumDependentServicesA
0036 stub EnumDependentServicesW
0037 stub EnumServicesStatusA
0038 stub EnumServicesStatusW
0039 stub EqualPrefixSid
0040 stub EqualSid
0041 stub FindFirstFreeAce
0042 stub FreeSid
0043 stub GetAce
0044 stub GetAclInformation
0045 stub GetFileSecurityA
0046 stub GetFileSecurityW
0047 stub GetKernelObjectSecurity
0048 stub GetLengthSid
0049 stub GetNumberOfEventLogRecords
0050 stub GetOldestEventLogRecord
0051 stub GetPrivateObjectSecurity
0052 stub GetSecurityDescriptorControl
0053 stub GetSecurityDescriptorDacl
0054 stub GetSecurityDescriptorGroup
0055 stub GetSecurityDescriptorLength
0056 stub GetSecurityDescriptorOwner
0057 stub GetSecurityDescriptorSacl
0058 stub GetServiceDisplayNameA
0059 stub GetServiceDisplayNameW
0060 stub GetServiceKeyNameA
0061 stub GetServiceKeyNameW
0062 stub GetSidIdentifierAuthority
0063 stub GetSidLengthRequired
0064 stub GetSidSubAuthority
0065 stub GetSidSubAuthorityCount
0066 stub GetTokenInformation
0067 stub GetUserNameA
0068 stub GetUserNameW
0069 stub ImpersonateLoggedOnUser
0070 stub ImpersonateNamedPipeClient
0071 stub ImpersonateSelf
0072 stub InitializeAcl
0073 stub InitializeSecurityDescriptor
0074 stub InitializeSid
0075 stub InitiateSystemShutdownA
0076 stub InitiateSystemShutdownW
0077 stub IsTextUnicode
0078 stub IsValidAcl
0079 stub IsValidSecurityDescriptor
0080 stub IsValidSid
0081 stub LockServiceDatabase
0082 stub LogonUserA
0083 stub LogonUserW
0084 stub LookupAccountNameA
0085 stub LookupAccountNameW
0086 stub LookupAccountSidA
0087 stub LookupAccountSidW
0088 stub LookupPrivilegeDisplayNameA
0089 stub LookupPrivilegeDisplayNameW
0090 stub LookupPrivilegeNameA
0091 stub LookupPrivilegeNameW
0092 stub LookupPrivilegeValueA
0093 stub LookupPrivilegeValueW
0094 stub MakeAbsoluteSD
0095 stub MakeSelfRelativeSD
0096 stub MapGenericMask
0097 stub NotifyBootConfigStatus
0098 stub NotifyChangeEventLog
0099 stub ObjectCloseAuditAlarmA
0100 stub ObjectCloseAuditAlarmW
0101 stub ObjectOpenAuditAlarmA
0102 stub ObjectOpenAuditAlarmW
0103 stub ObjectPrivilegeAuditAlarmA
0104 stub ObjectPrivilegeAuditAlarmW
0105 stub OpenBackupEventLogA
0106 stub OpenBackupEventLogW
0107 stub OpenEventLogA
0108 stub OpenEventLogW
0109 stub OpenProcessToken
0110 stub OpenSCManagerA
0111 stub OpenSCManagerW
0112 stub OpenServiceA
0113 stub OpenServiceW
0114 stub OpenThreadToken
0115 stub PrivilegeCheck
0116 stub PrivilegedServiceAuditAlarmA
0117 stub PrivilegedServiceAuditAlarmW
0118 stub QueryServiceConfigA
0119 stub QueryServiceConfigW
0120 stub QueryServiceLockStatusA
0121 stub QueryServiceLockStatusW
0122 stub QueryServiceObjectSecurity
0123 stub QueryServiceStatus
0124 stub ReadEventLogA
0125 stub ReadEventLogW
0126 stub RegCloseKey
0127 stub RegConnectRegistryA
0128 stub RegConnectRegistryW
0129 stub RegCreateKeyA
0130 stub RegCreateKeyExA
0131 stub RegCreateKeyExW
0132 stub RegCreateKeyW
0133 stub RegDeleteKeyA
0134 stub RegDeleteKeyW
0135 stub RegDeleteValueA
0136 stub RegDeleteValueW
0137 stub RegEnumKeyA
0138 stub RegEnumKeyExA
0139 stub RegEnumKeyExW
0140 stub RegEnumKeyW
0141 stub RegEnumValueA
0142 stub RegEnumValueW
0143 stub RegFlushKey
0144 stub RegGetKeySecurity
0145 stub RegLoadKeyA
0146 stub RegLoadKeyW
0147 stub RegNotifyChangeKeyValue
0148 stub RegOpenKeyA
0149 stub RegOpenKeyExA
0150 stub RegOpenKeyExW
0151 stub RegOpenKeyW
0152 stub RegQueryInfoKeyA
0153 stub RegQueryInfoKeyW
0154 stub RegQueryMultipleValuesA
0155 stub RegQueryMultipleValuesW
0156 stub RegQueryValueA
0157 stub RegQueryValueExA
0158 stub RegQueryValueExW
0159 stub RegQueryValueW
0160 stub RegRemapPreDefKey
0161 stub RegReplaceKeyA
0162 stub RegReplaceKeyW
0163 stub RegRestoreKeyA
0164 stub RegRestoreKeyW
0165 stub RegSaveKeyA
0166 stub RegSaveKeyW
0167 stub RegSetKeySecurity
0168 stub RegSetValueA
0169 stub RegSetValueExA
0170 stub RegSetValueExW
0171 stub RegSetValueW
0172 stub RegUnLoadKeyA
0173 stub RegUnLoadKeyW
0174 stub RegisterEventSourceA
0175 stub RegisterEventSourceW
0176 stub RegisterServiceCtrlHandlerA
0177 stub RegisterServiceCtrlHandlerW
0178 stub ReportEventA
0179 stub ReportEventW
0180 stub RevertToSelf
0181 stub SetAclInformation
0182 stub SetFileSecurityA
0183 stub SetFileSecurityW
0184 stub SetKernelObjectSecurity
0185 stub SetPrivateObjectSecurity
0186 stub SetSecurityDescriptorDacl
0187 stub SetSecurityDescriptorGroup
0188 stub SetSecurityDescriptorOwner
0189 stub SetSecurityDescriptorSacl
0190 stub SetServiceBits
0191 stub SetServiceObjectSecurity
0192 stub SetServiceStatus
0193 stub SetThreadToken
0194 stub SetTokenInformation
0195 stub StartServiceA
0196 stub StartServiceCtrlDispatcherA
0197 stub StartServiceCtrlDispatcherW
0198 stub StartServiceW
0199 stub UnlockServiceDatabase

View File

@ -10,23 +10,35 @@ static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include "callback.h"
#include "stackframe.h"
#include "win.h"
#include "alias.h"
#include "relay32.h"
#include "stddebug.h"
#include "debug.h"
/**********************************************************************
* CallWindowProc (USER.122)
*/
LONG CallWindowProc( WNDPROC func, HWND hwnd, WORD message,
WORD wParam, LONG lParam )
{
FUNCTIONALIAS *a;
WND *wndPtr = WIN_FindWndPtr( hwnd );
if (!wndPtr) return 0;
SpyMessage(hwnd, message, wParam, lParam);
return CallWndProc( (FARPROC)func, wndPtr->hInstance,
/* check if we have something better than 16 bit relays */
if(!ALIAS_UseAliases || !(a=ALIAS_LookupAlias((DWORD)func)) ||
(!a->wine && !a->win32))
return CallWndProc( (FARPROC)func, wndPtr->hInstance,
hwnd, message, wParam, lParam );
if(a->wine)
return ((LONG(*)(WORD,WORD,WORD,LONG))(a->wine))
(hwnd,message,wParam,lParam);
if(!a->win32)
fprintf(stderr,"Where is the Win32 callback?\n");
return RELAY32_CallWindowProc(a->win32,hwnd,message,wParam,lParam);
}

View File

@ -0,0 +1,28 @@
name comdlg32
base 1
0000 stub ArrowBtnWndProc
0001 stub ChooseColorA
0002 stub ChooseColorW
0003 stub ChooseFontA
0004 stub ChooseFontW
0005 stub CommDlgExtendedError
0006 stub FindTextA
0007 stub FindTextW
0008 stub GetFileTitleA
0009 stub GetFileTitleW
0010 stub GetOpenFileNameA
0011 stub GetOpenFileNameW
0012 stub GetSaveFileNameA
0013 stub GetSaveFileNameW
0014 stub LoadAlterBitmap
0015 stub PageSetupDlgA
0016 stub PageSetupDlgW
0017 stub PrintDlgA
0018 stub PrintDlgW
0019 stub ReplaceTextA
0020 stub ReplaceTextW
0021 stub WantArrows
0022 stub dwLBSubclass
0023 stub dwOKSubclass

View File

@ -154,6 +154,7 @@ id 3
179 pascal16 GetDCState(word) GetDCState
180 pascal16 SetDCState(word word) SetDCState
181 pascal16 RectInRegionOld(word ptr) RectInRegion
188 stub GetTextExtentEx
190 stub SetDCHook
191 stub GetDCHook
192 stub SetHookFlags
@ -196,6 +197,17 @@ id 3
250 pascal16 Copy(ptr ptr word) Copy
253 stub DeleteSpoolPage
254 stub SpoolFile
267 stub StartDocPrintEra
268 stub StartPagePrinter
269 stub WritePrinter
270 stub EndPagePrinter
271 stub AbortPrinter
272 stub EndDocPrinter
274 stub ClosePrinter
280 stub GetRealDriverInfo
281 stub DrvSetPrinterData
282 stub DrvGetPrinterData
299 stub ENGINEGETCHARWIDTHEX
300 stub ENGINEENUMERATEFONT
301 stub ENGINEDELETEFONT
302 stub ENGINEREALIZEFONT
@ -211,6 +223,9 @@ id 3
312 stub ConvertOutLineFontFile
313 pascal16 GetRasterizerCaps(ptr word) GetRasterizerCaps
314 stub EngineExtTextOut
315 stub EngineRealizeFontExt
316 stub EngineGetCharWidthStr
317 stub EngineGetGlyphBmpExt
330 pascal16 EnumFontFamilies(word ptr segptr long) EnumFontFamilies
332 pascal16 GetKerningPairs(word word ptr) GetKerningPairs
345 pascal16 GetTextAlign(word) GetTextAlign
@ -223,6 +238,7 @@ id 3
352 stub GetPhysicalFontHandle
353 stub GetAspectRatioFilter
354 stub ShrinkGDIHeap
355 stub FTrapping0
360 pascal16 CreatePalette(ptr) CreatePalette
361 pascal16 GDISelectPalette(word word) GDISelectPalette
362 pascal16 GDIRealizePalette(word) GDIRealizePalette
@ -248,6 +264,7 @@ id 3
400 pascal16 FastWindowFrame(word long word word long) FastWindowFrame
401 stub GDIMOVEBITMAP
403 stub GDIINIT2
404 stub GetTTGlyphIndexMap
405 stub FINALGDIINIT
407 stub CREATEUSERBITMAP
409 stub CREATEUSERDISCARDABLEBITMAP
@ -296,4 +313,65 @@ id 3
ScaleViewportExtEx
485 pascal16 ScaleWindowExtEx(word s_word s_word s_word s_word ptr)
ScaleWindowExtEx
486 stub GETASPECTRATIOFILEREX
486 stub GETASPECTRATIOFILTEREX
489 stub CreateDIBSection
490 stub CloseEnhMetafile
491 stub CopyEnhMetafile
492 stub CreateEnhMetafile
493 stub DeleteEnhMetafile
495 stub GDIComment
496 stub GetEnhMetafile
497 stub GetEnhMetafileBits
498 stub GetEnhMetafileDescription
499 stub GetEnhMetafileHeader
501 stub GetEnhMetafilePaletteEntries
502 stub PolyBezier
503 stub PolyBezierTo
504 stub PlayEnhMetafileRecord
505 stub SetEnhMetafileBits
506 stub SetMetaRgn
508 stub ExtSelectClipRgn
511 stub AbortPath
512 stub BeginPath
513 stub CloseFigure
514 stub EndPath
515 stub FillPath
516 stub FlattenPath
517 stub GetPath
518 stub PathToRegion
519 stub SelectClipPath
520 stub StrokeAndFillPath
521 stub StrokePath
522 stub WidenPath
523 stub ExtCreatePen
524 stub GetArcDirection
525 stub SetArcDirection
526 stub GetMiterLimit
527 stub SetMiterLimit
528 stub GDIParametersInfo
529 stub CreateHalftonePalette
602 stub SetDIBColorTable
603 stub GetDIBColorTable
604 stub SetSolidBrush
605 stub SysDeleteObject
606 stub SetMagicColors
607 stub GetRegionData
608 stub ExtCreateRegion
609 stub GDIFreeResources
610 stub GDISignalProc32
611 stub GetRandomRgn
612 stub GetTextCharSet
613 stub EnumFontFamiliesEx
614 stub AddLpkToGDI
615 stub GetCharacterPlacement
616 stub GetFontLanguageInfo
650 stub BuildInverseTableDIB
701 stub GDITHKCONNECTIONDATALS
702 stub FT_GDIFTHKTHKCONNECTIONDATA
703 stub FDTHKCONNECTIONDATASL
704 stub ICMTHKCONNECTIONDATASL
820 stub ICMCreateTransform
821 stub ICMDeleteTransform
822 stub ICMTranslateRGB
823 stub ICMTranslateRGBs
824 stub ICMCheckCOlorsInGamut

View File

@ -221,7 +221,7 @@ base 1
0217 stub GetRegionData
0218 stub GetRelAbs
0219 stub GetRgnBox
0220 stub GetStockObject
0220 stdcall GetStockObject(long) GetStockObject
0221 stub GetStretchBltMode
0222 stub GetSystemPaletteEntries
0223 stub GetSystemPaletteUse
@ -356,7 +356,7 @@ base 1
0352 stub StrokeAndFillPath
0353 stub StrokePath
0354 stub SwapBuffers
0355 stub TextOutA
0355 stdcall TextOutA(long long long ptr long) TextOut
0356 stub TextOutW
0357 stub UnloadNetworkFonts
0358 stub UnrealizeObject

View File

@ -27,6 +27,7 @@ id 1
24 pascal16 UnlockSegment(word) UnlockSegment
25 pascal GlobalCompact(long) GlobalCompact
26 pascal16 GlobalFreeAll(word) GlobalFreeAll
27 stub GetModuleName
28 stub GlobalMasterHandle
29 pascal16 Yield() Yield
30 pascal16 WaitEvent(word) WaitEvent
@ -105,7 +106,7 @@ id 1
107 pascal SetErrorMode(word) SetErrorMode
108 stub SwitchStackTo
109 stub SwitchStackBack
110 stub PatchCodeHandle
110 pascal16 PatchCodeHandle(word) PatchCodeHandle
111 pascal GlobalWire(word) GlobalWire
112 pascal16 GlobalUnWire(word) GlobalUnWire
113 equate __AHSHIFT 3
@ -139,6 +140,14 @@ id 1
139 stub DoSignal
140 stub SetSigHandler
141 stub InitTask1
142 stub GetProfileSectionNames
143 stub GetPrivateProfileSectionNames
144 stub CreateDirectory
145 stub RemoveDirectory
146 stub DeleteFile
147 stub SetLastError
148 stub GetLastError
149 stub GetVersionEx
150 pascal16 DirectedYield(word) DirectedYield
151 stub WinOldApCall
152 pascal16 GetNumTasks() GetNumTasks
@ -196,6 +205,26 @@ id 1
205 stub CVWBreak
206 pascal16 AllocSelectorArray(word) AllocSelectorArray
207 return IsDBCSLeadByte 2 0
216 stub RegEnumKey
217 stub RegOpenKey
218 stub RegCreateKey
219 stub RegDeleteValue
220 stub RegCloseKey
221 stub RegSetValue
222 stub RegDeleteValue
223 stub RegEnumValue
224 stub RegQueryValue
225 stub RegQueryValueEx
226 stub RegSetValueEx
227 stub RegFlushKey
#228 K228
#229 K229
230 stub GlobalSmartPageLock
231 stub GlobalSmartPageUnlock
232 stub RegLoadKey
233 stub RegUnloadKey
234 stub RegSaveKey
235 stub InvalidateNlsCache
310 pascal16 LocalHandleDelta(word) LocalHandleDelta
311 stub GetSetKernelDosProc
314 stub DebugDefineSegment
@ -230,9 +259,35 @@ id 1
349 pascal16 _hread(word ptr long) _hread
350 pascal16 _hwrite(word ptr long) _hwrite
#351 BUNNY_351
352 stub lstrcatn
353 pascal lstrcpyn(segptr segptr word) lstrcpyn
354 stub GetAppCompatFlags
355 pascal16 GetWinDebugInfo(ptr word) GetWinDebugInfo
356 pascal16 SetWinDebugInfo(ptr) SetWinDebugInfo
360 stub OpenFileEx
#361 PIGLET_361
403 pascal16 FarSetOwner(word word) FarSetOwner
404 pascal16 FarGetOwner(word) FarGetOwner
406 stub WritePrivateProfileStruct
407 stub GetPrivateProfileStruct
411 stub GetCurrentDirectory
412 stub SetCurrentDirectory
413 stub FindFirstFile
414 stub FindNextFile
415 stub FindClose
416 stub WritePrivateProfileSection
417 stub WriteProfileSection
418 stub GetPrivateProfileSection
419 stub GetProfileSection
420 stub GetFileAttributes
421 stub SetFileAttributes
422 stub GetDiskFreeSpace
432 stub FileTimeToLocalFileTime
491 stub RegisterServiceProcess
513 stub LoadLibraryEx32W
514 stub FreeLibrary32W
515 stub GetProcAddress32W
516 stub GetVDMPointer32W
517 stub CallProc32W
518 stub CallProcEx32W
627 stub IsBadFlatReadWritePtr

View File

@ -98,7 +98,8 @@ BOOL RELAY_Init(void)
/***********************************************************************
* RELAY_DebugCall32
*/
void RELAY_DebugCall32( int func_type, char *args )
void RELAY_DebugCall32( int func_type, char *args,
void *entry_point, int args32 )
{
STACK16FRAME *frame;
struct dll_table_s *table;
@ -154,7 +155,7 @@ void RELAY_DebugCall32( int func_type, char *args )
if (func_type == 2) /* register function */
{
struct sigcontext_struct *context = (struct sigcontext_struct *)args16;
struct sigcontext_struct *context = (struct sigcontext_struct *)&args32;
printf( " AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08lx\n",
AX_reg(context), BX_reg(context), CX_reg(context),
DX_reg(context), SI_reg(context), DI_reg(context),
@ -166,7 +167,7 @@ void RELAY_DebugCall32( int func_type, char *args )
/***********************************************************************
* RELAY_DebugReturn
*/
void RELAY_DebugReturn( int func_type, int ret_val )
void RELAY_DebugReturn( int func_type, int ret_val, int args32 )
{
STACK16FRAME *frame;
struct dll_table_s *table;
@ -192,6 +193,13 @@ void RELAY_DebugReturn( int func_type, int ret_val )
break;
case 2: /* regs */
printf( "retval=none ds=%04x\n", frame->ds );
{
struct sigcontext_struct *context = (struct sigcontext_struct *)&args32;
printf( " AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08lx\n",
AX_reg(context), BX_reg(context), CX_reg(context),
DX_reg(context), SI_reg(context), DI_reg(context),
ES_reg(context), EFL_reg(context) );
}
break;
}
}

View File

@ -19,10 +19,21 @@
WIN32_builtin *WIN32_builtin_list;
/* Functions are in generated code */
void ADVAPI32_Init();
void COMDLG32_Init();
void GDI32_Init();
void KERNEL32_Init();
void SHELL32_Init();
void USER32_Init();
void WINPROCS32_Init();
int RELAY32_Init(void)
{
#ifndef WINELIB
/* Add a call for each DLL */
ADVAPI32_Init();
COMDLG32_Init();
GDI32_Init();
KERNEL32_Init();
SHELL32_Init();
@ -37,7 +48,7 @@ WIN32_builtin *RELAY32_GetBuiltinDLL(char *name)
{
WIN32_builtin *it;
for(it=WIN32_builtin_list;it;it=it->next)
if(strcmp(name,it->name)==0)
if(strcasecmp(name,it->name)==0)
return it;
return NULL;
}
@ -74,9 +85,10 @@ void *RELAY32_GetEntryPoint(char *dll_name, char *item, int hint)
strcmp(item,dll->functions[hint].name)==0)
return dll->functions[hint].definition;
/* hint is incorrect, search for name */
for(i=1;i<dll->size;i++)
if(strcmp(item,dll->functions[i].name)==0)
return dll->functions[i].definition;
for(i=0;i<dll->size;i++)
if (dll->functions[i].name && !strcmp(item,dll->functions[i].name))
return dll->functions[i].definition;
/* function at hint has no name (unimplemented) */
if(hint && hint<dll->size && !dll->functions[hint].name)
{

View File

@ -39,7 +39,7 @@ id 2
38 pascal16 GetWindowTextLength(word) GetWindowTextLength
39 pascal16 BeginPaint(word ptr) BeginPaint
40 pascal16 EndPaint(word ptr) EndPaint
41 pascal16 CreateWindow(ptr ptr long s_word s_word s_word s_word
41 pascal16 CreateWindow(segptr segptr long s_word s_word s_word s_word
word word word segptr) CreateWindow
42 pascal16 ShowWindow(word word) ShowWindow
43 pascal16 CloseWindow(word) CloseWindow
@ -116,6 +116,7 @@ id 2
115 stub ReplyMessage
116 pascal16 PostAppMessage(word word word long) PostAppMessage
118 pascal16 RegisterWindowMessage(long) RegisterWindowMessage
117 stub WindowFromDC
119 pascal GetMessagePos() GetMessagePos
120 pascal GetMessageTime() GetMessageTime
121 pascal SetWindowsHook(s_word segptr) SetWindowsHook
@ -217,7 +218,7 @@ id 2
#216 USERSEEUSERDO
217 pascal16 LookupMenuHandle(word s_word) LookupMenuHandle
218 pascal16 DialogBoxIndirect(word word word segptr) DialogBoxIndirect
219 pascal16 CreateDialogIndirect(word ptr word segptr) CreateDialogIndirect
219 pascal16 CreateDialogIndirect(word segptr word segptr) CreateDialogIndirect
220 pascal16 LoadMenuIndirect(ptr) LoadMenuIndirect
221 pascal16 ScrollDC(word s_word s_word ptr ptr word ptr) ScrollDC
222 pascal16 GetKeyboardState(ptr) GetKeyboardState
@ -241,7 +242,7 @@ id 2
240 pascal16 DialogBoxIndirectParam(word word word segptr long)
DialogBoxIndirectParam
241 pascal16 CreateDialogParam(word segptr word segptr long) CreateDialogParam
242 pascal16 CreateDialogIndirectParam(word ptr word segptr long)
242 pascal16 CreateDialogIndirectParam(word segptr word segptr long)
CreateDialogIndirectParam
243 pascal GetDialogBaseUnits() GetDialogBaseUnits
244 pascal16 EqualRect(ptr ptr) EqualRect
@ -297,6 +298,7 @@ id 2
293 pascal CallNextHookEx(segptr s_word word long) CallNextHookEx
294 stub LockWindowUpdate
#299 MOUSE_EVENT
300 stub UnloadInstalledDrivers
#301 BOZOSLIVEHERE :-))
#306 BEAR306
308 pascal DefDlgProc(word word word long) DefDlgProc
@ -325,12 +327,31 @@ id 2
358 pascal16 IsMenu(word) IsMenu
359 pascal16 GetDCEx(word word long) GetDCEx
362 stub DCHook
368 stub CopyIcon
364 stub LookupIconIDFromDirectoryEx
368 pascal16 CopyIcon(word word) CopyIcon
369 stub CopyCursor
370 pascal16 GetWindowPlacement(word ptr) GetWindowPlacement
371 pascal16 SetWindowPlacement(word ptr) SetWindowPlacement
372 stub GetInternalIconHeader
373 pascal16 SubtractRect(ptr ptr ptr) SubtractRect
375 stub DrawTextEx
376 stub SetMessageExtraInfo
378 stub SetPropEx
379 stub GetPropEx
380 stub RemovePropEx
381 stub UsrMPR_ThunkData16
382 stub SetWindowContextHelpID
383 stub GetWindowContextHelpID
384 stub SetMenuContextHelpID
385 stub GetMenuContextHelpID
389 stub LoadImage
390 stub CopyImage
391 stub SignalProc32
394 stub DrawIconEx
395 stub GetIconInfo
397 stub RegisterClassEx
398 stub GetClassInfoEx
399 stub ChildWindowFromPointEx
400 stub FinalUserInit
402 pascal16 GetPriorityClipboardFormat(word ptr s_word)
GetPriorityClipboardFormat
@ -340,6 +361,7 @@ id 2
407 pascal16 CreateIcon(word word word byte byte ptr ptr) CreateIcon
408 pascal16 CreateCursorIconIndirect(word ptr ptr ptr)
CreateCursorIconIndirect
409 stub InitThreadInput
410 pascal16 InsertMenu(word word word word ptr) InsertMenu
411 pascal16 AppendMenu(word word word ptr) AppendMenu
412 pascal16 RemoveMenu(word word word) RemoveMenu
@ -355,6 +377,9 @@ id 2
421 pascal16 wvsprintf(ptr ptr ptr) wvsprintf
422 stub DlgDirSelectEx
423 stub DlgDirSelectComboBoxEx
427 stub FindWindowEx
428 stub TileWindows
429 stub CascadeWindows
430 pascal16 lstrcmp(ptr ptr) lstrcmp
431 pascal AnsiUpper(segptr) WIN16_AnsiUpper
432 pascal AnsiLower(segptr) WIN16_AnsiLower
@ -364,10 +389,16 @@ id 2
436 pascal16 IsCharLower(byte) IsCharLower
437 pascal16 AnsiUpperBuff(ptr word) AnsiUpperBuff
438 pascal16 AnsiLowerBuff(ptr word) AnsiLowerBuff
441 stub InsertMenuItem
443 stub GetMenuItemInfo
445 pascal DefFrameProc(word word word word long) DefFrameProc
446 stub SetMenuItemInfo
447 pascal DefMDIChildProc(word word word long) DefMDIChildProc
448 stub DrawAnimatedRects
449 stub DrawState
450 stub CreateIconFromResourceEx
451 pascal16 TranslateMDISysAccel(word ptr) TranslateMDISysAccel
452 pascal16 CreateWindowEx(long ptr ptr long s_word s_word s_word s_word
452 pascal16 CreateWindowEx(long segptr segptr long s_word s_word s_word s_word
word word word segptr) CreateWindowEx
454 pascal16 AdjustWindowRectEx(ptr long word long) AdjustWindowRectEx
455 stub GetIconId
@ -386,6 +417,11 @@ id 2
471 pascal16 lstrcmpi(ptr ptr) lstrcmpi
472 pascal AnsiNext(segptr) AnsiNext
473 pascal AnsiPrev(segptr segptr) AnsiPrev
475 stub SetScrollInfo
476 stub GetScrollInfo
477 stub GetKeyboardLayoutName
478 stub LoadKeyboardLayout
479 stub MenuItemFromPoint
480 stub GetUserLocalObjType
#481 HARDWARE_EVENT
482 pascal16 EnableScrollBar(word word word) EnableScrollBar
@ -424,3 +460,57 @@ id 2
530 pascal16 WNetGetDirectoryType(ptr ptr) WNetGetDirectoryType
531 pascal16 WNetDirectoryNotify(word ptr word) WNetDirectoryNotify
532 pascal16 WNetGetPropertyText(word word word ptr word) WNetGetPropertyText
533 stub WNetInitialize
534 stub WNetLogon
669 stub SetWindowRgn
600 stub GetShellWindow
601 stub DoHotkeyStuff
602 stub SetCheckCursorTimer
604 stub BroadcastSystemMessage
605 stub HackTaskMonitor
606 stub FormatMessage
608 stub GetForegroundWindow
609 stub SetForegroundWindow
610 stub DestroyIcon32
620 stub ChangeDisplaySettings
621 stub EnumDisplaySettings
640 stub MsgWaitForMultipleObjects
650 stub ActivateKeyboardLayout
651 stub GetKeyboardLayout
652 stub GetKeyboardLayoutList
654 stub UnloadKeyboardLayout
655 stub PostPostedMessages
656 stub DrawFrameControl
657 stub DrawCaptionTemp
658 stub DispatchInput
659 stub DrawEdge
660 stub DrawCaption
661 stub SetSysColorsTemp
662 stub DrawMenubarTemp
663 stub GetMenuDefaultItem
664 stub SetMenuDefaultItem
665 stub GetMenuItemRect
666 stub CheckMenuRadioItem
667 stub TrackPopupMenuEx
668 stub SetWindowRgn
669 stub GetWindowRgn
800 stub CHOOSEFONT_CALLBACK16
801 stub FINDREPLACE_CALLBACK16
802 stub OPENFILENAME_CALLBACK16
803 stub PRINTDLG_CALLBACK16
804 stub CHOOSECOLOR_CALLBACK16
819 stub PeekMessage32
820 stub GetMessage32
821 stub TranslateMessage32
821 stub IsDialogMessage32
822 stub DispatchMessage32
825 stub PostMessage32
826 stub PostThreadMessage32
827 stub MessageBoxIndirect
823 stub CallMsgFilter32
851 stub MsgThkConnectionDataLS
853 stub FT_USRFTHKTHKCONNECTIONDATA
854 stub FT__USRF2THKTHKCONNECTIONDATA
855 stub Usr32ThkConnectionDataSL
890 stub InstallIMT
891 stub UninstallIMT

View File

@ -10,7 +10,7 @@ base 1
0006 stub ArrangeIconicWindows
0007 stub AttachThreadInput
0008 stub BeginDeferWindowPos
0009 stub BeginPaint
0009 stdcall BeginPaint(long ptr) USER32_BeginPaint
0010 stub BringWindowToTop
0011 stub BroadcastSystemMessage
0012 stub CalcChildScroll
@ -83,7 +83,8 @@ base 1
0079 stub CreateMDIWindowW
0080 stub CreateMenu
0081 stub CreatePopupMenu
0082 stub CreateWindowExA
0082 stdcall CreateWindowExA(long ptr ptr long long long long long
long long long ptr) USER32_CreateWindowExA
0083 stub CreateWindowExW
0084 stub CreateWindowStationA
0085 stub CreateWindowStationW
@ -126,7 +127,7 @@ base 1
0122 stub DefFrameProcW
0123 stub DefMDIChildProcA
0124 stub DefMDIChildProcW
0125 stub DefWindowProcA
0125 stdcall DefWindowProcA(long long long long) USER32_DefWindowProcA
0126 stub DefWindowProcW
0127 stub DeferWindowPos
0128 stub DeleteMenu
@ -141,7 +142,7 @@ base 1
0137 stub DialogBoxIndirectParamW
0138 stub DialogBoxParamA
0139 stub DialogBoxParamW
0140 stub DispatchMessageA
0140 stdcall DispatchMessageA(ptr) USER32_DispatchMessageA
0141 stub DispatchMessageW
0142 stub DlgDirListA
0143 stub DlgDirListComboBoxA
@ -176,7 +177,7 @@ base 1
0172 stub EndDeferWindowPos
0173 stub EndDialog
0174 stub EndMenu
0175 stub EndPaint
0175 stdcall EndPaint(long ptr) USER32_EndPaint
0176 stub EndTask
0177 stub EnumChildWindows
0178 stub EnumClipboardFormats
@ -270,7 +271,7 @@ base 1
0266 stub GetMenuState
0267 stub GetMenuStringA
0268 stub GetMenuStringW
0269 stub GetMessageA
0269 stdcall GetMessageA(ptr long long long) USER32_GetMessageA
0270 stub GetMessageExtraInfo
0271 stub GetMessagePos
0272 stub GetMessageTime
@ -427,7 +428,7 @@ base 1
0423 stub PtInRect
0424 stub QuerySendMessage
0425 stub RedrawWindow
0426 stub RegisterClassA
0426 stdcall RegisterClassA(ptr) USER32_RegisterClassA
0427 stub RegisterClassExA
0428 stub RegisterClassExW
0429 stub RegisterClassW
@ -534,7 +535,7 @@ base 1
0530 stub ShowOwnedPopups
0531 stub ShowScrollBar
0532 stub ShowStartGlass
0533 stub ShowWindow
0533 stdcall ShowWindow(long long) ShowWindow
0534 stub ShowWindowAsync
0535 stub SubtractRect
0536 stub SwapMouseButton
@ -567,7 +568,7 @@ base 1
0563 stub UnregisterClassW
0564 stub UnregisterHotKey
0565 stub UpdatePerUserSystemParameters
0566 stub UpdateWindow
0566 stdcall UpdateWindow(long) UpdateWindow
0567 stub UserClientDllInitialize
0568 stub UserRealizePalette
0569 stub UserRegisterWowHandlers

View File

@ -26,6 +26,9 @@ id 24
23 pascal16 CARET_Callback(word word word long) CARET_Callback
24 pascal16 TASK_Reschedule() TASK_Reschedule
25 pascal MMSysTimeCallback(word word word long) MMSysTimeCallback
26 register Win32CallToStart() PE_Win32CallToStart
27 pascal EntryAddrProc(word word) MODULE_GetEntryPoint
28 pascal MyAlloc(word word word) MODULE_AllocateSegment
# Interrupt vectors 0-255 are ordinals 100-355
# The 'word' parameter are the flags pushed on the stack by the interrupt
@ -286,4 +289,3 @@ id 24
353 register INT_IntfdHandler(word) INT_DummyHandler
354 register INT_IntfeHandler(word) INT_DummyHandler
355 register INT_IntffHandler(word) INT_DummyHandler

23
include/alias.h 100644
View File

@ -0,0 +1,23 @@
/*
* structure definitions for aliases
*
* Copyright 1995 Martin von Loewis
*
*/
typedef struct _FUNCTIONALIAS{
DWORD wine;
DWORD win16;
DWORD win32;
} FUNCTIONALIAS;
extern int ALIAS_UseAliases;
typedef struct _ALIASHASH{
DWORD used;
int recno;
} ALIASHASH;
void ALIAS_RegisterAlias(DWORD,DWORD,DWORD);
FUNCTIONALIAS* ALIAS_LookupAlias(DWORD);

View File

@ -22,8 +22,10 @@ extern int CallTo32_LargeStack( int (*func)(), int nbargs, ... );
/* func ds parameters */
extern WORD CallTo16_word_ ( FARPROC, WORD );
extern WORD CallTo16_word_ww ( FARPROC, WORD, WORD, WORD );
extern WORD CallTo16_word_wl ( FARPROC, WORD, WORD, LONG );
extern WORD CallTo16_word_ll ( FARPROC, WORD, LONG, LONG );
extern WORD CallTo16_word_www ( FARPROC, WORD, WORD, WORD, WORD );
extern WORD CallTo16_word_wwl ( FARPROC, WORD, WORD, WORD, LONG );
extern WORD CallTo16_word_wlw ( FARPROC, WORD, WORD, LONG, WORD );
extern LONG CallTo16_long_wwl ( FARPROC, WORD, WORD, WORD, LONG );

View File

@ -17,24 +17,23 @@ typedef struct {
BYTE byBitsPix; /* bits per pixel */
} CURSORICONINFO, FAR *LPCURSORICONINFO;
typedef struct {
WORD cdReserved;
WORD cdType;
WORD cdCount;
} CURSORDIR;
typedef struct {
BYTE Width;
BYTE Reserved1;
BYTE Height;
BYTE Reserved2;
WORD curXHotspot;
WORD curYHotspot;
WORD Width;
WORD Height;
WORD Planes;
WORD BitCount;
DWORD curDIBSize;
DWORD curDIBOffset;
WORD curDIBOffset;
} CURSORDESCRIP;
typedef struct {
CURSORDESCRIP descriptor;
HBITMAP hBitmap;
Display *display;
Pixmap pixshape;
Pixmap pixmask;
Cursor xcursor;
typedef struct {
Cursor xcursor;
} CURSORALLOC;
extern void CURSOR_SetWinCursor( HWND hwnd, HCURSOR hcursor ); /* cursor.c */

View File

@ -21,7 +21,7 @@ void ATOM_GlobalInit(void);
ATOM DDE_GlobalAddAtom( SEGPTR str );
ATOM DDE_GlobalDeleteAtom( ATOM atom );
ATOM DDE_GlobalFindAtom( SEGPTR str );
WORD DDE_GlobalGetAtomName( ATOM atom, LPSTR buffer, short count )
WORD DDE_GlobalGetAtomName( ATOM atom, LPSTR buffer, short count );
#endif /* CONFIG_IPC */

View File

@ -11,11 +11,6 @@
extern BOOL DIALOG_Init(void);
extern HWND DIALOG_GetFirstTabItem( HWND hwndDlg );
extern int DialogBoxIndirectPtr(HINSTANCE hInst, LPCSTR dlgTemplate,
HWND owner, WNDPROC dlgProc);
extern int DialogBoxIndirectParamPtr(HINSTANCE hInst, LPCSTR dlgTemplate,
HWND owner, WNDPROC dlgProc,
LPARAM param);
#ifndef WINELIB
#pragma pack(1)
@ -67,12 +62,12 @@ typedef struct
/* Dialog template */
typedef struct
{
DLGTEMPLATEHEADER * header;
unsigned char * menuName;
LPSTR className;
LPSTR caption;
WORD pointSize;
LPSTR faceName;
DLGTEMPLATEHEADER header;
SEGPTR menuName;
SEGPTR className;
SEGPTR caption;
WORD pointSize;
SEGPTR faceName;
} DLGTEMPLATE;
#ifndef WINELIB

View File

@ -12,32 +12,6 @@
#define MAX_NAME_LENGTH 64
struct pe_data {
struct pe_header_s *pe_header;
struct pe_segment_table *pe_seg;
struct PE_Import_Directory *pe_import;
struct PE_Export_Directory *pe_export;
struct PE_Resource_Directory *pe_resource;
int resource_offset; /* offset to resource typedirectory in file */
};
struct w_files
{
struct w_files * next;
char * name; /* Name, as it appears in the windows binaries */
char * filename; /* Actual name of the unix file that satisfies this */
int type; /* DLL or EXE */
int fd;
unsigned short hinstance;
HANDLE hModule;
int initialised;
struct mz_header_s *mz_header;
struct pe_data *pe;
};
extern struct w_files *wine_files;
#define DLL 0
#define EXE 1

View File

@ -48,6 +48,7 @@ typedef struct
HANDLE nrname_handle; /* Handle to non-resident name table in memory */
WORD min_swap_area; /* Min. swap area size */
WORD expected_version; /* Expected Windows version */
WORD self_loading_sel; /* Selector used for self-loading apps. procs */
} NE_MODULE;
/* Loaded file info */
@ -71,7 +72,25 @@ typedef struct
WORD selector; /* Selector of segment in memory */
} SEGTABLEENTRY;
/* Self-loading modules contain this structure in their first segment */
typedef struct
{
WORD version; /* Must be 0xA0 */
WORD reserved;
FARPROC BootApp; /* startup procedure */
FARPROC LoadAppSeg; /* procedure to load a segment */
FARPROC reserved2;
FARPROC MyAlloc; /* memory allocation procedure,
* wine must write this field */
FARPROC EntryAddrProc;
FARPROC ExitProc; /* exit procedure */
WORD reserved3[4];
FARPROC SetOwner; /* Set Owner procedure, exported by wine */
} SELFLOADHEADER;
/* Parameters for LoadModule() */
typedef struct
{
HANDLE hEnvironment; /* Environment segment */

View File

@ -4,9 +4,17 @@
typedef LPCSTR OLE_LPCSTR;
/* object types */
#define OT_LINK 1
#define OT_EMBEDDED 2
#define OT_STATIC 3
/* activate verbs */
#define OLEVERB_PRIMARY 0
typedef enum
{
OLE_OK=0, /* Yes Sir! */
OLE_OK,
OLE_WAIT_FOR_RELEASE,
OLE_BUSY,
OLE_ERROR_PROTECT_ONLY,
@ -65,28 +73,64 @@ typedef enum
OLE_WARN_DELETE_DATA = 1000
} OLESTATUS;
typedef enum{
typedef enum {
OLE_SERVER_MULTI,
OLE_SERVER_SINGLE
} OLE_SERVER_USE;
/* dunno if the values are correct, somebody please check */
typedef enum {
OLE_CHANGED,
OLE_SAVED,
OLE_CLOSED,
OLE_QUERY_PAINT,
OLE_QUERY_RETRY,
OLE_RELEASE,
OLE_RENAMED,
OLE_SAVED
OLE_QUERY_PAINT,
OLE_RELEASE,
OLE_QUERY_RETRY
} OLE_NOTIFICATION;
typedef enum {
olerender_none,
olerender_draw,
olerender_format
} OLEOPT_RENDER;
typedef enum {
oleupdate_always,
oleupdate_onsave,
oleupdate_oncall,
oleupdate_onclose,
} OLEOPT_UPDATE;
typedef LONG LHSERVER;
typedef LONG LHSERVERDOC;
typedef LONG LHCLIENTDOC;
typedef LONG OLECLIPFORMAT;/* dunno about this type, please change/add */
typedef LONG OLEOPT_UPDATE;/* dunno about this type, please change/add */
typedef OLEOPT_UPDATE* LPOLEOPT_UPDATE;/* dunno about this type, please change/add */
typedef LONG *OLE_RELEASE_METHOD;/* dunno */
typedef OLEOPT_UPDATE* LPOLEOPT_UPDATE;
typedef enum {
OLE_NONE, /* none */
OLE_DELETE, /* delete object */
OLE_LNKPASTE, /* link paste */
OLE_EMBPASTE, /* paste(and update) */
OLE_SHOW,
OLE_RUN,
OLE_ACTIVATE,
OLE_UPDATE,
OLE_CLOSE,
OLE_RECONNECT,
OLE_SETUPDATEOPTIONS,
OLE_SERVERRUNLAUNCH, /* unlaunch (terminate?) server */
OLE_LOADFROMSTREAM, /* (auto reconnect) */
OLE_SETDATA, /* OleSetData */
OLE_REQUESTDATA, /* OleRequestData */
OLE_OTHER,
OLE_CREATE,
OLE_CREATEFROMTEMPLATE,
OLE_CREATELINKFROMFILE,
OLE_COPYFROMLNK,
OLE_CREATREFROMFILE,
OLE_CREATEINVISIBLE
} OLE_RELEASE_METHOD;
typedef struct _OLETARGETDEVICE {
UINT otdDeviceNameOffset;

View File

@ -12,6 +12,7 @@ struct options
char * desktopGeometry; /* NULL when no desktop */
char * programName; /* To use when loading resources */
int usePrivateMap;
int useFixedMap;
int synchronous; /* X synchronous mode */
int backingstore; /* Use backing store */
short cmdShow;

View File

@ -1,7 +1,33 @@
#ifndef __WINE_PE_IMAGE_H
#define __WINE_PE_IMAGE_H
extern void *RELAY32_GetEntryPoint(char *dll_name, char *item, int hint);
#include "windows.h"
struct pe_data {
struct pe_header_s *pe_header;
struct pe_segment_table *pe_seg;
struct PE_Import_Directory *pe_import;
struct PE_Export_Directory *pe_export;
struct PE_Resource_Directory *pe_resource;
int resource_offset; /* offset to resource typedirectory in file */
};
struct w_files
{
struct w_files * next;
char * name; /* Name, as it appears in the windows binaries */
char * filename; /* Actual name of the unix file that satisfies this */
int type; /* DLL or EXE */
int fd;
unsigned short hinstance;
HANDLE hModule;
int initialised;
struct mz_header_s *mz_header;
struct pe_data *pe;
OFSTRUCT ofs;
};
extern int PE_unloadImage(struct w_files *wpnt);
extern int PE_StartProgram(struct w_files *wpnt);
extern void PE_InitDLL(struct w_files *wpnt);

58
include/relay32.h 100644
View File

@ -0,0 +1,58 @@
/*
* Relay32 definitions
*
* Copyright 1995 Martin von Loewis
*/
void *RELAY32_GetEntryPoint(char *dll_name, char *item, int hint);
LONG RELAY32_CallWindowProc(WNDPROC,int,int,int,int);
typedef struct tagWNDCLASSA{
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
DWORD hInstance;
DWORD hIcon;
DWORD hCursor;
DWORD hbrBackground;
char* lpszMenuName;
char* lpszClassName;
}WNDCLASSA;
struct WIN32_POINT{
LONG x;
LONG y;
};
struct WIN32_MSG{
DWORD hwnd;
DWORD message;
DWORD wParam;
DWORD lParam;
DWORD time;
struct WIN32_POINT pt;
};
struct WIN32_RECT{
LONG left;
LONG top;
LONG right;
LONG bottom;
};
struct WIN32_PAINTSTRUCT{
DWORD hdc;
DWORD fErase;
struct WIN32_RECT rcPaint;
DWORD fRestore;
DWORD fIncUpdate;
BYTE rgbReserved[32];
};
ATOM USER32_RegisterClassA(WNDCLASSA *);
LRESULT USER32_DefWindowProcA(DWORD hwnd,DWORD msg,DWORD wParam,DWORD lParam);
BOOL USER32_GetMessageA(struct WIN32_MSG* lpmsg,DWORD hwnd,DWORD min,DWORD max);
HDC USER32_BeginPaint(DWORD hwnd,struct WIN32_PAINTSTRUCT *lpps);
BOOL USER32_EndPaint(DWORD hwnd,struct WIN32_PAINTSTRUCT *lpps);

View File

@ -98,8 +98,8 @@ typedef struct {
INT y;
INT x;
LONG style WINE_PACKED;
char * lpszName WINE_PACKED;
char * lpszClass WINE_PACKED;
SEGPTR lpszName WINE_PACKED;
SEGPTR lpszClass WINE_PACKED;
DWORD dwExStyle WINE_PACKED;
} CREATESTRUCT, *LPCREATESTRUCT;
@ -111,8 +111,8 @@ typedef struct
typedef struct
{
LPSTR szClass;
LPSTR szTitle;
SEGPTR szClass;
SEGPTR szTitle;
HANDLE hOwner;
INT x;
INT y;
@ -2427,6 +2427,7 @@ F(WORD,GetCaretBlinkTime)
F(WORD,GetCurrentPDB)
F(WORD,GetDoubleClickTime)
F(WORD,GetNumTasks)
F(WORD,GetTaskDS)
F(int,CountClipboardFormats)
F(int,GetKBCodePage)
F(int,GetThresholdStatus)
@ -2957,7 +2958,7 @@ Fd(HRGN,CreateEllipticRgn,short,a,short,b,short,c,short,d)
Fd(HRGN,CreatePolyPolygonRgn,LPPOINT,a,LPINT,b,short,c,short,d)
Fd(HRGN,CreateRectRgn,short,a,short,b,short,c,short,d)
Fd(HWND,CreateDialog,HANDLE,a,SEGPTR,b,HWND,c,WNDPROC,d)
Fd(HWND,CreateDialogIndirect,HANDLE,a,LPCSTR,b,HWND,c,WNDPROC,d)
Fd(HWND,CreateDialogIndirect,HANDLE,a,SEGPTR,b,HWND,c,WNDPROC,d)
Fd(INT,GetTempFileName,BYTE,a,LPCSTR,b,UINT,c,LPSTR,d)
Fd(LONG,DefDlgProc,HWND,a,WORD,b,WORD,c,LONG,d)
Fd(LONG,DefMDIChildProc,HWND,a,WORD,b,WORD,c,LONG,d)
@ -3004,7 +3005,7 @@ Fe(DWORD,GetTabbedTextExtent,HDC,a,LPSTR,b,int,c,int,d,LPINT,e)
Fe(DWORD,ScaleViewportExt,HDC,a,short,b,short,c,short,d,short,e)
Fe(DWORD,ScaleWindowExt,HDC,a,short,b,short,c,short,d,short,e)
Fe(HBITMAP,CreateBitmap,short,a,short,b,BYTE,c,BYTE,d,LPSTR,e)
Fe(HWND,CreateDialogIndirectParam,HANDLE,a,LPCSTR,b,HWND,c,WNDPROC,d,LPARAM,e)
Fe(HWND,CreateDialogIndirectParam,HANDLE,a,SEGPTR,b,HWND,c,WNDPROC,d,LPARAM,e)
Fe(HWND,CreateDialogParam,HANDLE,a,SEGPTR,b,HWND,c,WNDPROC,d,LPARAM,e)
Fe(LONG,CallWindowProc,WNDPROC,a,HWND,b,WORD,c,WORD,d,LONG,e)
Fe(LONG,DefFrameProc,HWND,a,HWND,b,WORD,c,WORD,d,LONG,e)
@ -3054,8 +3055,8 @@ Fi(BOOL,Chord,HDC,a,int,xLeft,int,yTop,int,xRight,int,yBottom,int,xStart,int,ySt
Fi(BOOL,GrayString,HDC,a,HBRUSH,b,FARPROC,gsprc,LPARAM,lParam,INT,cch,INT,x,INT,y,INT,cx,INT,cy)
Fi(BOOL,Pie,HDC,a,int,xLeft,int,yTop,int,xRight,int,yBottom,int,xStart,int,yStart,int,xEnd,int,yEnd)
Fk(BOOL,StretchBlt,HDC,a,short,b,short,c,short,d,short,e,HDC,f,short,g,short,h,short,i,short,j,DWORD,k)
Fk(HWND,CreateWindow,LPSTR,a,LPSTR,b,DWORD,c,short,d,short,e,short,f,short,g,HWND,h,HMENU,i,HANDLE,j,SEGPTR,k)
Fl(HWND,CreateWindowEx,DWORD,a,LPSTR,b,LPSTR,c,DWORD,d,short,e,short,f,short,g,short,h,HWND,i,HMENU,j,HANDLE,k,SEGPTR,l)
Fk(HWND,CreateWindow,SEGPTR,a,SEGPTR,b,DWORD,c,short,d,short,e,short,f,short,g,HWND,h,HMENU,i,HANDLE,j,SEGPTR,k)
Fl(HWND,CreateWindowEx,DWORD,a,SEGPTR,b,SEGPTR,c,DWORD,d,short,e,short,f,short,g,short,h,HWND,i,HMENU,j,HANDLE,k,SEGPTR,l)
Fl(int,SetDIBitsToDevice,HDC,a,short,b,short,c,WORD,d,WORD,e,WORD,f,WORD,g,WORD,h,WORD,i,LPSTR,j,LPBITMAPINFO,k,WORD,l)
Fm(int,StretchDIBits,HDC,a,WORD,b,WORD,c,WORD,d,WORD,e,WORD,f,WORD,g,WORD,h,WORD,i,LPSTR,j,LPBITMAPINFO,k,WORD,l,DWORD,m)
Fn(HFONT,CreateFont,int,a,int,b,int,c,int,d,int,e,BYTE,f,BYTE,g,BYTE,h,BYTE,i,BYTE,j,BYTE,k,BYTE,l,BYTE,m,LPSTR,n)

View File

@ -20,6 +20,7 @@ typedef struct
} DWP;
extern void WINPOS_FindIconPos( HWND hwnd );
extern HWND WINPOS_ChangeActiveWindow( HWND hwnd, BOOL mouseMsg );
extern LONG WINPOS_SendNCCalcSize( HWND hwnd, BOOL calcValidRect,
RECT *newWindowRect, RECT *oldWindowRect,

View File

@ -1,47 +1,19 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
TOPSRC = @top_srcdir@
MODULE = ipc
MODULE = ipc
SRCS = bit_array.c \
dde_atom.c \
dde_mem.c \
dde_proc.c \
generic_hash.c \
shm_block.c \
shm_fragment.c \
shm_main_blk.c \
shm_semaph.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
C_SRCS = \
bit_array.c \
dde_atom.c \
dde_mem.c \
dde_proc.c \
generic_hash.c \
shm_block.c \
shm_fragment.c \
shm_main_blk.c \
shm_semaph.c
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
dummy:
@MAKE_RULES@
### Dependencies:

View File

@ -1,40 +1,19 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
TOPSRC = @top_srcdir@
MODULE = loader
MODULE = loader
SRCS = main.c module.c ne_image.c ne_resource.c pe_image.c \
pe_resource.c signal.c resource.c task.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
C_SRCS = \
main.c \
module.c \
ne_image.c \
ne_resource.c \
pe_image.c \
pe_resource.c \
signal.c \
resource.c \
task.c
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
dummy:
@MAKE_RULES@
### Dependencies:

View File

@ -23,6 +23,7 @@
#include "stddebug.h"
#include "debug.h"
#include "callback.h"
static HMODULE hFirstModule = 0;
static HMODULE hCachedModule = 0; /* Module cached by MODULE_OpenFile */
@ -244,7 +245,43 @@ int MODULE_OpenFile( HMODULE hModule )
name, cachedfd );
return cachedfd;
}
/***********************************************************************
* MODULE_Ne2MemFlags
*/
/* This function translates NE segment flags to GlobalAlloc flags */
static WORD MODULE_Ne2MemFlags(WORD flags)
{
WORD memflags = 0;
#if 0
if (flags & NE_SEGFLAGS_DISCARDABLE)
memflags |= GMEM_DISCARDABLE;
if (flags & NE_SEGFLAGS_MOVEABLE ||
( ! (flags & NE_SEGFLAGS_DATA) &&
! (flags & NE_SEGFLAGS_LOADED) &&
! (flags & NE_SEGFLAGS_ALLOCATED)
)
)
memflags |= GMEM_MOVEABLE;
memflags |= GMEM_ZEROINIT;
#else
memflags = GMEM_ZEROINIT | GMEM_FIXED;
return memflags;
#endif
}
/***********************************************************************
* MODULE_AllocateSegment (WINPROCS.26)
*/
DWORD MODULE_AllocateSegment(WORD wFlags, WORD wSize, WORD wElem)
{
WORD size = wSize << wElem;
WORD hMem = GlobalAlloc( MODULE_Ne2MemFlags(wFlags), size);
WORD selector = HIWORD(GlobalLock(hMem));
return MAKELONG(hMem, selector);
}
/***********************************************************************
* MODULE_CreateSegments
@ -263,7 +300,7 @@ static BOOL MODULE_CreateSegments( HMODULE hModule )
if (i == pModule->ss) minsize += pModule->stack_size;
/* The DGROUP is allocated by MODULE_CreateInstance */
if (i == pModule->dgroup) continue;
pSegment->selector = GLOBAL_Alloc( GMEM_ZEROINIT | GMEM_FIXED,
pSegment->selector = GLOBAL_Alloc( MODULE_Ne2MemFlags(pSegment->flags),
minsize, hModule,
!(pSegment->flags & NE_SEGFLAGS_DATA),
FALSE,
@ -297,7 +334,7 @@ static HINSTANCE MODULE_GetInstance( HMODULE hModule )
/***********************************************************************
* MODULE_CreateInstance
*/
static HINSTANCE MODULE_CreateInstance( HMODULE hModule, LOADPARAMS *params )
HINSTANCE MODULE_CreateInstance( HMODULE hModule, LOADPARAMS *params )
{
SEGTABLEENTRY *pSegment;
NE_MODULE *pModule;
@ -848,6 +885,8 @@ HINSTANCE LoadModule( LPCSTR name, LPVOID paramBlock )
if ((hModule = MODULE_LoadExeHeader( fd, &ofs )) < 32)
{
if(hModule == 21)
return PE_LoadModule(fd,&ofs,paramBlock);
close( fd );
fprintf( stderr, "LoadModule: can't load '%s', error=%d\n",
name, hModule );
@ -908,7 +947,46 @@ HINSTANCE LoadModule( LPCSTR name, LPVOID paramBlock )
/* Load the segments */
for (i = 1; i <= pModule->seg_count; i++) NE_LoadSegment( hModule, i );
if (pModule->flags & NE_FFLAGS_SELFLOAD)
{
/* Handle self loading modules */
SEGTABLEENTRY * pSegTable = (SEGTABLEENTRY *) NE_SEG_TABLE(pModule);
SELFLOADHEADER *selfloadheader;
HMODULE hselfload = GetModuleHandle("WINPROCS");
WORD oldss, oldsp, saved_dgroup = pSegTable[pModule->dgroup - 1].selector;
fprintf (stderr, "Warning: %*.*s is a self-loading module\n"
"Support for self-loading modules is very experimental\n",
*((BYTE*)pModule + pModule->name_table),
*((BYTE*)pModule + pModule->name_table),
(char *)pModule + pModule->name_table + 1);
NE_LoadSegment( hModule, 1 );
selfloadheader = (SELFLOADHEADER *)
PTR_SEG_OFF_TO_LIN(pSegTable->selector, 0);
selfloadheader->EntryAddrProc =
MODULE_GetEntryPoint(hselfload,27);
selfloadheader->MyAlloc = MODULE_GetEntryPoint(hselfload,28);
selfloadheader->SetOwner = MODULE_GetEntryPoint(GetModuleHandle("KERNEL"),403);
pModule->self_loading_sel = GlobalHandleToSel(
GLOBAL_Alloc (GMEM_ZEROINIT,
0xFF00, hModule, FALSE, FALSE, FALSE)
);
oldss = IF1632_Saved16_ss;
oldsp = IF1632_Saved16_sp;
IF1632_Saved16_ss = pModule->self_loading_sel;
IF1632_Saved16_sp = 0xFF00;
CallTo16_word_ww (selfloadheader->BootApp,
pModule->self_loading_sel, hModule, fd);
/* some BootApp procs overwrite the selector of dgroup */
pSegTable[pModule->dgroup - 1].selector = saved_dgroup;
IF1632_Saved16_ss = oldss;
IF1632_Saved16_sp = oldsp;
for (i = 2; i <= pModule->seg_count; i++) NE_LoadSegment( hModule, i );
}
else
{
for (i = 1; i <= pModule->seg_count; i++)
NE_LoadSegment( hModule, i );
}
/* Fixup the functions prologs */

View File

@ -59,7 +59,41 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
lseek( fd, pSeg->filepos << pModule->alignment, SEEK_SET );
size = pSeg->size ? pSeg->size : 0x10000;
mem = GlobalLock(pSeg->selector);
if (!(pSeg->flags & NE_SEGFLAGS_ITERATED))
if (pModule->flags & NE_FFLAGS_SELFLOAD && segnum > 1) {
/* Implement self loading segments */
SELFLOADHEADER *selfloadheader;
WORD oldss, oldsp, oldselector, newselector;
selfloadheader = (SELFLOADHEADER *)
PTR_SEG_OFF_TO_LIN(pSegTable->selector,0);
oldss = IF1632_Saved16_ss;
oldsp = IF1632_Saved16_sp;
oldselector = pSeg->selector;
IF1632_Saved16_ss = pModule->self_loading_sel;
IF1632_Saved16_sp = 0xFF00;
newselector = CallTo16_word_www(selfloadheader->LoadAppSeg,
pModule->self_loading_sel, hModule, fd, segnum);
if (newselector != oldselector) {
/* Self loaders like creating their own selectors;
* they love asking for trouble to Wine developers
*/
if (segnum == pModule->dgroup) {
memcpy(PTR_SEG_OFF_TO_LIN(oldselector,0),
PTR_SEG_OFF_TO_LIN(newselector,0),
pSeg->minsize ? pSeg->minsize : 0x10000);
FreeSelector(newselector);
pSeg->selector = oldselector;
fprintf(stderr, "A new selector was allocated for the dgroup segment\n"
"Old selector is %d, new one is %d", oldselector, newselector);
} else {
FreeSelector(pSeg->selector);
pSeg->selector = newselector;
}
}
IF1632_Saved16_ss = oldss;
IF1632_Saved16_sp = oldsp;
}
else if (!(pSeg->flags & NE_SEGFLAGS_ITERATED))
read(fd, mem, size);
else {
/*
@ -85,6 +119,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
free(buff);
}
pSeg->flags |= NE_SEGFLAGS_LOADED;
if (!(pSeg->flags & NE_SEGFLAGS_RELOC_DATA))
return TRUE; /* No relocation data, we are done */
@ -474,3 +509,15 @@ void NE_InitializeDLLs( HMODULE hModule )
}
NE_InitDLL( hModule );
}
/***********************************************************************
* NE_PatchCodeHandle
*
* Needed for self-loading modules.
*/
/* It does nothing */
void PatchCodeHandle(HANDLE hSel)
{
}

View File

@ -18,6 +18,16 @@
#include "neexe.h"
#include "peexe.h"
#include "pe_image.h"
#include "relay32.h"
#include "module.h"
#include "alias.h"
#include "global.h"
#include "task.h"
#include "ldt.h"
#include "registers.h"
#include "stddebug.h"
#include "debug.h"
#define MAP_ANONYMOUS 0x20
@ -167,6 +177,7 @@ HINSTANCE PE_LoadImage(struct w_files *wpnt)
int i, result;
wpnt->pe = malloc(sizeof(struct pe_data));
memset(wpnt->pe,0,sizeof(struct pe_data));
wpnt->pe->pe_header = malloc(sizeof(struct pe_header_s));
/* read PE header */
@ -225,6 +236,124 @@ HINSTANCE PE_LoadImage(struct w_files *wpnt)
return (wpnt->hinstance);
}
HINSTANCE PE_LoadModule(int fd, OFSTRUCT *ofs, LOADPARAMS* params)
{
struct w_files *wpnt;
int size;
NE_MODULE *pModule;
LOADEDFILEINFO *pFileInfo;
SEGTABLEENTRY *pSegment;
char *pStr;
DWORD cts;
HMODULE hModule;
HINSTANCE hInstance;
ALIAS_UseAliases=1;
wpnt=malloc(sizeof(struct w_files));
wpnt->next=wine_files;
wine_files=wpnt;
wpnt->ofs=*ofs;
wpnt->fd=fd;
wpnt->type=0;
wpnt->hinstance=0;
wpnt->hModule=0;
wpnt->initialised=0;
lseek(fd,0,SEEK_SET);
wpnt->mz_header=malloc(sizeof(struct mz_header_s));
read(fd,wpnt->mz_header,sizeof(struct mz_header_s));
size=sizeof(NE_MODULE) +
/* loaded file info */
sizeof(LOADEDFILEINFO) + strlen(ofs->szPathName) +
/* segment table: DS,CS */
2 * sizeof(SEGTABLEENTRY) +
/* name table */
9 +
/* several empty tables */
8;
hModule = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, size );
wpnt->hModule=hModule;
if (!hModule) return 11; /* invalid exe */
FarSetOwner( hModule, hModule );
pModule = GlobalLock(hModule);
/* Set all used entries */
pModule->magic=NE_SIGNATURE;
pModule->count=1;
pModule->next=0;
pModule->flags=0;
pModule->dgroup=1;
pModule->ss=1;
pModule->cs=2;
/* Who wants to LocalAlloc for a PE Module? */
pModule->heap_size=0x1000;
pModule->stack_size=0xF000;
pModule->seg_count=1;
pModule->modref_count=0;
pModule->nrname_size=0;
pModule->seg_table=sizeof(NE_MODULE)+
sizeof(LOADEDFILEINFO)+strlen(ofs->szPathName);
pModule->fileinfo=sizeof(NE_MODULE);
pModule->os_flags=NE_OSFLAGS_WINDOWS;
pModule->expected_version=0x30A;
pFileInfo=(LOADEDFILEINFO *)(pModule + 1);
pFileInfo->length = sizeof(LOADEDFILEINFO)+strlen(ofs->szPathName)-1;
strcpy(pFileInfo->filename,ofs->szPathName);
pSegment=(SEGTABLEENTRY*)((char*)pFileInfo+pFileInfo->length+1);
pModule->dgroup_entry=(int)pSegment-(int)pModule;
pSegment->size=0;
pSegment->flags=NE_SEGFLAGS_DATA;
pSegment->minsize=0x1000;
pSegment++;
cts=GetWndProcEntry16("Win32CallToStart");
pSegment->selector=cts>>16;
pModule->ip=cts & 0xFFFF;
pSegment++;
pStr=(char*)pSegment;
pModule->name_table=(int)pStr-(int)pModule;
strcpy(pStr,"\x08W32SXXXX");
pStr+=9;
/* All tables zero terminated */
pModule->res_table=pModule->import_table=pModule->entry_table=
(int)pStr-(int)pModule;
PE_LoadImage(wpnt);
pModule->heap_size=0x1000;
pModule->stack_size=0xE000;
/* CreateInstance allocates now 64KB */
hInstance=MODULE_CreateInstance(hModule);
wpnt->hinstance=hInstance;
TASK_CreateTask(hModule,hInstance,0,
params->hEnvironment,(LPSTR)PTR_SEG_TO_LIN(params->cmdLine),
*((WORD*)PTR_SEG_TO_LIN(params->showCmd)+1));
return hInstance;
}
void PE_Win32CallToStart(struct sigcontext_struct context)
{
int fs;
struct w_files *wpnt=wine_files;
fs=GlobalAlloc(GHND,0x10000);
fprintf(stddeb,"Going to start Win32 program\n");
InitTask(context);
USER_InitApp(wpnt->hModule);
__asm__ __volatile__("movw %w0,%%fs"::"r" (fs));
((void(*)())(load_addr+wpnt->pe->pe_header->opt_coff.AddressOfEntryPoint))();
}
int PE_UnloadImage(struct w_files *wpnt)
{
printf("PEunloadImage() called!\n");

View File

@ -1,44 +1,15 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
TOPSRC = @top_srcdir@
MODULE = memory
MODULE = memory
SRCS = \
C_SRCS = \
atom.c \
global.c \
ldt.c \
local.c \
selector.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
dummy:
@MAKE_RULES@
### Dependencies:

View File

@ -825,8 +825,11 @@ WORD LOCAL_Lock( WORD ds, HLOCAL handle )
char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 );
dprintf_local( stddeb, "LocalLock: %04x ", handle );
if (HANDLE_MOVEABLE(handle)) {
handle = *(WORD *)(ptr + handle);
if (HANDLE_MOVEABLE(handle))
{
LOCALHANDLEENTRY *pEntry = (LOCALHANDLEENTRY *)(ptr + handle);
if (pEntry->lock < 255) pEntry->lock++;
handle = pEntry->addr;
}
dprintf_local( stddeb, "returning %04x\n", handle );
return handle;
@ -838,7 +841,18 @@ WORD LOCAL_Lock( WORD ds, HLOCAL handle )
*/
BOOL LOCAL_Unlock( WORD ds, HLOCAL handle )
{
return TRUE;
char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 );
dprintf_local( stddeb, "LocalUnlock: %04x\n", handle );
if (HANDLE_MOVEABLE(handle))
{
LOCALHANDLEENTRY *pEntry = (LOCALHANDLEENTRY *)(ptr + handle);
if (!pEntry->lock || (pEntry->lock == 255)) return FALSE;
/* For moveable block, return the new lock count */
/* (see _Windows_Internals_ p. 197) */
return --pEntry->lock;
}
else return FALSE;
}

View File

@ -309,14 +309,14 @@ WORD SelectorAccessRights( WORD sel, WORD op, WORD val )
if (op == 0) /* get */
{
return 1 /* accessed */ |
(entry.read_only << 1) |
((entry.read_only == 0) << 1) |
(entry.type << 2) |
(entry.seg_32bit << 14) |
(entry.limit_in_pages << 15);
}
else /* set */
{
entry.read_only = val & 2;
entry.read_only = (val & 2 == 0);
entry.type = (val >> 2) & 3;
entry.seg_32bit = val & 0x4000;
entry.limit_in_pages = val & 0x8000;

View File

@ -29,6 +29,7 @@ SRCS = \
spy.c \
stress.c \
user.c \
user32.c \
winsocket.c
OBJS = $(SRCS:.c=.o)

View File

@ -1,49 +1,44 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include -I$(TOPSRC)
LD = @LD@
LANG = @LANG@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
@SET_MAKE@
TOPSRC = @top_srcdir@
MODULE = misc
MODULE = misc
SRCS = clipboard.c comm.c commdlg.c compobj.c dos_fs.c \
driver.c exec.c escape.c file.c keyboard.c kernel32.c lstr.c \
main.c ole2.c ole2disp.c ole2nls.c olecli.c olesvr.c network.c \
profile.c rect.c shell.c sound.c spy.c stress.c user.c \
C_SRCS = \
clipboard.c \
comm.c \
commdlg.c \
compobj.c \
dos_fs.c \
driver.c \
exec.c \
escape.c \
file.c \
keyboard.c \
kernel32.c \
lstr.c \
main.c \
ole2.c \
ole2disp.c \
ole2nls.c \
olecli.c \
olesvr.c \
network.c \
profile.c \
rect.c \
shell.c \
sound.c \
spy.c \
stress.c \
user.c \
user32.c \
winsocket.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) $(LANG) -o $*.o $<
all: checkrc $(MODULE).o
checkrc: dummy
cd $(TOPSRC)/rc; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'LD=$(LD)' 'LDCOMBINEFLAGS=$(LDCOMBINEFLAGS)'
cd $(TOPSRC)/rc; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'DEFS=$(DEFS)' 'LANG=$(LANG)'
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
langclean::
$(RM) ole2nls.o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
rm -f ole2nls.o shell.o commdlg.o
dummy:
@MAKE_RULES@
### Dependencies:

View File

@ -7,9 +7,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "dialog.h"
#include "win.h"
#include "user.h"
#include "global.h"
#include "message.h"
#include "commdlg.h"
#include "dlgs.h"
@ -18,9 +18,6 @@
#include "dos_fs.h"
#include "stackframe.h"
#define OPENFILEDLG2 11
#define SAVEFILEDLG2 12
static DWORD CommDlgLastError = 0;
static HBITMAP hFolder = 0;
@ -54,106 +51,98 @@ static BOOL FileDlg_Init()
}
/***********************************************************************
* GetOpenFileName [COMMDLG.1]
* GetOpenFileName (COMMDLG.1)
*/
BOOL GetOpenFileName(LPOPENFILENAME lpofn)
{
HANDLE hDlgTmpl;
HANDLE hResInfo;
HINSTANCE hInst;
BOOL bRet;
LPCSTR dlgTemplate;
HINSTANCE hInst;
HANDLE hDlgTmpl, hResInfo;
BOOL bRet;
if (lpofn == NULL)
return FALSE;
if (!FileDlg_Init())
return FALSE;
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
if (!lpofn || !FileDlg_Init()) return FALSE;
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE) hDlgTmpl = lpofn->hInstance;
else if (lpofn->Flags & OFN_ENABLETEMPLATE)
{
dlgTemplate = GlobalLock(lpofn->hInstance);
if (!dlgTemplate)
{
CommDlgLastError = CDERR_LOADRESFAILURE;
return FALSE;
}
if (!(hResInfo = FindResource( lpofn->hInstance,
lpofn->lpTemplateName, RT_DIALOG)))
{
CommDlgLastError = CDERR_FINDRESFAILURE;
return FALSE;
}
hDlgTmpl = LoadResource( lpofn->hInstance, hResInfo );
}
else
else hDlgTmpl = GLOBAL_CreateBlock( GMEM_FIXED,
sysres_DIALOG_OPEN_FILE.bytes,
sysres_DIALOG_OPEN_FILE.size,
GetCurrentPDB(), FALSE, FALSE,
TRUE, NULL );
if (!hDlgTmpl)
{
if (lpofn->Flags & OFN_ENABLETEMPLATE)
{
hInst = lpofn->hInstance;
hResInfo = FindResource(hInst, lpofn->lpTemplateName, RT_DIALOG);
if (hResInfo == 0)
{
CommDlgLastError = CDERR_FINDRESFAILURE;
return FALSE;
}
hDlgTmpl = LoadResource(hInst, hResInfo);
if (hDlgTmpl == 0)
{
CommDlgLastError = CDERR_LOADRESFAILURE;
return FALSE;
}
dlgTemplate = GlobalLock(hDlgTmpl);
}
else
dlgTemplate = sysres_DIALOG_3;
CommDlgLastError = CDERR_LOADRESFAILURE;
return FALSE;
}
hInst = GetWindowWord(lpofn->hwndOwner, GWW_HINSTANCE);
bRet = DialogBoxIndirectParamPtr(hInst, dlgTemplate, lpofn->hwndOwner,
GetWndProcEntry16("FileOpenDlgProc"),
(DWORD)lpofn);
printf("GetOpenFileName // return lpstrFile='%s' !\n",
(LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFile));
return bRet;
hInst = GetWindowWord( lpofn->hwndOwner, GWW_HINSTANCE );
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpofn->hwndOwner,
GetWndProcEntry16("FileOpenDlgProc"),
(DWORD)lpofn );
if (!(lpofn->Flags & OFN_ENABLETEMPLATEHANDLE))
{
if (lpofn->Flags & OFN_ENABLETEMPLATE) FreeResource( hDlgTmpl );
else GLOBAL_FreeBlock( hDlgTmpl );
}
printf("GetOpenFileName // return lpstrFile='%s' !\n",
(LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFile));
return bRet;
}
/***********************************************************************
* GetSaveFileName [COMMDLG.2]
* GetSaveFileName (COMMDLG.2)
*/
BOOL GetSaveFileName(LPOPENFILENAME lpofn)
{
HANDLE hDlgTmpl;
HANDLE hResInfo;
HINSTANCE hInst;
BOOL bRet;
LPCSTR dlgTemplate;
HINSTANCE hInst;
HANDLE hDlgTmpl, hResInfo;
BOOL bRet;
if (!FileDlg_Init()) return FALSE;
if (!lpofn || !FileDlg_Init()) return FALSE;
if (lpofn == NULL) return FALSE;
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE) {
dlgTemplate = GlobalLock(lpofn->hInstance);
if (!dlgTemplate) {
CommDlgLastError = CDERR_LOADRESFAILURE;
return FALSE;
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE) hDlgTmpl = lpofn->hInstance;
else if (lpofn->Flags & OFN_ENABLETEMPLATE)
{
hInst = lpofn->hInstance;
if (!(hResInfo = FindResource( lpofn->hInstance,
lpofn->lpTemplateName, RT_DIALOG )))
{
CommDlgLastError = CDERR_FINDRESFAILURE;
return FALSE;
}
hDlgTmpl = LoadResource( lpofn->hInstance, hResInfo );
}
} else {
if (lpofn->Flags & OFN_ENABLETEMPLATE) {
hInst = lpofn->hInstance;
hResInfo = FindResource(hInst, lpofn->lpTemplateName, RT_DIALOG);
if (hResInfo == 0) {
CommDlgLastError = CDERR_FINDRESFAILURE;
return FALSE;
}
hDlgTmpl = LoadResource(hInst, hResInfo);
if (hDlgTmpl == 0) {
CommDlgLastError = CDERR_LOADRESFAILURE;
return FALSE;
}
dlgTemplate = GlobalLock(hDlgTmpl);
} else {
dlgTemplate = sysres_DIALOG_4; /* SAVEFILEDIALOG */
else hDlgTmpl = GLOBAL_CreateBlock( GMEM_FIXED,
sysres_DIALOG_SAVE_FILE.bytes,
sysres_DIALOG_SAVE_FILE.size,
GetCurrentPDB(), FALSE, FALSE,
TRUE, NULL );
hInst = GetWindowWord( lpofn->hwndOwner, GWW_HINSTANCE );
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpofn->hwndOwner,
GetWndProcEntry16("FileSaveDlgProc"),
(DWORD)lpofn);
if (!(lpofn->Flags & OFN_ENABLETEMPLATEHANDLE))
{
if (lpofn->Flags & OFN_ENABLETEMPLATE) FreeResource( hDlgTmpl );
else GLOBAL_FreeBlock( hDlgTmpl );
}
}
hInst = GetWindowWord(lpofn->hwndOwner, GWW_HINSTANCE);
bRet = DialogBoxIndirectParamPtr(hInst, dlgTemplate, lpofn->hwndOwner,
GetWndProcEntry16("FileSaveDlgProc"),
(DWORD)lpofn);
printf("GetSaveFileName // return lpstrFile='%s' !\n",
(LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFile));
return bRet;
printf( "GetSaveFileName // return lpstrFile='%s' !\n",
(LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFile));
return bRet;
}
/***********************************************************************
@ -328,13 +317,16 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WORD wParam, LONG lParam)
if (lpofn->lpstrCustomFilter)
{
pstr = (LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrCustomFilter);
printf("lpstrCustomFilter = %p\n", pstr);
while(*pstr)
{
n = strlen(pstr);
strcpy(tmpstr, pstr);
printf("lpstrCustomFilter // add tmpstr='%s' ", tmpstr);
SendDlgItemMessage(hWnd, cmb1, CB_ADDSTRING, 0, MAKE_SEGPTR(tmpstr));
pstr += n + 1;
n = strlen(pstr);
printf("associated to '%s'\n", pstr);
pstr += n + 1;
}
}
@ -344,15 +336,21 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WORD wParam, LONG lParam)
{
n = strlen(pstr);
strcpy(tmpstr, pstr);
printf("lpstrFilter // add tmpstr='%s' ", tmpstr);
SendDlgItemMessage(hWnd, cmb1, CB_ADDSTRING, 0, MAKE_SEGPTR(tmpstr));
pstr += n + 1;
n = strlen(pstr);
printf("associated to '%s'\n", pstr);
pstr += n + 1;
}
/* set default filter */
SendDlgItemMessage(hWnd, cmb1, CB_SETCURSEL, 0, 0);
if (lpofn->nFilterIndex == 0 && lpofn->lpstrCustomFilter == (SEGPTR)NULL)
lpofn->nFilterIndex = 1;
SendDlgItemMessage(hWnd, cmb1, CB_SETCURSEL, lpofn->nFilterIndex - 1, 0);
strcpy(tmpstr, FILEDLG_GetFileType(PTR_SEG_TO_LIN(lpofn->lpstrCustomFilter),
PTR_SEG_TO_LIN(lpofn->lpstrFilter), 0));
PTR_SEG_TO_LIN(lpofn->lpstrFilter), lpofn->nFilterIndex - 1));
printf("nFilterIndex = %ld // SetText of edt1 to '%s'\n",
lpofn->nFilterIndex, tmpstr);
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, MAKE_SEGPTR(tmpstr));
/* get drive list */
*tmpstr = 0;
@ -371,7 +369,7 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WORD wParam, LONG lParam)
fprintf(stderr, "FileDlg: couldn't read initial directory %s!\n", tmpstr);
/* select current drive in combo 2 */
n = DOS_GetDefaultDrive();
SendDlgItemMessage(hWnd, cmb2, CB_SETCURSEL, n - 1, 0);
SendDlgItemMessage(hWnd, cmb2, CB_SETCURSEL, n, 0);
if (!(lpofn->Flags & OFN_SHOWHELP))
ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE);
if (lpofn->Flags & OFN_HIDEREADONLY)
@ -478,6 +476,8 @@ static LONG FILEDLG_WMCommand(HWND hWnd, WORD wParam, LONG lParam)
strcat(tmpstr, "\\");
lRet = SendDlgItemMessage(hWnd, cmb1, CB_GETCURSEL, 0, 0);
if (lRet == LB_ERR) return TRUE;
lpofn->nFilterIndex = lRet + 1;
printf("commdlg: lpofn->nFilterIndex=%ld\n", lpofn->nFilterIndex);
strcpy(tmpstr2,
FILEDLG_GetFileType(PTR_SEG_TO_LIN(lpofn->lpstrCustomFilter),
PTR_SEG_TO_LIN(lpofn->lpstrFilter),
@ -530,10 +530,10 @@ static LONG FILEDLG_WMCommand(HWND hWnd, WORD wParam, LONG lParam)
return FALSE;
}
/***********************************************************************
* FileOpenDlgProc [COMMDLG.6]
*/
/***********************************************************************
* FileOpenDlgProc (COMMDLG.6)
*/
BOOL FileOpenDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
{
switch (wMsg)
@ -566,7 +566,7 @@ BOOL FileOpenDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
/***********************************************************************
* FileSaveDlgProc [COMMDLG.7]
* FileSaveDlgProc (COMMDLG.7)
*/
BOOL FileSaveDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
{
@ -604,22 +604,27 @@ BOOL FileSaveDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
/***********************************************************************
* ChooseColor [COMMDLG.5]
* ChooseColor (COMMDLG.5)
*/
BOOL ChooseColor(LPCHOOSECOLOR lpChCol)
{
WND *wndPtr;
BOOL bRet;
wndPtr = WIN_FindWndPtr(lpChCol->hwndOwner);
bRet = DialogBoxIndirectParamPtr(wndPtr->hInstance, sysres_DIALOG_8,
lpChCol->hwndOwner, GetWndProcEntry16("ColorDlgProc"),
(DWORD)lpChCol);
return bRet;
HANDLE hInst, hDlgTmpl;
BOOL bRet;
hDlgTmpl = GLOBAL_CreateBlock(GMEM_FIXED, sysres_DIALOG_CHOOSE_COLOR.bytes,
sysres_DIALOG_CHOOSE_COLOR.size,
GetCurrentPDB(), FALSE, FALSE, TRUE, NULL );
hInst = GetWindowWord( lpChCol->hwndOwner, GWW_HINSTANCE );
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpChCol->hwndOwner,
GetWndProcEntry16("ColorDlgProc"),
(DWORD)lpChCol );
GLOBAL_FreeBlock( hDlgTmpl );
return bRet;
}
/***********************************************************************
* ColorDlgProc [COMMDLG.8]
* ColorDlgProc (COMMDLG.8)
*/
BOOL ColorDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
{
@ -646,43 +651,47 @@ BOOL ColorDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
/***********************************************************************
* FindTextDlg [COMMDLG.11]
* FindTextDlg (COMMDLG.11)
*/
BOOL FindText(LPFINDREPLACE lpFind)
{
WND *wndPtr;
BOOL bRet;
LPCSTR lpTemplate;
lpTemplate = sysres_DIALOG_9;
wndPtr = WIN_FindWndPtr(lpFind->hwndOwner);
bRet = DialogBoxIndirectParamPtr(wndPtr->hInstance, lpTemplate,
lpFind->hwndOwner, GetWndProcEntry16("FindTextDlgProc"),
(DWORD)lpFind);
return bRet;
HANDLE hInst, hDlgTmpl;
BOOL bRet;
hDlgTmpl = GLOBAL_CreateBlock(GMEM_FIXED, sysres_DIALOG_FIND_TEXT.bytes,
sysres_DIALOG_FIND_TEXT.size,
GetCurrentPDB(), FALSE, FALSE, TRUE, NULL );
hInst = GetWindowWord( lpFind->hwndOwner, GWW_HINSTANCE );
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpFind->hwndOwner,
GetWndProcEntry16("FindTextDlgProc"),
(DWORD)lpFind );
GLOBAL_FreeBlock( hDlgTmpl );
return bRet;
}
/***********************************************************************
* ReplaceTextDlg [COMMDLG.12]
* ReplaceTextDlg (COMMDLG.12)
*/
BOOL ReplaceText(LPFINDREPLACE lpFind)
{
WND *wndPtr;
BOOL bRet;
LPCSTR lpTemplate;
HANDLE hInst, hDlgTmpl;
BOOL bRet;
lpTemplate = sysres_DIALOG_10;
wndPtr = WIN_FindWndPtr(lpFind->hwndOwner);
bRet = DialogBoxIndirectParamPtr(wndPtr->hInstance, lpTemplate,
lpFind->hwndOwner, GetWndProcEntry16("ReplaceTextDlgProc"),
(DWORD)lpFind);
return bRet;
hDlgTmpl = GLOBAL_CreateBlock(GMEM_FIXED, sysres_DIALOG_REPLACE_TEXT.bytes,
sysres_DIALOG_REPLACE_TEXT.size,
GetCurrentPDB(), FALSE, FALSE, TRUE, NULL );
hInst = GetWindowWord( lpFind->hwndOwner, GWW_HINSTANCE );
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpFind->hwndOwner,
GetWndProcEntry16("ReplaceTextDlgProc"),
(DWORD)lpFind );
GLOBAL_FreeBlock( hDlgTmpl );
return bRet;
}
/***********************************************************************
* FindTextDlgProc [COMMDLG.13]
* FindTextDlgProc (COMMDLG.13)
*/
BOOL FindTextDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
{
@ -709,7 +718,7 @@ BOOL FindTextDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
/***********************************************************************
* ReplaceTextDlgProc [COMMDLG.14]
* ReplaceTextDlgProc (COMMDLG.14)
*/
BOOL ReplaceTextDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
{
@ -736,35 +745,40 @@ BOOL ReplaceTextDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
/***********************************************************************
* PrintDlg [COMMDLG.20]
* PrintDlg (COMMDLG.20)
*/
BOOL PrintDlg(LPPRINTDLG lpPrint)
{
WND *wndPtr;
BOOL bRet;
LPCSTR lpTemplate;
printf("PrintDlg(%p) // Flags=%08lX\n", lpPrint, lpPrint->Flags);
if (lpPrint->Flags & PD_PRINTSETUP) {
lpTemplate = sysres_DIALOG_6;
} else {
lpTemplate = sysres_DIALOG_5;
}
wndPtr = WIN_FindWndPtr(lpPrint->hwndOwner);
if (lpPrint->Flags & PD_PRINTSETUP)
bRet = DialogBoxIndirectParamPtr(wndPtr->hInstance, lpTemplate,
lpPrint->hwndOwner, GetWndProcEntry16("PrintSetupDlgProc"),
(DWORD)lpPrint);
else
bRet = DialogBoxIndirectParamPtr(wndPtr->hInstance, lpTemplate,
lpPrint->hwndOwner, GetWndProcEntry16("PrintDlgProc"),
(DWORD)lpPrint);
return bRet;
HANDLE hInst, hDlgTmpl;
BOOL bRet;
printf("PrintDlg(%p) // Flags=%08lX\n", lpPrint, lpPrint->Flags );
if (lpPrint->Flags & PD_PRINTSETUP)
hDlgTmpl = GLOBAL_CreateBlock( GMEM_FIXED,
sysres_DIALOG_PRINT_SETUP.bytes,
sysres_DIALOG_PRINT_SETUP.size,
GetCurrentPDB(), FALSE,
FALSE, TRUE, NULL );
else
hDlgTmpl = GLOBAL_CreateBlock( GMEM_FIXED, sysres_DIALOG_PRINT.bytes,
sysres_DIALOG_PRINT.size,
GetCurrentPDB(), FALSE,
FALSE, TRUE, NULL );
hInst = GetWindowWord( lpPrint->hwndOwner, GWW_HINSTANCE );
bRet = DialogBoxIndirectParam( hInst, hDlgTmpl, lpPrint->hwndOwner,
(lpPrint->Flags & PD_PRINTSETUP) ?
GetWndProcEntry16("PrintSetupDlgProc") :
GetWndProcEntry16("PrintDlgProc"),
(DWORD)lpPrint );
GLOBAL_FreeBlock( hDlgTmpl );
return bRet;
}
/***********************************************************************
* PrintDlgProc [COMMDLG.21]
* PrintDlgProc (COMMDLG.21)
*/
BOOL PrintDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
{
@ -791,7 +805,7 @@ BOOL PrintDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
/***********************************************************************
* PrintSetupDlgProc [COMMDLG.22]
* PrintSetupDlgProc (COMMDLG.22)
*/
BOOL PrintSetupDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
{
@ -817,7 +831,7 @@ BOOL PrintSetupDlgProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
/***********************************************************************
* CommDlgExtendError [COMMDLG.26]
* CommDlgExtendError (COMMDLG.26)
*/
DWORD CommDlgExtendError(void)
{
@ -826,7 +840,7 @@ DWORD CommDlgExtendError(void)
/***********************************************************************
* GetFileTitle [COMMDLG.27]
* GetFileTitle (COMMDLG.27)
*/
int GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT cbBuf)
{

View File

@ -29,12 +29,16 @@
#include "windows.h"
#include "msdos.h"
#include "dos_fs.h"
#include "autoconf.h"
#include "comm.h"
#include "task.h"
#include "stddebug.h"
#include "debug.h"
#ifndef WINE_INI_GLOBAL
/* Get the WINE_INI_GLOBAL definition from autoconf.h */
#include "autoconf.h"
#endif
#define WINE_INI_USER "~/.winerc"
#define MAX_DOS_DRIVES 26

View File

@ -276,18 +276,15 @@ INT OpenFile (LPSTR lpFileName, LPOFSTRUCT ofs, WORD wStyle)
*((WORD*)(&ofs->reserved[0]))=
((now->tm_year * 0x200) + (now->tm_mon * 0x20) + now->tm_mday);
if (action & OF_VERIFY)
return (verify_time != *((int*)ofs->reserved));
if (action & OF_EXIST)
return 0;
if ((handle = _lopen( ofs->szPathName, wStyle )) == -1)
{
ofs->nErrCode = 2; /* not found */
return -1;
}
if (action & OF_EXIST) close(handle);
return handle;
}

View File

@ -28,17 +28,20 @@
#include "stddebug.h"
#include "debug.h"
const char people[] = "Wine is available thanks to the work of "\
"Bob Amstadt, Dag Asheim, Martin Ayotte, Ross Biro, Erik Bos, Fons Botman, "\
"John Brezak, Andrew Bulhak, John Burton, Paul Falstad, Olaf Flebbe, "\
"Peter Galbavy, Cameron Heide, Jeffrey Hsu, Miguel de Icaza, "\
"Alexandre Julliard, Jon Konrath, Scott A. Laird, Martin von Loewis, "\
"Kenneth MacDonald, Peter MacDonald, William Magro, David Metcalfe, "\
"Michael Patra, John Richardson, Johannes Ruscheinski, Thomas Sandford, "\
"Constantine Sapuntzakis, Bernd Schmidt, Yngvi Sigurjonsson, Rick Sladkey, "\
"William Smith, Erik Svendsen, Goran Thyni, Jimmy Tirtawangsa, Jon Tombs, "\
"Linus Torvalds, Michael Veksler, Carl Williams, Karl Guenter Wuensch, "\
"Eric Youngdale, and James Youngman.";
const char people[] = "Wine is available thanks to the work of "
"Bob Amstadt, Dag Asheim, Martin Ayotte, Ross Biro, Erik Bos, "
"Fons Botman, John Brezak, Andrew Bulhak, John Burton, Paul Falstad, "
"Olaf Flebbe, Peter Galbavy, Ramon Garcia, Hans de Graaf, "
"Charles M. Hannum, Cameron Heide, Jochen Hoenicke, Jeffrey Hsu, "
"Miguel de Icaza, Alexandre Julliard, Jon Konrath, Scott A. Laird, "
"Martin von Loewis, Kenneth MacDonald, Peter MacDonald, William Magro, "
"Marcus Meissner, Graham Menhennitt, David Metcalfe, Michael Patra, "
"John Richardson, Johannes Ruscheinski, Thomas Sandford, "
"Constantine Sapuntzakis, Daniel Schepler, Bernd Schmidt, "
"Yngvi Sigurjonsson, Rick Sladkey, William Smith, Erik Svendsen, "
"Goran Thyni, Jimmy Tirtawangsa, Jon Tombs, Linus Torvalds, "
"Gregory Trubetskoy, Michael Veksler, Morten Welinder, Jan Willamowius, "
"Carl Williams, Karl Guenter Wuensch, Eric Youngdale, and James Youngman.";
#define WINE_CLASS "Wine" /* Class name for resources */
@ -64,6 +67,7 @@ struct options Options =
NULL, /* desktopGeometry */
NULL, /* programName */
FALSE, /* usePrivateMap */
FALSE, /* useFixedMap */
FALSE, /* synchronous */
FALSE, /* backing store */
SW_SHOWNORMAL, /* cmdShow */
@ -84,6 +88,7 @@ static XrmOptionDescRec optionsTable[] =
{ "-ipc", ".ipc", XrmoptionNoArg, (caddr_t)"off"},
{ "-name", ".name", XrmoptionSepArg, (caddr_t)NULL },
{ "-privatemap", ".privatemap", XrmoptionNoArg, (caddr_t)"on" },
{ "-fixedmap", ".fixedmap", XrmoptionNoArg, (caddr_t)NULL },
{ "-synchronous", ".synchronous", XrmoptionNoArg, (caddr_t)"on" },
{ "-debug", ".debug", XrmoptionNoArg, (caddr_t)"on" },
{ "-debugmsg", ".debugmsg", XrmoptionSepArg, (caddr_t)NULL },
@ -106,6 +111,7 @@ static XrmOptionDescRec optionsTable[] =
" -debug Enter debugger before starting application\n" \
" -name name Set the application name\n" \
" -privatemap Use a private color map\n" \
" -fixedmap Use a \"standard\" color map\n" \
" -synchronous Turn on synchronous display mode\n" \
" -backingstore Turn on backing store\n" \
" -spy file Obsolete. Use -debugmsg +spy for Spy messages\n" \
@ -302,6 +308,8 @@ static void MAIN_ParseOptions( int *argc, char *argv[] )
Options.cmdShow = SW_SHOWMINIMIZED;
if (MAIN_GetResource( db, ".privatemap", &value ))
Options.usePrivateMap = TRUE;
if (MAIN_GetResource( db, ".fixedmap", &value ))
Options.useFixedMap = TRUE;
if (MAIN_GetResource( db, ".synchronous", &value ))
Options.synchronous = TRUE;
if (MAIN_GetResource( db, ".backingstore", &value ))

View File

@ -215,7 +215,7 @@ int WNetBrowseDialog(HWND hParent,WORD nType,LPSTR szPath)
*/
UINT WNetGetUser(LPSTR lpLocalName, LPSTR lpUserName, DWORD *lpSize)
{
printf("EMPTY STUB !!! WNetGetUser('%s', %p, %p);\n",
printf("EMPTY STUB !!! WNetGetUser(%p, %p, %p);\n",
lpLocalName, lpUserName, lpSize);
return WN_NET_ERROR;
}

View File

@ -24,6 +24,8 @@ DWORD WINAPI GetUserDefaultLCID()
return 9;
#elif #LANG(De)
return 7;
#elif #LANG(Es)
return 7; /* Just a Guess :-) */
#elif #LANG(No)
return 0x14;
#else

View File

@ -8,11 +8,13 @@
#include <ctype.h>
#include "windows.h"
#include "shell.h"
#include "global.h"
#include "neexe.h"
#include "selectors.h"
#include "alias.h"
#include "relay32.h"
#include "../rc/sysres.h"
#include "dlgs.h"
#include "dialog.h"
#include "stddebug.h"
#include "debug.h"
@ -477,23 +479,39 @@ INT AboutDlgProc(HWND hWnd, WORD msg, WORD wParam, LONG lParam)
*/
INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon)
{
if (szApp) {
strcpy(AppName, szApp);
} else {
*AppName = 0;
}
if (szOtherStuff) {
strcpy(AppMisc, szOtherStuff);
} else {
*AppMisc = 0;
}
if (!hIcon) {
hIcon = LoadIcon(0,MAKEINTRESOURCE(OIC_WINEICON));
}
return DialogBoxIndirectParamPtr(GetWindowWord(hWnd, GWW_HINSTANCE),
sysres_DIALOG_SHELL_ABOUT_MSGBOX,
hWnd, GetWndProcEntry16("AboutDlgProc"),
hIcon);
HANDLE handle;
BOOL bRet;
DWORD WineProc,Win16Proc,Win32Proc;
static int initialized=0;
if (szApp) strcpy(AppName, szApp);
else *AppName = 0;
if (szOtherStuff) strcpy(AppMisc, szOtherStuff);
else *AppMisc = 0;
if (!hIcon) hIcon = LoadIcon(0,MAKEINTRESOURCE(OIC_WINEICON));
if(!initialized)
{
WineProc=(DWORD)AboutDlgProc;
Win16Proc=(DWORD)GetWndProcEntry16("AboutDlgProc");
Win32Proc=(DWORD)RELAY32_GetEntryPoint("WINPROCS32","AboutDlgProc",0);
ALIAS_RegisterAlias(WineProc,Win16Proc,Win32Proc);
initialized=1;
}
handle = GLOBAL_CreateBlock( GMEM_FIXED,
sysres_DIALOG_SHELL_ABOUT_MSGBOX.bytes,
sysres_DIALOG_SHELL_ABOUT_MSGBOX.size,
GetCurrentPDB(), FALSE, FALSE,
TRUE, NULL );
if (!handle) return FALSE;
bRet = DialogBoxIndirectParam( GetWindowWord( hWnd, GWW_HINSTANCE ),
handle, hWnd,
GetWndProcEntry16("AboutDlgProc"), hIcon );
GLOBAL_FreeBlock( handle );
return bRet;
}
/*************************************************************************

160
misc/user32.c 100644
View File

@ -0,0 +1,160 @@
/*
* Win32 user functions
*
* Copyright 1995 Martin von Loewis
*/
/* This file contains only wrappers to existing Wine functions or trivial
stubs. 'Real' implementations go into context specific files */
#include <unistd.h>
#include "windows.h"
#include "winerror.h"
#include "relay32.h"
#include "alias.h"
#include "stackframe.h"
/* Structure copy functions */
static void MSG16to32(MSG *msg16,struct WIN32_MSG *msg32)
{
msg32->hwnd=msg16->hwnd;
msg32->message=msg16->message;
msg32->wParam=msg16->wParam;
msg32->lParam=msg16->lParam;
msg32->time=msg16->time;
msg32->pt.x=msg16->pt.x;
msg32->pt.y=msg16->pt.y;
}
static void MSG32to16(struct WIN32_MSG *msg32,MSG *msg16)
{
msg16->hwnd=msg32->hwnd;
msg16->message=msg32->message;
msg16->wParam=msg32->wParam;
msg16->lParam=msg32->lParam;
msg16->time=msg32->time;
msg16->pt.x=msg32->pt.x;
msg16->pt.y=msg32->pt.y;
}
/***********************************************************************
* RegisterClassA (USER32.426)
*/
ATOM USER32_RegisterClassA(WNDCLASSA* wndclass)
{
WNDCLASS copy;
char *s1,*s2;
copy.style=wndclass->style;
ALIAS_RegisterAlias(0,0,wndclass->lpfnWndProc);
copy.lpfnWndProc=wndclass->lpfnWndProc;
copy.cbClsExtra=wndclass->cbClsExtra;
copy.cbWndExtra=wndclass->cbWndExtra;
copy.hInstance=wndclass->hInstance;
copy.hIcon=wndclass->hIcon;
copy.hCursor=wndclass->hCursor;
copy.hbrBackground=wndclass->hbrBackground;
if(wndclass->lpszMenuName)
{
s1=alloca(strlen(wndclass->lpszMenuName)+1);
strcpy(s1,wndclass->lpszMenuName);
copy.lpszMenuName=MAKE_SEGPTR(s1);
}else
copy.lpszMenuName=0;
if(wndclass->lpszClassName)
{
s2=alloca(strlen(wndclass->lpszClassName)+1);
strcpy(s2,wndclass->lpszClassName);
copy.lpszClassName=MAKE_SEGPTR(s2);
}
return RegisterClass(&copy);
}
/***********************************************************************
* DefWindowProcA (USER32.125)
*/
LRESULT USER32_DefWindowProcA(DWORD hwnd,DWORD msg,DWORD wParam,DWORD lParam)
{
/* some messages certainly need special casing. We come to that later */
return DefWindowProc(hwnd,msg,wParam,lParam);
}
/***********************************************************************
* GetMessageA (USER32.269)
*/
BOOL USER32_GetMessageA(struct WIN32_MSG* lpmsg,DWORD hwnd,DWORD min,DWORD max)
{
BOOL ret;
MSG msg;
ret=GetMessage(MAKE_SEGPTR(&msg),hwnd,min,max);
MSG16to32(&msg,lpmsg);
return ret;
}
/***********************************************************************
* BeginPaint (USER32.9)
*/
HDC USER32_BeginPaint(DWORD hwnd,struct WIN32_PAINTSTRUCT *lpps)
{
PAINTSTRUCT ps;
HDC ret;
ret=BeginPaint(hwnd,&ps);
lpps->hdc=ps.hdc;
lpps->fErase=ps.fErase;
lpps->rcPaint.top=ps.rcPaint.top;
lpps->rcPaint.left=ps.rcPaint.left;
lpps->rcPaint.right=ps.rcPaint.right;
lpps->rcPaint.bottom=ps.rcPaint.bottom;
lpps->fRestore=ps.fRestore;
lpps->fIncUpdate=ps.fIncUpdate;
return ret;
}
/***********************************************************************
* EndPaint (USER32.175)
*/
BOOL USER32_EndPaint(DWORD hwnd,struct WIN32_PAINTSTRUCT *lpps)
{
PAINTSTRUCT ps;
ps.hdc=lpps->hdc;
ps.fErase=lpps->fErase;
ps.rcPaint.top=lpps->rcPaint.top;
ps.rcPaint.left=lpps->rcPaint.left;
ps.rcPaint.right=lpps->rcPaint.right;
ps.rcPaint.bottom=lpps->rcPaint.bottom;
ps.fRestore=lpps->fRestore;
ps.fIncUpdate=lpps->fIncUpdate;
EndPaint(hwnd,&ps);
return TRUE;
}
/***********************************************************************
* DispatchMessageA (USER32.140)
*/
LONG USER32_DispatchMessageA(struct WIN32_MSG* lpmsg)
{
MSG msg;
LONG ret;
MSG32to16(lpmsg,&msg);
ret=DispatchMessage(&msg);
MSG16to32(&msg,lpmsg);
return ret;
}
/***********************************************************************
* CreateWindowExA (USER32.82)
*/
DWORD USER32_CreateWindowExA(long flags,char* class,char *title,
long style,int x,int y,int width,int height,DWORD parent,DWORD menu,
DWORD instance,DWORD param)
{
char *classbuf, *titlebuf;
/*Have to translate CW_USEDEFAULT */
if(x==0x80000000)x=CW_USEDEFAULT;
if(width==0x80000000)width=CW_USEDEFAULT;
classbuf = alloca( strlen(class)+1 );
strcpy( classbuf, class );
titlebuf = alloca( strlen(title)+1 );
strcpy( titlebuf, title );
return CreateWindowEx( flags, MAKE_SEGPTR(classbuf), MAKE_SEGPTR(titlebuf),
style,x,y,width,height,parent,menu,instance,param );
}

View File

@ -1,15 +1,7 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
TOPSRC = @top_srcdir@
MODULE = miscemu
MODULE = miscemu
SRCS = \
C_SRCS = \
dosmem.c \
dpmi.c \
emulate.c \
@ -26,29 +18,8 @@ SRCS = \
interrupts.c \
ioports.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
dummy:
@MAKE_RULES@
### Dependencies:

View File

@ -7,6 +7,7 @@
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "windows.h"
#include "global.h"
#include "ldt.h"
@ -137,7 +138,7 @@ BOOL DOSMEM_Init(void)
static void DOSMEM_Alarm(void)
{
pBiosData->Ticks = INT1A_GetTicksSinceMidnight();
printf( "Ticks = %d\n", pBiosData->Ticks );
printf( "Ticks = %ld\n", pBiosData->Ticks );
/*
signal( SIGALRM, DOSMEM_Alarm );
alarm( 1 );

View File

@ -303,8 +303,9 @@ static void ReadFile(struct sigcontext_struct *context)
return;
} else {
size = read(BX_reg(context), ptr, CX_reg(context));
dprintf_int(stddeb, "int21: read (%d, void *, 0x%x) = 0x%x\n",
BX_reg(context), CX_reg(context), size);
dprintf_int(stddeb,"int21: read(%d, %04x:%04x, 0x%x) = 0x%x\n",
BX_reg(context), DS_reg(context), DX_reg(context),
CX_reg(context), size );
if (size == -1) {
errno_to_doserr();
AX_reg(context) = ExtendedError;
@ -622,7 +623,7 @@ static void CloseFile(struct sigcontext_struct *context)
{
dprintf_int (stddeb, "int21: close (%d)\n", BX_reg(context));
if (close(BX_reg(context)) == -1)
if (_lclose( BX_reg(context) ))
{
errno_to_doserr();
AX_reg(context) = ExtendedError;
@ -1761,6 +1762,9 @@ void DOS3Call( struct sigcontext_struct context )
break;
}
break;
case 0xdc: /* CONNECTION SERVICES - GET CONNECTION NUMBER */
break;
case 0xea: /* NOVELL NETWARE - RETURN SHELL VERSION */
break;

View File

@ -44,7 +44,7 @@ static void do_int2f_16(struct sigcontext_struct *context)
case 0x00: /* Windows enhanced mode installation check */
AX_reg(context) = Options.enhanced ? WINVERSION : 0;
break;
case 0x0a: /* Get Windows version and type */
AX_reg(context) = 0;
BX_reg(context) = (WINVERSION >> 8) | ((WINVERSION << 8) & 0xff00);
@ -54,6 +54,15 @@ static void do_int2f_16(struct sigcontext_struct *context)
case 0x80: /* Release time-slice */
break; /* nothing to do */
case 0x84: /* Get device API entry point */
fprintf(stderr,"Application attempted to access VxD %4X\n",
BX_reg(context));
fprintf(stderr,"This device is not known to Wine.");
fprintf(stderr,"Expect a failure now\n");
ES_reg(context)=0;
DI_reg(context)=0;
break;
case 0x86: /* DPMI detect mode */
AX_reg(context) = 0; /* Running under DPMI */
break;

View File

@ -1,15 +1,7 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
TOPSRC = @top_srcdir@
MODULE = multimedia
MODULE = multimedia
SRCS = \
C_SRCS = \
audio.c \
joystick.c \
mcianim.c \
@ -20,29 +12,8 @@ SRCS = \
mmsystem.c \
time.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
dummy:
@MAKE_RULES@
### Dependencies:

View File

@ -374,7 +374,7 @@ MCISTR_Open(_MCISTR_PROTO_) {
FLAG1("nostatic",MCI_ANIM_OPEN_NOSTATIC);
if (!STRCMP(keywords[i],"parent") && (i+1<nrofkeywords)) {
dwFlags |= MCI_ANIM_OPEN_PARENT;
sscanf(keywords[i+1],"%u",&(U.animopenParams.hWndParent));
sscanf(keywords[i+1],"%hu",&(U.animopenParams.hWndParent));
i+=2;
continue;
}
@ -406,7 +406,7 @@ MCISTR_Open(_MCISTR_PROTO_) {
/* looks just like anim, but without NOSTATIC */
if (!STRCMP(keywords[i],"parent") && (i+1<nrofkeywords)) {
dwFlags |= MCI_OVLY_OPEN_PARENT;
sscanf(keywords[i+1],"%d",&(U.ovlyopenParams.hWndParent));
sscanf(keywords[i+1],"%hd",&(U.ovlyopenParams.hWndParent));
i+=2;
continue;
}
@ -539,7 +539,7 @@ _MCISTR_determine_timeformat(LPCSTR dev,WORD wDevID,WORD uDevTyp,int *timef) {
static DWORD
MCISTR_Status(_MCISTR_PROTO_) {
MCI_STATUS_PARMS statusParams;
int type,i,res,timef;
int type = 0,i,res,timef;
statusParams.dwCallback = 0;
dwFlags |= MCI_STATUS_ITEM;
@ -1379,10 +1379,10 @@ MCISTR_Load(_MCISTR_PROTO_) {
case MCI_DEVTYPE_OVERLAY:
if (!STRCMP(keywords[i],"at") && (i+4<nrofkeywords)) {
dwFlags |= MCI_OVLY_RECT;
sscanf(keywords[i+1],"%d",&(U.ovlyloadParams.rc.left));
sscanf(keywords[i+2],"%d",&(U.ovlyloadParams.rc.top));
sscanf(keywords[i+3],"%d",&(U.ovlyloadParams.rc.right));
sscanf(keywords[i+4],"%d",&(U.ovlyloadParams.rc.bottom));
sscanf(keywords[i+1],"%hd",&(U.ovlyloadParams.rc.left));
sscanf(keywords[i+2],"%hd",&(U.ovlyloadParams.rc.top));
sscanf(keywords[i+3],"%hd",&(U.ovlyloadParams.rc.right));
sscanf(keywords[i+4],"%hd",&(U.ovlyloadParams.rc.bottom));
memcpy(keywords+i,keywords+(i+5),nrofkeywords-(i+5));
continue;
}
@ -1431,10 +1431,10 @@ MCISTR_Save(_MCISTR_PROTO_) {
case MCI_DEVTYPE_OVERLAY:
if (!STRCMP(keywords[i],"at") && (i+4<nrofkeywords)) {
dwFlags |= MCI_OVLY_RECT;
sscanf(keywords[i+1],"%d",&(U.ovlysaveParams.rc.left));
sscanf(keywords[i+2],"%d",&(U.ovlysaveParams.rc.top));
sscanf(keywords[i+3],"%d",&(U.ovlysaveParams.rc.right));
sscanf(keywords[i+4],"%d",&(U.ovlysaveParams.rc.bottom));
sscanf(keywords[i+1],"%hd",&(U.ovlysaveParams.rc.left));
sscanf(keywords[i+2],"%hd",&(U.ovlysaveParams.rc.top));
sscanf(keywords[i+3],"%hd",&(U.ovlysaveParams.rc.right));
sscanf(keywords[i+4],"%hd",&(U.ovlysaveParams.rc.bottom));
memcpy(keywords+i,keywords+(i+5),nrofkeywords-(i+5));
continue;
}
@ -1599,10 +1599,10 @@ MCISTR_Unfreeze(_MCISTR_PROTO_) {
return MCIERR_UNSUPPORTED_FUNCTION;
i=0;while (i<nrofkeywords) {
if (!STRCMP(keywords[i],"at") && (i+4<nrofkeywords)) {
sscanf(keywords[i+1],"%ld",&(unfreezeParams.rc.left));
sscanf(keywords[i+2],"%ld",&(unfreezeParams.rc.top));
sscanf(keywords[i+3],"%ld",&(unfreezeParams.rc.right));
sscanf(keywords[i+4],"%ld",&(unfreezeParams.rc.bottom));
sscanf(keywords[i+1],"%hd",&(unfreezeParams.rc.left));
sscanf(keywords[i+2],"%hd",&(unfreezeParams.rc.top));
sscanf(keywords[i+3],"%hd",&(unfreezeParams.rc.right));
sscanf(keywords[i+4],"%hd",&(unfreezeParams.rc.bottom));
dwFlags |= MCI_OVLY_RECT;
i+=5;
continue;
@ -1624,10 +1624,10 @@ MCISTR_Freeze(_MCISTR_PROTO_) {
return MCIERR_UNSUPPORTED_FUNCTION;
i=0;while (i<nrofkeywords) {
if (!STRCMP(keywords[i],"at") && (i+4<nrofkeywords)) {
sscanf(keywords[i+1],"%ld",&(freezeParams.rc.left));
sscanf(keywords[i+2],"%ld",&(freezeParams.rc.top));
sscanf(keywords[i+3],"%ld",&(freezeParams.rc.right));
sscanf(keywords[i+4],"%ld",&(freezeParams.rc.bottom));
sscanf(keywords[i+1],"%hd",&(freezeParams.rc.left));
sscanf(keywords[i+2],"%hd",&(freezeParams.rc.top));
sscanf(keywords[i+3],"%hd",&(freezeParams.rc.right));
sscanf(keywords[i+4],"%hd",&(freezeParams.rc.bottom));
dwFlags |= MCI_OVLY_RECT;
i+=5;
continue;
@ -1665,10 +1665,10 @@ MCISTR_Put(_MCISTR_PROTO_) {
FLAG1("source",MCI_ANIM_PUT_SOURCE);
FLAG1("destination",MCI_ANIM_PUT_DESTINATION);
if (!STRCMP(keywords[i],"at") && (i+4<nrofkeywords)) {
sscanf(keywords[i+1],"%ld",&(U.animputParams.rc.left));
sscanf(keywords[i+2],"%ld",&(U.animputParams.rc.top));
sscanf(keywords[i+3],"%ld",&(U.animputParams.rc.right));
sscanf(keywords[i+4],"%ld",&(U.animputParams.rc.bottom));
sscanf(keywords[i+1],"%hd",&(U.animputParams.rc.left));
sscanf(keywords[i+2],"%hd",&(U.animputParams.rc.top));
sscanf(keywords[i+3],"%hd",&(U.animputParams.rc.right));
sscanf(keywords[i+4],"%hd",&(U.animputParams.rc.bottom));
dwFlags |= MCI_ANIM_RECT;
i+=5;
continue;
@ -1680,10 +1680,10 @@ MCISTR_Put(_MCISTR_PROTO_) {
FLAG1("video",MCI_OVLY_PUT_VIDEO);
FLAG1("frame",MCI_OVLY_PUT_FRAME);
if (!STRCMP(keywords[i],"at") && (i+4<nrofkeywords)) {
sscanf(keywords[i+1],"%ld",&(U.ovlyputParams.rc.left));
sscanf(keywords[i+2],"%ld",&(U.ovlyputParams.rc.top));
sscanf(keywords[i+3],"%ld",&(U.ovlyputParams.rc.right));
sscanf(keywords[i+4],"%ld",&(U.ovlyputParams.rc.bottom));
sscanf(keywords[i+1],"%hd",&(U.ovlyputParams.rc.left));
sscanf(keywords[i+2],"%hd",&(U.ovlyputParams.rc.top));
sscanf(keywords[i+3],"%hd",&(U.ovlyputParams.rc.right));
sscanf(keywords[i+4],"%hd",&(U.ovlyputParams.rc.bottom));
dwFlags |= MCI_OVLY_RECT;
i+=5;
continue;
@ -1792,17 +1792,17 @@ MCISTR_Update(_MCISTR_PROTO_) {
i=0;
while (i<nrofkeywords) {
if (!STRCMP(keywords[i],"at") && (i+4<nrofkeywords)) {
sscanf(keywords[i+1],"%ld",&(updateParams.rc.left));
sscanf(keywords[i+2],"%ld",&(updateParams.rc.top));
sscanf(keywords[i+3],"%ld",&(updateParams.rc.right));
sscanf(keywords[i+4],"%ld",&(updateParams.rc.bottom));
sscanf(keywords[i+1],"%hd",&(updateParams.rc.left));
sscanf(keywords[i+2],"%hd",&(updateParams.rc.top));
sscanf(keywords[i+3],"%hd",&(updateParams.rc.right));
sscanf(keywords[i+4],"%hd",&(updateParams.rc.bottom));
dwFlags |= MCI_ANIM_RECT;
i+=5;
continue;
}
if (!STRCMP(keywords[i],"hdc") && (i+1<nrofkeywords)) {
dwFlags |= MCI_ANIM_UPDATE_HDC;
sscanf(keywords[i+1],"%d",&(updateParams.hDC));
sscanf(keywords[i+1],"%hd",&(updateParams.hDC));
i+=2;
continue;
}
@ -1891,7 +1891,7 @@ MCISTR_Window(_MCISTR_PROTO_) {
if (!STRCMP(keywords[i+1],"default"))
U.animwindowParams.hWnd = MCI_OVLY_WINDOW_DEFAULT;
else
sscanf(keywords[i+1],"%d",&(U.animwindowParams.hWnd));
sscanf(keywords[i+1],"%hd",&(U.animwindowParams.hWnd));
i+=2;
continue;
}
@ -1960,7 +1960,7 @@ MCISTR_Window(_MCISTR_PROTO_) {
if (!STRCMP(keywords[i+1],"default"))
U.ovlywindowParams.hWnd = MCI_OVLY_WINDOW_DEFAULT;
else
sscanf(keywords[i+1],"%d",&(U.ovlywindowParams.hWnd));
sscanf(keywords[i+1],"%hd",&(U.ovlywindowParams.hWnd));
i+=2;
continue;
}

View File

@ -10,8 +10,10 @@
#include <stdlib.h>
#include <string.h>
#include "windows.h"
#include "win.h"
#include "ldt.h"
#include "callback.h"
#include "module.h"
#include "user.h"
#include "driver.h"
#include "mmsystem.h"
@ -27,6 +29,7 @@ typedef struct tagTIMERENTRY {
WORD wDelay;
WORD wResol;
FARPROC lpFunc;
HINSTANCE hInstance;
DWORD dwUser;
WORD wFlags;
WORD wTimerID;
@ -42,6 +45,7 @@ static LPTIMERENTRY lpTimerList = NULL;
*/
WORD MMSysTimeCallback(HWND hWnd, WORD wMsg, INT nID, DWORD dwTime)
{
FARPROC lpFunc;
LPTIMERENTRY lpTimer = lpTimerList;
mmSysTimeMS.u.ms += 33;
mmSysTimeSMPTE.u.smpte.frame++;
@ -51,8 +55,26 @@ WORD MMSysTimeCallback(HWND hWnd, WORD wMsg, INT nID, DWORD dwTime)
lpTimer->wCurTime = lpTimer->wDelay;
if (lpTimer->lpFunc != (FARPROC) NULL) {
dprintf_mmtime(stddeb, "MMSysTimeCallback // before CallBack16 !\n");
CallTimeFuncProc(lpTimer->lpFunc, lpTimer->wTimerID, 0,
lpTimer->dwUser, 0, 0);
dprintf_mmtime(stddeb, "MMSysTimeCallback // lpFunc=%08lx wTimerID=%04X dwUser=%08lX !\n",
lpTimer->lpFunc, lpTimer->wTimerID, lpTimer->dwUser);
dprintf_mmtime(stddeb, "MMSysTimeCallback // hInstance=%04X !\n", lpTimer->hInstance);
/*
lpFunc = MakeProcInstance(lpTimer->hInstance, lpTimer->lpFunc);
dprintf_mmtime(stddeb, "MMSysTimeCallback // MakeProcInstance(lpFunc)=%p %p !\n",
lpFunc, PTR_SEG_TO_LIN(lpFunc));
*/
lpFunc = MODULE_GetEntryPoint( lpTimer->hInstance,
MODULE_GetOrdinal(lpTimer->hInstance,"TimerCallBack" ));
dprintf_mmtime(stddeb, "MMSysTimeCallback // lpFunc=%08lx !\n", lpFunc);
CallTo16_word_wwlll(lpTimer->lpFunc,
lpTimer->hInstance, lpTimer->wTimerID,
0, lpTimer->dwUser, 0, 0);
/*
CallTimeFuncProc(lpTimer->lpFunc, lpTimer->wTimerID,
0, lpTimer->dwUser, 0, 0);
*/
dprintf_mmtime(stddeb, "MMSysTimeCallback // after CallBack16 !\n");
fflush(stdout);
}
@ -104,7 +126,7 @@ WORD timeSetEvent(WORD wDelay, WORD wResol, LPTIMECALLBACK lpFunc,
WORD wNewID = 0;
LPTIMERENTRY lpNewTimer;
LPTIMERENTRY lpTimer = lpTimerList;
dprintf_mmsys(stddeb, "timeSetEvent(%u, %u, %p, %08lX, %04X);\n",
dprintf_mmtime(stddeb, "timeSetEvent(%u, %u, %p, %08lX, %04X);\n",
wDelay, wResol, lpFunc, dwUser, wFlags);
if (!mmTimeStarted)
StartMMTime();
@ -130,6 +152,10 @@ WORD timeSetEvent(WORD wDelay, WORD wResol, LPTIMECALLBACK lpFunc,
lpNewTimer->wDelay = wDelay;
lpNewTimer->wResol = wResol;
lpNewTimer->lpFunc = (FARPROC) lpFunc;
lpNewTimer->hInstance = GetTaskDS();
dprintf_mmtime(stddeb, "timeSetEvent // hInstance=%04X !\n", lpNewTimer->hInstance);
dprintf_mmtime(stddeb, "timeSetEvent // PTR_SEG_TO_LIN(lpFunc)=%p !\n",
PTR_SEG_TO_LIN(lpFunc));
lpNewTimer->dwUser = dwUser;
lpNewTimer->wFlags = wFlags;
return lpNewTimer->wTimerID;

View File

@ -1,39 +1,27 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
TOPSRC = @top_srcdir@
MODULE = objects
MODULE = objects
SRCS = bitblt.c bitmap.c brush.c clipping.c color.c dc.c dcvalues.c \
dib.c font.c gdiobj.c linedda.c metafile.c oembitmap.c palette.c \
pen.c region.c text.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
C_SRCS = \
bitblt.c \
bitmap.c \
brush.c \
clipping.c \
color.c \
dc.c \
dcvalues.c \
dib.c \
font.c \
gdiobj.c \
linedda.c \
metafile.c \
oembitmap.c \
palette.c \
pen.c \
region.c \
text.c
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm -f Makefile
countryclean:
@MAKE_RULES@
### Dependencies:

View File

@ -12,9 +12,18 @@ static char Copyright[] = "Copyright Alexandre Julliard, 1993";
#include "options.h"
#include "gdi.h"
#include "color.h"
#include "palette.h"
Colormap COLOR_WinColormap = 0;
int COLOR_FixedMap = 0;
int COLOR_Redshift = 0;
int COLOR_Redmax = 0;
int COLOR_Greenshift = 0;
int COLOR_Greenmax = 0;
int COLOR_Blueshift = 0;
int COLOR_Bluemax = 0;
int COLOR_Graymax = 0;
/* System palette static colors */
@ -181,6 +190,23 @@ static HPALETTE COLOR_InitPalette(void)
return hpalette;
}
void
COLOR_Computeshifts(unsigned long maskbits, int *shift, int *max)
{
int i;
if(maskbits==0) {
*shift=0;
*max=0;
return;
}
for(i=0;!(maskbits&1);i++)
maskbits >>= 1;
*shift = i;
*max = maskbits;
}
/***********************************************************************
* COLOR_Init
@ -190,12 +216,13 @@ static HPALETTE COLOR_InitPalette(void)
HPALETTE COLOR_Init(void)
{
Visual * visual = DefaultVisual( display, DefaultScreen(display) );
switch(visual->class)
{
case GrayScale:
case PseudoColor:
case DirectColor:
COLOR_FixedMap = 0;
if (Options.usePrivateMap)
{
COLOR_WinColormap = XCreateColormap( display, rootWindow,
@ -214,11 +241,21 @@ HPALETTE COLOR_Init(void)
break;
}
}
COLOR_WinColormap = DefaultColormapOfScreen( screen );
break;
/* Fall through */
case StaticGray:
COLOR_WinColormap = DefaultColormapOfScreen( screen );
COLOR_FixedMap = 1;
COLOR_Graymax = (1<<screenDepth)-1;
break;
case StaticColor:
case TrueColor:
COLOR_WinColormap = DefaultColormapOfScreen( screen );
COLOR_FixedMap = 1;
COLOR_Computeshifts(visual->red_mask, &COLOR_Redshift, &COLOR_Redmax);
COLOR_Computeshifts(visual->green_mask, &COLOR_Greenshift, &COLOR_Greenmax);
COLOR_Computeshifts(visual->blue_mask, &COLOR_Blueshift, &COLOR_Bluemax);
break;
}
return COLOR_InitPalette();
@ -251,22 +288,84 @@ BOOL COLOR_IsSolid( COLORREF color )
* COLOR_ToPhysical
*
* Return the physical color closest to 'color'.
*
* ESW: This still needs a lot of work; in particular, what happens when
* we have really large (> 8 bit) DirectColor boards?
* But it should work better in 16 and 24 bit modes now.
* (At least it pays attention to the X server's description
* in TrueColor mode, instead of blindly passing through the
* color spec and swapping red to blue or losing blue and part of the
* green entirely, depending on what mode one is in!)
*
*/
int COLOR_ToPhysical( DC *dc, COLORREF color )
{
WORD index = 0;
WORD *mapping;
if (screenDepth > 8) return color;
/* if (screenDepth > 8) return color; */
if (dc && (dc->w.bitsPerPixel == 1) && ((color >> 24) == 0))
{
/* monochrome */
if (((color >> 16) & 0xff) +
((color >> 8) & 0xff) + (color & 0xff) > 255*3/2)
return 1; /* white */
else return 0; /* black */
}
switch(color >> 24)
if(COLOR_FixedMap) {
/* there is no colormap possible; we are going to have to compute
the pixel value from the visual information stored earlier */
unsigned long which = color >> 24;
unsigned long red, green, blue;
unsigned idx;
PALETTEOBJ * palPtr;
switch(which) {
case 0: /* RGB */
case 2: /* PALETTERGB -- needs some work, but why bother; we've got a REALLY LARGE number of colors...? */
default:
red = GetRValue(color);
green = GetGValue(color);
blue = GetBValue(color);
break;
case 1: /* PALETTEIDX -- hmm, get the real color from the stock palette */
palPtr = (PALETTEOBJ *) GDI_GetObjPtr( STOCK_DEFAULT_PALETTE, PALETTE_MAGIC);
idx = color & 0xffff;
if(idx >= palPtr->logpalette.palNumEntries) {
/* out of bounds */
red = green = blue = 0;
}
else {
red = palPtr->logpalette.palPalEntry[idx].peRed;
green = palPtr->logpalette.palPalEntry[idx].peGreen;
blue = palPtr->logpalette.palPalEntry[idx].peBlue;
}
}
if(COLOR_Graymax) {
/* grayscale only; return scaled value */
return ( (red * 30 + green * 69 + blue * 11) * COLOR_Graymax) / 25500;
}
else {
/* scale each individually and construct the TrueColor pixel value */
if(COLOR_Redmax != 255)
red = (red * COLOR_Redmax) / 255;
if(COLOR_Greenmax != 255)
green = (green * COLOR_Greenmax) / 255;
if(COLOR_Bluemax != 255)
blue = (blue * COLOR_Bluemax) / 255;
return (red << COLOR_Redshift) | (green << COLOR_Greenshift) | (blue << COLOR_Blueshift);
}
}
else switch(color >> 24)
{
case 0: /* RGB */
index = GetNearestPaletteIndex( STOCK_DEFAULT_PALETTE, color );
@ -338,7 +437,7 @@ COLORREF GetNearestColor( HDC hdc, COLORREF color )
WORD index;
DC *dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return 0;
if (screenDepth > 8) return color;
if (screenDepth > 8) return color; /* FIXME */
index = (WORD)(COLOR_ToPhysical( dc, color & 0xffffff ) & 0xffff);
return PALETTEINDEX( index );
}

View File

@ -680,6 +680,12 @@ HBITMAP CreateDIBitmap( HDC hdc, BITMAPINFOHEADER * header, DWORD init,
{
HBITMAP handle;
if(header->biSize!=sizeof(BITMAPINFOHEADER))
{
fprintf(stderr,"CreateDIBitmap: wrong size (%ld) for header\n",
header->biSize);
return 0;
}
handle = CreateCompatibleBitmap( hdc, header->biWidth, header->biHeight );
/* handle = CreateBitmap( header->biWidth, header->biHeight,
1, header->biBitCount, NULL );
@ -727,3 +733,11 @@ BOOL DrawIcon(HDC hDC, short x, short y, HICON hIcon)
SetBkColor( hDC, oldBg );
return TRUE;
}
/***********************************************************************
* CopyIcon (USER.368)
*/
BOOL CopyIcon(HANDLE handle, HICON hIcon)
{
printf("STUB !!! CopyIcon: %x %x\n",handle,hIcon);
return TRUE;
}

View File

@ -1,50 +1,38 @@
CC = @CC@
CFLAGS = @CFLAGS@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
BISON = @YACC@
FLEX = @LEX@
LANG = @LANG@
COMPILE = $(CC) $(CFLAGS) $(DIVINCL) $(LANG)
TOPSRC = @top_srcdir@
all: rc.o
MODULE = rc
C_SRCS = sysres.c
all: $(MODULE).o
@MAKE_RULES@
y.tab.c y.tab.h: parser.y
$(BISON) -d -t parser.y
$(YACC) -d -t parser.y
lex.yy.c: parser.l parser.h y.tab.h
$(FLEX) -8 -I parser.l
lex.yy.c: parser.l
$(LEX) -8 -I parser.l
winerc: lex.yy.o winerc.o y.tab.o
$(COMPILE) lex.yy.o winerc.o y.tab.o -o winerc
$(CC) $(ALLCFLAGS) lex.yy.o winerc.o y.tab.o -o winerc $(LEXLIB)
sysres.rct: sysres.rc
sysres.rct: sysres.rc sysres_En.rc sysres_Es.rc sysres_De.rc sysres_No.rc
echo "#include \"windows.h\"" >sysres.rct
echo WINDOWS_H_ENDS_HERE >>sysres.rct
cat sysres.rc >>sysres.rct
sysres.c sysres.h: sysres.rct winerc
$(COMPILE) -E -x c -P sysres.rct > sysres.tmp
cat sysres.tmp | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | ./winerc -o sysres -v -p sysres
$(CC) $(ALLCFLAGS) -E -x c -P sysres.rct | sed -e '1,/^WINDOWS_H_ENDS_HERE/d' | ./winerc -o sysres -v -p sysres
rc.o: sysres.o
cp sysres.o rc.o
clean::
$(RM) lex.yy.c sysres.rct winerc y.tab.c y.tab.h sysres.c sysres.h
.c.o:
$(COMPILE) -c -o $*.o $<
langclean::
$(RM) sysres.c sysres.h sysres.o
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
rm -f lex.yy.c sysres.tmp sysres.rct winerc y.tab.c y.tab.h sysres.c sysres.h
distclean: clean
rm -f Makefile
countryclean:
depend: sysres.h
y.tab.o: y.tab.c
lex.yy.o: lex.yy.c
y.tab.o: y.tab.c y.tab.h parser.h
lex.yy.o: lex.yy.c y.tab.h parser.h
winerc.o: $(TOPSRC)/include/windows.h $(TOPSRC)/include/neexe.h parser.h y.tab.h
### Dependencies:

View File

@ -1,210 +1,11 @@
#if #LANG(En)
SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE
{
MENUITEM "&Restore", 61728
MENUITEM "&Move", 61456
MENUITEM "&Size", 61440
MENUITEM "Mi&nimize", 61472
MENUITEM "Ma&ximize", 61488
MENUITEM SEPARATOR
MENUITEM "&Close\tAlt-F4", 61536
MENUITEM SEPARATOR
MENUITEM "&Switch to ...\tCtrl-Esc", 61744
MENUITEM SEPARATOR
MENUITEM "&About WINE ...", 61761
}
MSGBOX DIALOG 100, 80, 216, 168
STYLE DS_SYSMODAL | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
BEGIN
ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE
LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Ok", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Cancel", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Abort", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Retry", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Ignore", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Yes", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&No", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
END
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 213, 179
STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "About %s"
FONT 10, "System"
{
DEFPUSHBUTTON "OK", 1, 86, 160, 40, 14
CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 205, 120
LTEXT "Text", 100, 11, 40, 190, 110, SS_NOPREFIX | WS_GROUP
ICON "", 1088, 185, 10, 18, 20
}
3 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Open"
FONT 8, "Helv"
{
LTEXT "File &Name:", 1090, 6, 6, 76, 9
EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "&Directories:", -1, 110, 6, 92, 9
LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "List Files of &Type:", 1089, 6, 104, 90, 9
COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Open", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
CHECKBOX "&Read Only", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
4 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Save As ..."
FONT 8, "Helv"
{
LTEXT "File &Name:", 1090, 6, 6, 76, 9
EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "&Directories:", -1, 110, 6, 92, 9
LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "List Files of &Type:", 1089, 6, 104, 90, 9
COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Save As", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
CHECKBOX "&Read Only", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
5 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Print"
FONT 8, "Helv"
{
LTEXT "Printer:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
GROUPBOX "Print Range", 1072, 6, 30, 160, 65, BS_GROUPBOX
RADIOBUTTON "&All", 1056, 16, 45, 60, 12
RADIOBUTTON "S&election", 1057, 16, 60, 60, 12
RADIOBUTTON "&Pages", 1058, 16, 75, 60, 12
DEFPUSHBUTTON "Print", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
LTEXT "&From:", 1090, 60, 80, 30, 9
LTEXT "&To:", 1091, 120, 80, 30, 9
LTEXT "Print &Quality:", 1092, 6, 100, 76, 9
COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
CHECKBOX "Print to Fi&le", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
6 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Print Setup"
FONT 8, "Helv"
{
GROUPBOX "Printer", 1072, 6, 10, 180, 65, BS_GROUPBOX
RADIOBUTTON "&Default Printer", 1056, 16, 20, 80, 12
LTEXT "[none]", 1088, 35, 35, 120, 9
RADIOBUTTON "Specific &Printer", 1057, 16, 50, 80, 12
COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Ok", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
GROUPBOX "Orientation", 1073, 6, 85, 100, 50, BS_GROUPBOX
RADIOBUTTON "Po&rtrait", 1058, 50, 100, 40, 12
RADIOBUTTON "&Landscape", 1059, 50, 115, 40, 12
ICON "LANDSCAP", 1097, 10, 95, 32, 32
ICON "PORTRAIT", 1098, 10, 95, 32, 32
GROUPBOX "Paper", 1074, 120, 85, 180, 50, BS_GROUPBOX
LTEXT "Si&ze", 1089, 130, 95, 30, 9
LTEXT "&Source", 1090, 130, 110, 30, 9
COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
}
7 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Font"
FONT 8, "Helv"
{
LTEXT "Font:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
DEFPUSHBUTTON "Ok", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
}
8 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Color"
FONT 8, "Helv"
{
LTEXT "&Basic Colors:", 1088, 6, 6, 40, 9
LTEXT "&Custom Colors:", 1089, 6, 126, 40, 9
LTEXT "Color|Sol&id", 1090, 100, 146, 40, 9
LTEXT "&Hue:", 1091, 150, 126, 40, 9
LTEXT "&Sat:", 1092, 150, 146, 40, 9
LTEXT "&Lum:", 1093, 150, 166, 40, 9
LTEXT "&Red:", 1094, 150, 126, 40, 9
LTEXT "&Green:", 1095, 150, 146, 40, 9
LTEXT "Bl&ue:", 1096, 150, 166, 40, 9
DEFPUSHBUTTON "Ok", 1, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Add to Custom Colors", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Delete Custom Colors", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP
}
9 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 84
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Find"
FONT 8, "Helv"
{
LTEXT "Fi&nd What:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
CHECKBOX "Match &Whole Word Only", 1040, 20, 30, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Match &Case", 1041, 20, 50, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
GROUPBOX "Direction", 1072, 90, 40, 80, 40, BS_GROUPBOX
RADIOBUTTON "&Up", 1056, 100, 50, 50, 12
RADIOBUTTON "&Down", 1057, 150, 50, 50, 12
DEFPUSHBUTTON "&Find Next", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
}
10 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 114
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Replace"
FONT 8, "Helv"
{
LTEXT "Fi&nd What:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
LTEXT "Re&place With:", 1090, 6, 26, 40, 9
LTEXT "", 1091, 60, 26, 150, 9
CHECKBOX "Match &Whole Word Only", 1040, 20, 40, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Match &Case", 1041, 20, 60, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
DEFPUSHBUTTON "&Find Next", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Replace", 1024, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Replace &All", 1025, 206, 44, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 64, 56, 14, WS_GROUP | WS_TABSTOP
}
#include "sysres_En.rc"
#elif #LANG(De)
#include "sysres_De.rc"
#elif #LANG(No)
#include "sysres_No.rc"
#elif #LANG(Es)
#include "sysres_Es.rc"
#else
#error LANG not set to an implemented language.
#endif

View File

@ -27,19 +27,19 @@ BEGIN
PUSHBUTTON "&Nein", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
END
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 213, 179
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200
STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Info über %s"
FONT 10, "System"
{
DEFPUSHBUTTON "OK", 1, 86, 160, 40, 14
CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 205, 120
LTEXT "Text", 100, 11, 40, 190, 110, SS_NOPREFIX | WS_GROUP
ICON "", 1088, 185, 10, 18, 20
DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14
CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140
LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP
ICON "", 1088, 195, 10, 18, 20
}
3 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Öffnen"
FONT 8, "Helv"
@ -61,7 +61,7 @@ FONT 8, "Helv"
}
4 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Speichern als ..."
FONT 8, "Helv"
@ -83,7 +83,7 @@ FONT 8, "Helv"
}
5 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Drucken"
FONT 8, "Helv"
@ -106,7 +106,7 @@ FONT 8, "Helv"
}
6 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Druckereinrichtung"
FONT 8, "Helv"
@ -132,7 +132,7 @@ FONT 8, "Helv"
}
7 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Font"
FONT 8, "Helv"
@ -144,7 +144,7 @@ FONT 8, "Helv"
}
8 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 200
CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Farbe"
FONT 8, "Helv"
@ -165,7 +165,7 @@ FONT 8, "Helv"
}
9 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 84
FIND_TEXT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 84
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Suchen"
FONT 8, "Helv"
@ -182,7 +182,7 @@ FONT 8, "Helv"
}
10 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 114
REPLACE_TEXT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 114
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Ersetzen"
FONT 8, "Helv"

200
rc/sysres_En.rc 100644
View File

@ -0,0 +1,200 @@
SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE
{
MENUITEM "&Restore", 61728
MENUITEM "&Move", 61456
MENUITEM "&Size", 61440
MENUITEM "Mi&nimize", 61472
MENUITEM "Ma&ximize", 61488
MENUITEM SEPARATOR
MENUITEM "&Close\tAlt-F4", 61536
MENUITEM SEPARATOR
MENUITEM "&Switch to ...\tCtrl-Esc", 61744
MENUITEM SEPARATOR
MENUITEM "&About WINE ...", 61761
}
MSGBOX DIALOG 100, 80, 216, 168
STYLE DS_SYSMODAL | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
BEGIN
ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE
LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Ok", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Cancel", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Abort", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Retry", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Ignore", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Yes", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&No", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
END
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200
STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "About %s"
FONT 10, "System"
{
DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14
CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140
LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP
ICON "", 1088, 195, 10, 18, 20
}
OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Open"
FONT 8, "Helv"
{
LTEXT "File &Name:", 1090, 6, 6, 76, 9
EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "&Directories:", -1, 110, 6, 92, 9
LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "List Files of &Type:", 1089, 6, 104, 90, 9
COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Open", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
CHECKBOX "&Read Only", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Save As ..."
FONT 8, "Helv"
{
LTEXT "File &Name:", 1090, 6, 6, 76, 9
EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "&Directories:", -1, 110, 6, 92, 9
LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "List Files of &Type:", 1089, 6, 104, 90, 9
COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Save As", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
CHECKBOX "&Read Only", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Print"
FONT 8, "Helv"
{
LTEXT "Printer:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
GROUPBOX "Print Range", 1072, 6, 30, 160, 65, BS_GROUPBOX
RADIOBUTTON "&All", 1056, 16, 45, 60, 12
RADIOBUTTON "S&election", 1057, 16, 60, 60, 12
RADIOBUTTON "&Pages", 1058, 16, 75, 60, 12
DEFPUSHBUTTON "Print", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
LTEXT "&From:", 1090, 60, 80, 30, 9
LTEXT "&To:", 1091, 120, 80, 30, 9
LTEXT "Print &Quality:", 1092, 6, 100, 76, 9
COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
CHECKBOX "Print to Fi&le", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Print Setup"
FONT 8, "Helv"
{
GROUPBOX "Printer", 1072, 6, 10, 180, 65, BS_GROUPBOX
RADIOBUTTON "&Default Printer", 1056, 16, 20, 80, 12
LTEXT "[none]", 1088, 35, 35, 120, 9
RADIOBUTTON "Specific &Printer", 1057, 16, 50, 80, 12
COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Ok", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
GROUPBOX "Orientation", 1073, 6, 85, 100, 50, BS_GROUPBOX
RADIOBUTTON "Po&rtrait", 1058, 50, 100, 40, 12
RADIOBUTTON "&Landscape", 1059, 50, 115, 40, 12
ICON "LANDSCAP", 1097, 10, 95, 32, 32
ICON "PORTRAIT", 1098, 10, 95, 32, 32
GROUPBOX "Paper", 1074, 120, 85, 180, 50, BS_GROUPBOX
LTEXT "Si&ze", 1089, 130, 95, 30, 9
LTEXT "&Source", 1090, 130, 110, 30, 9
COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
}
CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Font"
FONT 8, "Helv"
{
LTEXT "Font:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
DEFPUSHBUTTON "Ok", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
}
CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Color"
FONT 8, "Helv"
{
LTEXT "&Basic Colors:", 1088, 6, 6, 40, 9
LTEXT "&Custom Colors:", 1089, 6, 126, 40, 9
LTEXT "Color|Sol&id", 1090, 100, 146, 40, 9
LTEXT "&Hue:", 1091, 150, 126, 40, 9
LTEXT "&Sat:", 1092, 150, 146, 40, 9
LTEXT "&Lum:", 1093, 150, 166, 40, 9
LTEXT "&Red:", 1094, 150, 126, 40, 9
LTEXT "&Green:", 1095, 150, 146, 40, 9
LTEXT "Bl&ue:", 1096, 150, 166, 40, 9
DEFPUSHBUTTON "Ok", 1, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Add to Custom Colors", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Delete Custom Colors", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP
}
FIND_TEXT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 84
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Find"
FONT 8, "Helv"
{
LTEXT "Fi&nd What:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
CHECKBOX "Match &Whole Word Only", 1040, 20, 30, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Match &Case", 1041, 20, 50, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
GROUPBOX "Direction", 1072, 90, 40, 80, 40, BS_GROUPBOX
RADIOBUTTON "&Up", 1056, 100, 50, 50, 12
RADIOBUTTON "&Down", 1057, 150, 50, 50, 12
DEFPUSHBUTTON "&Find Next", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
}
REPLACE_TEXT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 114
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Replace"
FONT 8, "Helv"
{
LTEXT "Fi&nd What:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
LTEXT "Re&place With:", 1090, 6, 26, 40, 9
LTEXT "", 1091, 60, 26, 150, 9
CHECKBOX "Match &Whole Word Only", 1040, 20, 40, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Match &Case", 1041, 20, 60, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
DEFPUSHBUTTON "&Find Next", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Replace", 1024, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Replace &All", 1025, 206, 44, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", 2, 206, 64, 56, 14, WS_GROUP | WS_TABSTOP
}

202
rc/sysres_Es.rc 100644
View File

@ -0,0 +1,202 @@
SYSMENU MENU LOADONCALL MOVEABLE DISCARDABLE
{
MENUITEM "&Restaurer", 61728
MENUITEM "&Mover", 61456
MENUITEM "&Tamaño", 61440
MENUITEM "Mi&nimizar", 61472
MENUITEM "Ma&ximizar", 61488
MENUITEM SEPARATOR
MENUITEM "&Cerrar\tAlt-F4", 61536
MENUITEM SEPARATOR
MENUITEM "Cam&biar a ...\tCtrl-Esc", 61744
MENUITEM SEPARATOR
MENUITEM "&Acerca de WINE...", 61761
}
MSGBOX DIALOG 100, 80, 216, 168
STYLE DS_SYSMODAL | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
BEGIN
ICON "", 1088, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE
LTEXT "", 100, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Aceptar", 1, 16, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Cancelar", 2, 64, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Abortar", 3, 112, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Reintentar", 4, 160, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Ignorar", 5, 208, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&Sí", 6, 256, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
PUSHBUTTON "&No", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
END
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200
STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Acerca de %s"
FONT 10, "System"
{
DEFPUSHBUTTON "Aceptar", 1, 91, 180, 40, 14
CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140
LTEXT "Text", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP
ICON "", 1088, 195, 10, 18, 20
}
OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Abrir"
FONT 8, "Helv"
{
LTEXT "Nombre de &archivo:", 1090, 6, 6, 76, 9
EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "&Directorios:", -1, 110, 6, 92, 9
LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "&Mostrar archivos de tipo:", 1089, 6, 104, 90, 9
COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
LTEXT "U&nidades:", 1091, 110, 104, 92, 9
COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Abrir", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "A&yuda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
CHECKBOX "&Solo lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "&Guardar como..."
FONT 8, "Helv"
{
LTEXT "Nombre de &archivo:", 1090, 6, 6, 76, 9
EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "&Directorios:", -1, 110, 6, 92, 9
LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
LTEXT "&Mostrar archivos de tipo:", 1089, 6, 104, 90, 9
COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
LTEXT "U&nidades:", 1091, 110, 104, 92, 9
COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "&Guardar como", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "A&yuda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
CHECKBOX "&Solo lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Imprimir"
FONT 8, "Helv"
{
LTEXT "Impresora:", 1088, 6, 6, 40, 9
LTEXT "Campo de impresión", 1089, 60, 6, 150, 9
GROUPBOX "", 1072, 6, 30, 160, 65, BS_GROUPBOX
RADIOBUTTON "&Todo", 1056, 16, 45, 60, 12
RADIOBUTTON "Selecc&ión", 1057, 16, 60, 60, 12
RADIOBUTTON "&Paginas", 1058, 16, 75, 60, 12
DEFPUSHBUTTON "Imprimir", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
LTEXT "&Desde:", 1090, 60, 80, 30, 9
LTEXT "&Hasta:", 1091, 120, 80, 30, 9
LTEXT "Calidad de impre&sión:", 1092, 6, 100, 76, 9
COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
CHECKBOX "Impri&mir en un archivo", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
}
PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Configuración de impresión"
FONT 8, "Helv"
{
GROUPBOX "Impresora:", 1072, 6, 10, 180, 65, BS_GROUPBOX
RADIOBUTTON "Pre&determinada del sistema", 1056, 16, 20, 80, 12
LTEXT "[none]", 1088, 35, 35, 120, 9
RADIOBUTTON "Impresora &especmfica:", 1057, 16, 50, 80, 12
COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Aceptar", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Configurar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
GROUPBOX "Orientación", 1073, 6, 85, 100, 50, BS_GROUPBOX
RADIOBUTTON "&Vertical", 1058, 50, 100, 40, 12
RADIOBUTTON "&Horizontal", 1059, 50, 115, 40, 12
ICON "LANDSCAP", 1097, 10, 95, 32, 32
ICON "PORTRAIT", 1098, 10, 95, 32, 32
GROUPBOX "Papel", 1074, 120, 85, 180, 50, BS_GROUPBOX
LTEXT "&Tamaño", 1089, 130, 95, 30, 9
LTEXT "O&rigen:", 1090, 130, 110, 30, 9
COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
}
CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Fuente"
FONT 8, "Helv"
{
LTEXT "Fuente:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
DEFPUSHBUTTON "Aceptar", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
}
CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Color"
FONT 8, "Helv"
{
LTEXT "Colores &basicos:", 1088, 6, 6, 40, 9
LTEXT "Colores person&alizados:", 1089, 6, 126, 40, 9
LTEXT "Color|Sól&ido", 1090, 100, 146, 40, 9
LTEXT "&Hue:", 1091, 150, 126, 40, 9
LTEXT "&Sat:", 1092, 150, 146, 40, 9
LTEXT "&Lum:", 1093, 150, 166, 40, 9
LTEXT "&Rojo:", 1094, 150, 126, 40, 9
LTEXT "&Verde:", 1095, 150, 146, 40, 9
LTEXT "A&zul:", 1096, 150, 166, 40, 9
DEFPUSHBUTTON "Aceptar", 1, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Agregar a los &colores personalizados", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Borrar colores personalizados", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", 2, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP
}
FIND_TEXT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 84
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Buscar"
FONT 8, "Helv"
{
LTEXT "Buscar:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
CHECKBOX "&Comparar palabra entera solamente", 1040, 20, 30, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "&Mayúsculas/minúsculas", 1041, 20, 50, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
GROUPBOX "Dirección", 1072, 90, 40, 80, 40, BS_GROUPBOX
RADIOBUTTON "A&rriba", 1056, 100, 50, 50, 12
RADIOBUTTON "&Abajo", 1057, 150, 50, 50, 12
DEFPUSHBUTTON "Buscar &siguiente", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
}
REPLACE_TEXT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 114
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "R&eemplazar"
FONT 8, "Helv"
{
LTEXT "Buscar:", 1088, 6, 6, 40, 9
LTEXT "", 1089, 60, 6, 150, 9
LTEXT "Re&place With:", 1090, 6, 26, 40, 9
LTEXT "", 1091, 60, 26, 150, 9
CHECKBOX "&Comparar palabra entera solamente", 1040, 20, 40, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
CHECKBOX "&Mayúsculas/minúsculas", 1041, 20, 60, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
DEFPUSHBUTTON "Reemplazar &siguiente", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Reemplazar", 1024, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Reemplazar &todo", 1025, 206, 44, 56, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancelar", 2, 206, 64, 56, 14, WS_GROUP | WS_TABSTOP
}

View File

@ -27,19 +27,19 @@ BEGIN
PUSHBUTTON "&Nei", 7, 304, 56, 40, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
END
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 213, 179
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 50, 44, 223, 200
STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Om %s"
FONT 10, "System"
{
DEFPUSHBUTTON "OK", 1, 86, 160, 40, 14
CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 205, 120
LTEXT "Tekst", 100, 11, 40, 190, 110, SS_NOPREFIX | WS_GROUP
ICON "", 1088, 185, 10, 18, 20
DEFPUSHBUTTON "OK", 1, 91, 180, 40, 14
CONTROL "", -1, "STATIC", SS_BLACKFRAME | WS_CHILD | WS_VISIBLE | WS_DISABLED, 4, 35, 215, 140
LTEXT "Tekst", 100, 11, 40, 200, 130, SS_NOPREFIX | WS_GROUP
ICON "", 1088, 195, 10, 18, 20
}
3 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Åpne"
FONT 8, "Helv"
@ -61,7 +61,7 @@ FONT 8, "Helv"
}
4 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Lagre som ..."
FONT 8, "Helv"
@ -83,7 +83,7 @@ FONT 8, "Helv"
}
5 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Skriv"
FONT 8, "Helv"
@ -106,7 +106,7 @@ FONT 8, "Helv"
}
6 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Skriveoppsett"
FONT 8, "Helv"
@ -132,7 +132,7 @@ FONT 8, "Helv"
}
7 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Font"
FONT 8, "Helv"
@ -144,7 +144,7 @@ FONT 8, "Helv"
}
8 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 200
CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Farge"
FONT 8, "Helv"
@ -165,7 +165,7 @@ FONT 8, "Helv"
}
9 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 84
FIND_TEXT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 84
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Finn"
FONT 8, "Helv"
@ -182,7 +182,7 @@ FONT 8, "Helv"
}
10 DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 114
REPLACE_TEXT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 114
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Bytt"
FONT 8, "Helv"

View File

@ -511,62 +511,85 @@ char *get_resource_name(gen_res*it)
return buf;
}
#define ISCONSTANT constant?"const ":""
#define ISCONSTANT (constant ? "const " : "")
/* create the final output */
void create_output(gen_res* top)
{
gen_res *it;
fprintf(header,"/*\t\t%s\n * This File is automatically generated."
" Do not edit\n */\n#include \"resource.h\"\n",hname);
fprintf(code,"/*\t\t%s\n * This File is automatically generated."
" Do not edit\n */\n",sname);
/* declare the resources */
for(it=top;it;it=it->next)
fprintf(header,"extern %sunsigned char %s[];\n",ISCONSTANT,
get_resource_name(it));
fprintf(header,"extern %sstruct ResourceTable %sTable[];\n",
ISCONSTANT,prefix);
gen_res *it;
fprintf(code,"#include \"windows.h\"\n#include \"%s\"\n",hname);
/* print the resource table (0 terminated) */
fprintf(code,"\n%sstruct ResourceTable %sTable[]={\n",ISCONSTANT,prefix);
for(it=top;it;it=it->next)
{ int type;
switch(it->type)
{case acc:type=NE_RSCTYPE_ACCELERATOR;break;
case bmp:type=NE_RSCTYPE_BITMAP;break;
case cur:type=NE_RSCTYPE_CURSOR;break;
case dlg:type=NE_RSCTYPE_DIALOG;break;
case fnt:type=NE_RSCTYPE_FONT;break;
case ico:type=NE_RSCTYPE_ICON;break;
case men:type=NE_RSCTYPE_MENU;break;
case rdt:type=NE_RSCTYPE_RCDATA;break;
case str:type=NE_RSCTYPE_STRING;break;
default:fprintf(stderr,"Unknown restype\n");type=-1;break;
}
if(it->n_type)
fprintf(code,"{0,%d,\"%s\",%s,%d},\n",
type,it->n.s_name,get_resource_name(it),it->size);
else
fprintf(code,"{%d,%d,\"@%d\",%s,%d},\n",
it->n.i_name,type,it->n.i_name,get_resource_name(it),
it->size);
}
fprintf(code,"{0,0,0,0}};\n\n");
fprintf( header, "/* %s\n"
" * This file is automatically generated. Do not edit!\n"
" */\n\n"
"struct resource\n"
"{\n"
" int id, type;\n"
" char *name;\n"
" unsigned char *bytes;\n"
" unsigned int size;\n"
"};\n\n", hname );
/* print the resources */
for(it=top;it;it=it->next)
{ int i;
fprintf(code,"%sunsigned char %s[]={\n",
ISCONSTANT,get_resource_name(it));
for(i=0;i<it->size-1;i++)
{
fprintf(code,"%#4x,",it->res[i]);
if((i&7)==7)fputc('\n',code);
/* Declare the resources */
for (it=top;it;it=it->next)
fprintf( header,"extern %sstruct resource %s;\n",
ISCONSTANT, get_resource_name(it) );
fprintf( header,"\nextern %sstruct resource * %sTable[];\n",
ISCONSTANT, prefix );
/* Print the resources bytes */
fprintf( code, "/* %s\n"
" * This file is automatically generated. Do not edit!\n"
" */\n\n"
"#include \"%s\"\n", sname, hname );
for(it=top;it;it=it->next)
{
int i;
fprintf( code, "static %sunsigned char %s__bytes[] = {\n",
ISCONSTANT, get_resource_name(it) );
for (i=0;i<it->size-1;i++)
{
fprintf(code,"%#4x,",it->res[i]);
if ((i&7)==7)fputc('\n',code);
}
fprintf(code,"%#4x};\n",it->res[i]);
}
fprintf(code,"%#4x};\n\n",it->res[i]);
}
/* Print the resources */
for (it=top;it;it=it->next)
{
int type;
switch(it->type)
{
case acc:type=NE_RSCTYPE_ACCELERATOR;break;
case bmp:type=NE_RSCTYPE_BITMAP;break;
case cur:type=NE_RSCTYPE_CURSOR;break;
case dlg:type=NE_RSCTYPE_DIALOG;break;
case fnt:type=NE_RSCTYPE_FONT;break;
case ico:type=NE_RSCTYPE_ICON;break;
case men:type=NE_RSCTYPE_MENU;break;
case rdt:type=NE_RSCTYPE_RCDATA;break;
case str:type=NE_RSCTYPE_STRING;break;
default:fprintf(stderr,"Unknown restype\n");type=-1;break;
}
if(it->n_type)
fprintf(code,"%sstruct resource %s = {0,%d,\"%s\",%s__bytes,%d};\n",
ISCONSTANT, get_resource_name(it), type, it->n.s_name,
get_resource_name(it), it->size );
else
fprintf(code,"%sstruct resource %s = {%d,%d,\"@%d\",%s__bytes,%d};\n",
ISCONSTANT, get_resource_name(it), it->n.i_name, type,
it->n.i_name, get_resource_name(it), it->size );
}
/* Print the resource table (NULL terminated) */
fprintf(code,"\n%sstruct resource * %sTable[] = {\n", ISCONSTANT, prefix);
for (it=top;it;it=it->next)
fprintf( code, " &%s,\n", get_resource_name(it) );
fprintf( code, " 0\n};\n" );
}
void make_font()

View File

@ -0,0 +1,14 @@
TOPSRC = @top_srcdir@
MODULE = toolkit
C_SRCS = \
arch.c \
heap.c \
sup.c \
winmain.c
all: $(MODULE).o
@MAKE_RULES@
### Dependencies:

View File

@ -1,4 +1,3 @@
/* #include "autoconf.h" */
#include <windows.h>
void Write (HDC dc, int x, int y, char *s)

View File

@ -1,31 +1,18 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
PROGRAM = build
MODULE = none
all: build
C_SRCS = build.c
build: build.o
$(CC) $(CFLAGS) -o build build.o
all: $(PROGRAM)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
@MAKE_RULES@
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
$(PROGRAM): $(OBJS)
$(CC) $(CFLAGS) -o build $(OBJS)
clean:
rm -f *.o \#*\# *~ *.bak build tmp_make
distclean: clean
rm Makefile
countryclean:
dummy:
clean::
$(RM) $(PROGRAM)
### Dependencies:

View File

@ -718,9 +718,11 @@ static void BuildSpec32Files( char *specname )
printf( "/* File generated automatically, do not edit! */\n" );
printf( "#include <sys/types.h>\n");
printf( "#include \"windows.h\"\n");
printf( "#include \"dlls.h\"\n");
printf( "#include \"pe_image.h\"\n");
printf( "#include \"winerror.h\"\n");
printf( "#include \"relay32.h\"\n");
printf( "#include \"stddebug.h\"\n");
printf( "#include \"debug.h\"\n");
printf( "\nextern int RELAY32_Unimplemented();\n\n" );
@ -758,7 +760,6 @@ static void BuildSpec32Files( char *specname )
if (argno!=argc-1) putchar( ',' );
}
printf( ")\n{\n" );
printf( "\textern int %s();\n", fdp->internal_name );
printf( "\tdprintf_relay(stddeb,\"Entering %%s.%%s(");
for (argno=0;argno<argc;argno++) printf( "%%x ");
printf( ")\\n\", \"%s\", \"%s\"", UpperDLLName, odp->export_name);
@ -817,7 +818,7 @@ static void BuildSpec32Files( char *specname )
printf("};\n\n");
printf( "static WIN32_builtin dll={\"%s\",functions,%d,0};\n",
UpperDLLName, Limit);
UpperDLLName, Limit+1);
printf( "void %s_Init(void)\n{\n",UpperDLLName);
printf( "\tdll.next=WIN32_builtin_list;\n");
@ -990,14 +991,15 @@ static void BuildCall32LargeStack(void)
/* Transfer the arguments */
printf( "\tleal 16(%%ebp),%%esi\n" );
printf( "\tmovl 12(%%ebp),%%ecx\n" );
printf( "\torl %%ecx,%%ecx\n" );
printf( "\tje 1f\n" );
printf( "\tleal 16(%%ebp),%%esi\n" );
printf( "\tshll $2,%%ecx\n" );
printf( "\tsubl %%ecx,%%esp\n" );
printf( "\tmovl %%esp,%%edi\n" );
printf( "\tshrl $2,%%ecx\n" );
printf( "\tcld\n" );
printf( "\trep; movsl\n" );
printf( "1:\n" );

View File

@ -3,6 +3,7 @@
MODULE = windows
SRCS = \
alias.c \
caret.c \
class.c \
cursor.c \

View File

@ -1,44 +1,37 @@
CC = @CC@
CFLAGS = @CFLAGS@
XINCL = @x_includes@
TOPSRC = @top_srcdir@
DIVINCL = -I$(TOPSRC)/include
LD = @LD@
LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
TOPSRC = @top_srcdir@
MODULE = windows
MODULE = windows
SRCS = caret.c class.c cursor.c dce.c defdlg.c defwnd.c dialog.c \
event.c focus.c graphics.c hook.c keyboard.c mapping.c mdi.c \
message.c msgbox.c nonclient.c painting.c property.c scroll.c \
syscolor.c sysmetrics.c timer.c utility.c win.c \
C_SRCS = \
alias.c \
caret.c \
class.c \
cursor.c \
dce.c \
defdlg.c \
defwnd.c \
dialog.c \
event.c \
focus.c \
graphics.c \
hook.c \
keyboard.c \
mapping.c \
mdi.c \
message.c \
msgbox.c \
nonclient.c \
painting.c \
property.c \
scroll.c \
syscolor.c \
sysmetrics.c \
timer.c \
utility.c \
win.c \
winpos.c
OBJS = $(SRCS:.c=.o)
.c.o:
$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
all: $(MODULE).o
$(MODULE).o: $(OBJS)
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
depend:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
$(CC) $(DIVINCL) $(XINCL) -MM *.c >> tmp_make
mv tmp_make Makefile
clean:
rm -f *.o \#*\# *~ *.bak tmp_make
distclean: clean
rm Makefile
countryclean:
dummy:
@MAKE_RULES@
### Dependencies:

95
windows/alias.c 100644
View File

@ -0,0 +1,95 @@
/*
* Function alias support
*
* Copyright 1995 Martin von Loewis
*
*/
#include "windows.h"
#include "alias.h"
#include "stddebug.h"
#include "debug.h"
/* some large prime */
#define TABLESIZE 2677
static ALIASHASH AliasTable[TABLESIZE];
/* this could be a bit smaller */
static FUNCTIONALIAS AliasRecord[TABLESIZE];
/* record 0 is always empty */
static int LastRecord;
int ALIAS_UseAliases;
/* closed hashing */
static int ALIAS_LocateHash(DWORD value)
{
int hash,start;
start=hash=value%TABLESIZE;
while(AliasTable[hash].used && AliasTable[hash].used!=value)
{
hash++;
if(hash==TABLESIZE)
hash=0;
if(hash==start)
{
fprintf(stderr,"Hash table full, increase size in alias.c\n");
exit(0);
}
}
return hash;
}
void ALIAS_RegisterAlias(DWORD Wine,DWORD Win16, DWORD Win32)
{
int whash = 0, w16hash = 0, w32hash = 0, recno=0;
if (!Wine && !Win16 && !Win32) return;
if (Wine)
{
whash=ALIAS_LocateHash(Wine);
recno=AliasTable[whash].used?AliasTable[whash].used:0;
}
if (Win16)
{
w16hash=ALIAS_LocateHash(Win16);
recno=AliasTable[w16hash].used?AliasTable[w16hash].used:0;
}
if (Win32)
{
w32hash=ALIAS_LocateHash(Win32);
recno=AliasTable[w32hash].used?AliasTable[w32hash].used:0;
}
if (!recno)
{
recno=LastRecord;
LastRecord++;
}
if (Wine)
{
AliasTable[whash].used=Wine;
AliasTable[whash].recno=recno;
AliasRecord[recno].wine=Wine;
}
if (Win16)
{
AliasTable[w16hash].used=Win16;
AliasTable[w16hash].recno=recno;
AliasRecord[recno].win16=Win16;
}
if (Win32)
{
AliasTable[w32hash].used=Win32;
AliasTable[w32hash].recno=recno;
AliasRecord[recno].win32=Win32;
}
}
FUNCTIONALIAS* ALIAS_LookupAlias(DWORD fn)
{
int index;
index=ALIAS_LocateHash(fn);
if(AliasTable[index].used==fn)
return &AliasRecord[AliasTable[index].recno];
return 0;
}

View File

@ -8,6 +8,7 @@ static char Copyright[] = "Copyright David Metcalfe, 1993";
#include "windows.h"
#include "selectors.h"
#include "alias.h"
#include "stddebug.h"
/* #define DEBUG_CARET */
#include "debug.h"
@ -94,6 +95,23 @@ static void CARET_HideCaret()
ReleaseDC(Caret.hwnd, hdc);
}
/*****************************************************************
* CARET_Initialize
*/
static void CARET_Initialize()
{
DWORD WineProc,Win16Proc,Win32Proc;
static int initialized=0;
if(!initialized)
{
WineProc=(DWORD)CARET_Callback;
Win16Proc=(DWORD)GetWndProcEntry16("CARET_Callback");
Win32Proc=(DWORD)RELAY32_GetEntryPoint("WINPROCS32","CARET_Callback",0);
ALIAS_RegisterAlias(WineProc,Win16Proc,Win32Proc);
initialized=1;
}
}
/*****************************************************************
* CreateCaret (USER.163)
@ -133,6 +151,8 @@ void CreateCaret(HWND hwnd, HBITMAP bitmap, short width, short height)
Caret.timeout = 750;
LockCaret = FALSE;
CARET_Initialize();
Caret.timerid = SetSystemTimer( (HWND)0, 0, Caret.timeout,
(FARPROC)GetWndProcEntry16("CARET_Callback"));
@ -220,6 +240,8 @@ void SetCaretBlinkTime(WORD msecs)
{
if (!Caret.hwnd) return;
CARET_Initialize();
KillSystemTimer( (HWND)0, Caret.timerid);
Caret.timeout = msecs;
Caret.timerid = SetSystemTimer( (HWND)0, 0, Caret.timeout,

View File

@ -1,7 +1,7 @@
/*
* WINE
static char Copyright[] = "Copyright Martin Ayotte, 1993";
*/
*/
#include <stdio.h>
#include <stdlib.h>
@ -12,35 +12,40 @@ static char Copyright[] = "Copyright Martin Ayotte, 1993";
#include <unistd.h>
#include <X11/cursorfont.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "windows.h"
#include "win.h"
#include "gdi.h"
#include "neexe.h"
#include "wine.h"
#include "callback.h"
#include "cursor.h"
#include "resource.h"
#include "stddebug.h"
#include "debug.h"
#include "arch.h"
#include "bitmap.h"
static int ShowCursCount = 0;
static HCURSOR hActiveCursor;
static HCURSOR hEmptyCursor = 0;
RECT ClipCursorRect;
static struct { SEGPTR name; HCURSOR cursor; } system_cursor[] =
static struct {
SEGPTR name; HCURSOR cursor; unsigned int shape;
} system_cursor[] =
{
{ IDC_ARROW, 0 },
{ IDC_IBEAM, 0 },
{ IDC_WAIT, 0 },
{ IDC_CROSS, 0 },
{ IDC_UPARROW, 0 },
{ IDC_SIZE, 0 },
{ IDC_ICON, 0 },
{ IDC_SIZENWSE, 0 },
{ IDC_SIZENESW, 0 },
{ IDC_SIZEWE, 0 },
{ IDC_SIZENS, 0 }
{ IDC_ARROW, 0, XC_top_left_arrow},
{ IDC_IBEAM, 0, XC_xterm },
{ IDC_WAIT, 0, XC_watch },
{ IDC_CROSS, 0, XC_crosshair },
{ IDC_UPARROW, 0, XC_based_arrow_up },
{ IDC_SIZE, 0, XC_bottom_right_corner },
{ IDC_ICON, 0, XC_icon },
{ IDC_SIZENWSE, 0, XC_fleur },
{ IDC_SIZENESW, 0, XC_fleur },
{ IDC_SIZEWE, 0, XC_sb_h_double_arrow },
{ IDC_SIZENS, 0, XC_sb_v_double_arrow }
};
#define NB_SYS_CURSORS (sizeof(system_cursor)/sizeof(system_cursor[0]))
@ -54,13 +59,13 @@ HCURSOR LoadCursor(HANDLE instance, SEGPTR cursor_name)
HCURSOR hCursor;
HRSRC hRsrc;
HANDLE rsc_mem;
WORD *lp;
char *lpbits;
LONG *lpl,size;
CURSORDESCRIP *lpcurdesc;
CURSORALLOC *lpcur;
HDC hdc;
CURSORALLOC *lpcur;
CURSORDIR *lpcurdir;
CURSORDESCRIP curdesc;
POINT hotspot;
int i;
unsigned char *cp1,*cp2;
dprintf_resource(stddeb,"LoadCursor: instance = %04x, name = %08lx\n",
instance, cursor_name);
if (!instance)
@ -68,116 +73,69 @@ HCURSOR LoadCursor(HANDLE instance, SEGPTR cursor_name)
for (i = 0; i < NB_SYS_CURSORS; i++)
if (system_cursor[i].name == cursor_name)
{
if (system_cursor[i].cursor) return system_cursor[i].cursor;
else break;
if (!system_cursor[i].cursor)
{
hCursor = GlobalAlloc (GMEM_MOVEABLE, sizeof (Cursor));
dprintf_cursor(stddeb,"LoadCursor Alloc hCursor=%X\n", hCursor);
system_cursor[i].cursor = hCursor;
lpcur = (CURSORALLOC *) GlobalLock(hCursor);
lpcur->xcursor = XCreateFontCursor(display, system_cursor[i].shape);
GlobalUnlock(hCursor);
}
return system_cursor[i].cursor;
}
if (i == NB_SYS_CURSORS) return 0;
}
hCursor = GlobalAlloc(GMEM_MOVEABLE, sizeof(CURSORALLOC) + 1024L);
if (hCursor == (HCURSOR)NULL) return 0;
if (!instance) system_cursor[i].cursor = hCursor;
dprintf_cursor(stddeb,"LoadCursor Alloc hCursor=%X\n", hCursor);
lpcur = (CURSORALLOC *)GlobalLock(hCursor);
memset(lpcur, 0, sizeof(CURSORALLOC));
if (instance == (HANDLE)NULL) {
switch((LONG)cursor_name) {
case IDC_ARROW:
lpcur->xcursor = XCreateFontCursor(display, XC_top_left_arrow);
GlobalUnlock(hCursor);
return hCursor;
case IDC_CROSS:
lpcur->xcursor = XCreateFontCursor(display, XC_crosshair);
GlobalUnlock(hCursor);
return hCursor;
case IDC_IBEAM:
lpcur->xcursor = XCreateFontCursor(display, XC_xterm);
GlobalUnlock(hCursor);
return hCursor;
case IDC_WAIT:
lpcur->xcursor = XCreateFontCursor(display, XC_watch);
GlobalUnlock(hCursor);
return hCursor;
case IDC_SIZENS:
lpcur->xcursor = XCreateFontCursor(display, XC_sb_v_double_arrow);
GlobalUnlock(hCursor);
return hCursor;
case IDC_SIZEWE:
lpcur->xcursor = XCreateFontCursor(display, XC_sb_h_double_arrow);
GlobalUnlock(hCursor);
return hCursor;
case IDC_SIZENWSE:
case IDC_SIZENESW:
lpcur->xcursor = XCreateFontCursor(display, XC_fleur);
GlobalUnlock(hCursor);
return hCursor;
default:
break;
}
}
#if 0
/* this code replaces all bitmap cursors with the default cursor */
lpcur->xcursor = XCreateFontCursor(display, XC_top_left_arrow);
GlobalUnlock(hCursor);
return hCursor;
#endif
if (!(hdc = GetDC(0))) return 0;
if (!(hRsrc = FindResource( instance, cursor_name, RT_GROUP_CURSOR )))
{
ReleaseDC(0, hdc);
return 0;
}
if (!(hRsrc = FindResource( instance, cursor_name, RT_GROUP_CURSOR )))
return 0;
rsc_mem = LoadResource(instance, hRsrc );
if (rsc_mem == (HANDLE)NULL) {
fprintf(stderr,"LoadCursor / Cursor %08lx not Found !\n", cursor_name);
ReleaseDC(0, hdc);
return 0;
}
lp = (WORD *)LockResource(rsc_mem);
if (lp == NULL) {
FreeResource( rsc_mem );
ReleaseDC(0, hdc);
return 0;
}
lpcurdesc = (CURSORDESCRIP *)(lp + 3);
#if 0
dprintf_cursor(stddeb,"LoadCursor / curReserved=%X\n", *lp);
dprintf_cursor(stddeb,"LoadCursor / curResourceType=%X\n", *(lp + 1));
dprintf_cursor(stddeb,"LoadCursor / curResourceCount=%X\n", *(lp + 2));
dprintf_cursor(stddeb,"LoadCursor / cursor Width=%d\n",
(int)lpcurdesc->Width);
dprintf_cursor(stddeb,"LoadCursor / cursor Height=%d\n",
(int)lpcurdesc->Height);
dprintf_cursor(stddeb,"LoadCursor / cursor curXHotspot=%d\n",
(int)lpcurdesc->curXHotspot);
dprintf_cursor(stddeb,"LoadCursor / cursor curYHotspot=%d\n",
(int)lpcurdesc->curYHotspot);
dprintf_cursor(stddeb,"LoadCursor / cursor curDIBSize=%lX\n",
(DWORD)lpcurdesc->curDIBSize);
dprintf_cursor(stddeb,"LoadCursor / cursor curDIBOffset=%lX\n",
(DWORD)lpcurdesc->curDIBOffset);
#endif
lpcur->descriptor = *lpcurdesc;
FreeResource( rsc_mem );
if (!(hRsrc = FindResource( instance,
MAKEINTRESOURCE(lpcurdesc->curDIBOffset),
RT_CURSOR )))
{
ReleaseDC(0, hdc);
fprintf(stderr,"LoadCursor / Cursor %08lx not Found !\n", cursor_name);
return 0;
}
lpcurdir = (CURSORDIR *)LockResource(rsc_mem);
if (lpcurdir == NULL) {
FreeResource( rsc_mem );
return 0;
}
curdesc = *(CURSORDESCRIP *)(lpcurdir + 1); /* CONV_CURDESC ? */
#if 0
dprintf_cursor(stddeb,"LoadCursor / curReserved=%X\n", lpcurdir->cdReserved);
dprintf_cursor(stddeb,"LoadCursor / curResourceType=%X\n", lpcurdir->cdType);
dprintf_cursor(stddeb,"LoadCursor / curResourceCount=%X\n", lpcurdir->cdCount);
dprintf_cursor(stddeb,"LoadCursor / cursor Width=%d\n",
(int)curdesc.Width);
dprintf_cursor(stddeb,"LoadCursor / cursor Height=%d\n",
(int)curdesc.Height);
dprintf_cursor(stddeb,"LoadCursor / cursor curDIBSize=%lX\n",
(DWORD)curdesc.curDIBSize);
dprintf_cursor(stddeb,"LoadCursor / cursor curDIBOffset=%lX\n",
(DWORD)curdesc.curDIBOffset);
#endif
FreeResource( rsc_mem );
if (!(hRsrc = FindResource( instance,
MAKEINTRESOURCE(curdesc.curDIBOffset),
RT_CURSOR )))
return 0;
rsc_mem = LoadResource(instance, hRsrc );
if (rsc_mem == (HANDLE)NULL) {
fprintf(stderr,
"LoadCursor / Cursor %08lx Bitmap not Found !\n", cursor_name);
ReleaseDC(0, hdc);
return 0;
}
lpl = (LONG *) LockResource(rsc_mem);
if (lpl == NULL) {
FreeResource( rsc_mem );
return 0;
}
lpl = (LONG *)LockResource(rsc_mem);
lpl++;
hotspot = *(POINT *) lpl++; /* CONV_POINT ? */
size = CONV_LONG (*lpl);
#if 0
if (!(hdc = GetDC(0))) {
FreeResource( rsc_mem );
return 0;
}
if (size == sizeof(BITMAPCOREHEADER)){
CONV_BITMAPCOREHEADER (lpl);
((BITMAPINFOHEADER *)lpl)->biHeight /= 2;
@ -190,40 +148,32 @@ HCURSOR LoadCursor(HANDLE instance, SEGPTR cursor_name)
fprintf(stderr,"No bitmap for cursor?\n");
lpcur->hBitmap = 0;
}
lpl = (LONG *)((char *)lpl + size + 8);
/* This is rather strange! The data is stored *BACKWARDS* and */
/* mirrored! But why?? FIXME: the image must be flipped at the Y */
/* axis, either here or in CreateCusor(); */
size = lpcur->descriptor.Height/2 * ((lpcur->descriptor.Width+7)/8);
#if 0
dprintf_cursor(stddeb,"Before:\n");
for(i=0;i<2*size;i++) {
dprintf_cursor(stddeb,"%02x ",((unsigned char *)lpl)[i]);
if ((i & 7) == 7) dprintf_cursor(stddeb,"\n");
}
#endif
cp1 = (char *)lpl;
cp2 = cp1+2*size;
for(i = 0; i < size; i++) {
char tmp=*--cp2;
*cp2 = *cp1;
*cp1++ = tmp;
}
#if 0
dprintf_cursor(stddeb,"After:\n");
for(i=0;i<2*size;i++) {
dprintf_cursor(stddeb,"%02x ",((unsigned char *)lpl)[i]);
if ((i & 7) == 7) dprintf_cursor(stddeb,"\n");
}
#endif
hCursor = CreateCursor(instance, lpcur->descriptor.curXHotspot,
lpcur->descriptor.curYHotspot, lpcur->descriptor.Width,
lpcur->descriptor.Height/2,
(LPSTR)lpl, ((LPSTR)lpl)+size);
FreeResource( rsc_mem );
GlobalUnlock(hCursor);
ReleaseDC(0,hdc);
#endif
if (size == sizeof(BITMAPCOREHEADER))
lpbits = (char *)lpl + sizeof(BITMAPCOREHEADER) + 2*sizeof(RGBTRIPLE);
else if (size == sizeof(BITMAPINFOHEADER))
lpbits = (char *)lpl + sizeof(BITMAPINFOHEADER) + 2*sizeof(RGBQUAD);
else {
fprintf(stderr,"Invalid bitmap in cursor resource\n");
FreeResource(rsc_mem);
return 0;
}
/* The height of the cursor is the height of the XOR-Bitmap
* plus the height of the AND-Bitmap, so divide it by two.
*/
size = curdesc.Height/2 * ((curdesc.Width+31)/32 * 4);
#if 0
dprintf_cursor(stddeb,"Bitmap:\n");
for(i=0;i<2*size;i++) {
dprintf_cursor(stddeb,"%02x ",(unsigned char) lpc[i]);
if ((i & 7) == 7) dprintf_cursor(stddeb,"\n");
}
#endif
hCursor = CreateCursor(instance, hotspot.x, hotspot.y,
curdesc.Width, curdesc.Height / 2,
lpbits+size, lpbits);
FreeResource( rsc_mem );
return hCursor;
}
@ -252,51 +202,71 @@ HANDLE CreateCursorIconIndirect(HANDLE hInstance, LPCURSORICONINFO lpInfo,
HCURSOR CreateCursor(HANDLE instance, short nXhotspot, short nYhotspot,
short nWidth, short nHeight, LPSTR lpANDbitPlane, LPSTR lpXORbitPlane)
{
HCURSOR hCursor;
CURSORALLOC *lpcur;
HDC hdc;
int bpllen = (nWidth + 7)/8 * nHeight;
char *tmpbpl = malloc(bpllen);
int i;
HCURSOR hCursor;
CURSORALLOC *lpcur;
int bpl = (nWidth + 31)/32 * 4;
char *tmpbits = malloc(bpl * nHeight);
char *src, *dst;
int i;
XImage *image;
Pixmap pixshape, pixmask;
extern void _XInitImageFuncPtrs( XImage* );
XColor bkcolor,fgcolor;
Colormap cmap = XDefaultColormap(display,XDefaultScreen(display));
dprintf_resource(stddeb,"CreateCursor: inst=%04x nXhotspot=%d nYhotspot=%d nWidth=%d nHeight=%d\n",
dprintf_resource(stddeb, "CreateCursor: inst=%04x nXhotspot=%d nYhotspot=%d nWidth=%d nHeight=%d\n",
instance, nXhotspot, nYhotspot, nWidth, nHeight);
dprintf_resource(stddeb,"CreateCursor: inst=%04x lpANDbitPlane=%p lpXORbitPlane=%p\n",
instance, lpANDbitPlane, lpXORbitPlane);
if (!(hdc = GetDC(GetDesktopWindow()))) return 0;
hCursor = GlobalAlloc(GMEM_MOVEABLE, sizeof(CURSORALLOC) + 1024L);
if (hCursor == (HCURSOR)NULL) {
ReleaseDC(GetDesktopWindow(), hdc);
image = XCreateImage( display, DefaultVisualOfScreen(screen),
1, ZPixmap, 0, tmpbits,
nWidth, nHeight, 32, bpl );
if (!image) {
free (tmpbits);
return 0;
}
}
image->byte_order = MSBFirst;
image->bitmap_bit_order = MSBFirst;
image->bitmap_unit = 16;
_XInitImageFuncPtrs(image);
hCursor = GlobalAlloc(GMEM_MOVEABLE, sizeof(Cursor));
if (hCursor == (HCURSOR)NULL) {
XDestroyImage(image);
return 0;
}
dprintf_cursor(stddeb,"CreateCursor Alloc hCursor=%X\n", hCursor);
lpcur = (CURSORALLOC *)GlobalLock(hCursor);
memset(lpcur, 0, sizeof(CURSORALLOC));
lpcur->descriptor.curXHotspot = nXhotspot;
lpcur->descriptor.curYHotspot = nYhotspot;
for(i=0; i<bpllen; i++) tmpbpl[i] = ~lpANDbitPlane[i];
lpcur->pixmask = XCreatePixmapFromBitmapData(
display, DefaultRootWindow(display),
tmpbpl, nWidth, nHeight, 1, 0, 1);
for(i=0; i<bpllen; i++) tmpbpl[i] ^= lpXORbitPlane[i];
lpcur->pixshape = XCreatePixmapFromBitmapData(
display, DefaultRootWindow(display),
tmpbpl, nWidth, nHeight, 1, 0, 1);
for(src=lpANDbitPlane, dst=tmpbits+(nHeight-1)*bpl;
dst>=tmpbits; src+=bpl, dst-=bpl)
for(i=0; i<bpl; i++)
dst[i] = ~src[i];
pixmask = XCreatePixmap(display, DefaultRootWindow(display),
nWidth, nHeight, 1);
CallTo32_LargeStack(XPutImage, 10,
display, pixmask, BITMAP_monoGC, image,
0, 0, 0, 0, nWidth, nHeight );
for(src=lpXORbitPlane, dst=tmpbits+(nHeight-1)*bpl;
dst>=tmpbits; src+=bpl, dst-=bpl)
for(i=0; i<bpl; i++)
dst[i] = ~src[i];
pixshape = XCreatePixmap(display, DefaultRootWindow(display),
nWidth, nHeight, 1);
CallTo32_LargeStack(XPutImage, 10,
display, pixshape, BITMAP_monoGC, image,
0, 0, 0, 0, nWidth, nHeight );
XParseColor(display,cmap,"#000000",&fgcolor);
XParseColor(display,cmap,"#ffffff",&bkcolor);
lpcur->xcursor = XCreatePixmapCursor(display,
lpcur->pixshape, lpcur->pixmask,
&fgcolor, &bkcolor, lpcur->descriptor.curXHotspot,
lpcur->descriptor.curYHotspot);
free(tmpbpl);
XFreePixmap(display, lpcur->pixshape);
XFreePixmap(display, lpcur->pixmask);
ReleaseDC(GetDesktopWindow(), hdc);
lpcur->xcursor = XCreatePixmapCursor(display, pixshape, pixmask,
&fgcolor, &bkcolor, nXhotspot, nYhotspot);
XFreePixmap(display, pixshape);
XFreePixmap(display, pixmask);
GlobalUnlock(hCursor);
XDestroyImage(image);
return hCursor;
}
@ -315,7 +285,7 @@ BOOL DestroyCursor(HCURSOR hCursor)
if (system_cursor[i].cursor == hCursor) return TRUE;
}
lpcur = (CURSORALLOC *)GlobalLock(hCursor);
if (lpcur->hBitmap != (HBITMAP)NULL) DeleteObject(lpcur->hBitmap);
XFreeCursor (display, lpcur->xcursor);
GlobalUnlock(hCursor);
GlobalFree(hCursor);
return TRUE;
@ -429,7 +399,7 @@ int ShowCursor(BOOL bShow)
{
if (!hEmptyCursor)
hEmptyCursor = CreateCursor( 0, 1, 1, 1, 1,
"\xFF\xFF", "\xFF\xFF" );
"\xFF\xFF\xFF\xFF", "\xFF\xFF\xFF\xFF" );
CURSOR_SetCursor( hEmptyCursor );
}
}

View File

@ -78,42 +78,36 @@ HWND DIALOG_GetFirstTabItem( HWND hwndDlg )
* Return the class and text of the control pointed to by ptr,
* and return a pointer to the next control.
*/
static DLGCONTROLHEADER * DIALOG_GetControl( DLGCONTROLHEADER * ptr,
char ** class, char ** text )
static SEGPTR DIALOG_GetControl( SEGPTR ptr, SEGPTR *class, SEGPTR *text )
{
unsigned char * p = (unsigned char *)ptr;
unsigned char *base = (unsigned char *)PTR_SEG_TO_LIN( ptr );
unsigned char *p = base;
p += 14; /* size of control header */
if (*p & 0x80)
{
switch(*p++)
{
case 0x80: *class = "BUTTON"; break;
case 0x81: *class = "EDIT"; break;
case 0x82: *class = "STATIC"; break;
case 0x83: *class = "LISTBOX"; break;
case 0x84: *class = "SCROLLBAR"; break;
case 0x85: *class = "COMBOBOX"; break;
default: *class = ""; break;
}
*class = MAKEINTRESOURCE( *p );
p++;
}
else
{
*class = p;
*class = ptr + (WORD)(p - base);
p += strlen(p) + 1;
}
if (*p == 0xff)
{
/* Integer id, not documented (?). Only works for SS_ICON controls */
*text = (char *)MAKEINTRESOURCE( p[1] + 256*p[2] );
*text = MAKEINTRESOURCE( p[1] + 256 * p[2] );
p += 4;
}
else
{
*text = p;
*text = ptr + (WORD)(p - base);
p += strlen(p) + 2;
}
return (DLGCONTROLHEADER *)p;
return ptr + (WORD)(p - base);
}
@ -123,32 +117,54 @@ static DLGCONTROLHEADER * DIALOG_GetControl( DLGCONTROLHEADER * ptr,
* Fill a DLGTEMPLATE structure from the dialog template, and return
* a pointer to the first control.
*/
static DLGCONTROLHEADER * DIALOG_ParseTemplate( LPCSTR template,
DLGTEMPLATE * result )
static SEGPTR DIALOG_ParseTemplate( SEGPTR template, DLGTEMPLATE * result )
{
unsigned char * p = (unsigned char *)template;
unsigned char *base = (unsigned char *)PTR_SEG_TO_LIN(template);
unsigned char * p = base;
result->header = (DLGTEMPLATEHEADER *)p;
result->header = *(DLGTEMPLATEHEADER *)p;
p += 13;
result->menuName = p;
if (*p == 0xff) p += 3;
else p += strlen(p) + 1;
/* Get the menu name */
if (*p) result->className = p;
else result->className = DIALOG_CLASS_NAME;
p += strlen(p) + 1;
result->caption = p;
p += strlen(p) + 1;
if (result->header->style & DS_SETFONT)
if (*p == 0xff)
{
result->pointSize = *(WORD *)p; p += sizeof(WORD);
result->faceName = p; p += strlen(p) + 1;
result->menuName = MAKEINTRESOURCE( p[1] + 256 * p[2] );
p += 3;
}
else if (*p)
{
result->menuName = template + (WORD)(p - base);
p += strlen(p) + 1;
}
else
{
result->menuName = 0;
p++;
}
return (DLGCONTROLHEADER *)p;
/* Get the class name */
if (*p) result->className = template + (WORD)(p - base);
else result->className = DIALOG_CLASS_ATOM;
p += strlen(p) + 1;
/* Get the window caption */
result->caption = template + (WORD)(p - base);
p += strlen(p) + 1;
/* Get the font name */
if (result->header.style & DS_SETFONT)
{
result->pointSize = *(WORD *)p;
p += sizeof(WORD);
result->faceName = template + (WORD)(p - base);
p += strlen(p) + 1;
}
return template + (WORD)(p - base);
}
@ -157,17 +173,27 @@ static DLGCONTROLHEADER * DIALOG_ParseTemplate( LPCSTR template,
*/
static void DIALOG_DisplayTemplate( DLGTEMPLATE * result )
{
dprintf_dialog(stddeb, "DIALOG %d, %d, %d, %d\n", result->header->x, result->header->y,
result->header->cx, result->header->cy );
dprintf_dialog(stddeb, " STYLE %08lx\n", result->header->style );
dprintf_dialog(stddeb, " CAPTION '%s'\n", result->caption );
dprintf_dialog(stddeb, " CLASS '%s'\n", result->className );
if (result->menuName[0] == 0xff)
dprintf_dialog(stddeb, " MENU %d\n", result->menuName[1] + 256*result->menuName[2] );
else
dprintf_dialog(stddeb, " MENU '%s'\n", result->menuName );
if (result->header->style & DS_SETFONT)
dprintf_dialog(stddeb, " FONT %d,'%s'\n", result->pointSize, result->faceName );
dprintf_dialog(stddeb, "DIALOG %d, %d, %d, %d\n", result->header.x, result->header.y,
result->header.cx, result->header.cy );
dprintf_dialog(stddeb, " STYLE %08lx\n", result->header.style );
dprintf_dialog( stddeb, " CAPTION '%s'\n",
(char *)PTR_SEG_TO_LIN(result->caption) );
if (HIWORD(result->className))
dprintf_dialog( stddeb, " CLASS '%s'\n",
(char *)PTR_SEG_TO_LIN(result->className) );
else
dprintf_dialog( stddeb, " CLASS #%d\n", LOWORD(result->className) );
if (HIWORD(result->menuName))
dprintf_dialog( stddeb, " MENU '%s'\n",
(char *)PTR_SEG_TO_LIN(result->menuName) );
else if (LOWORD(result->menuName))
dprintf_dialog(stddeb, " MENU %04x\n", LOWORD(result->menuName) );
if (result->header.style & DS_SETFONT)
dprintf_dialog( stddeb, " FONT %d,'%s'\n", result->pointSize,
(char *)PTR_SEG_TO_LIN(result->faceName) );
}
@ -190,14 +216,14 @@ HWND CreateDialogParam( HINSTANCE hInst, SEGPTR dlgTemplate,
HWND hwnd = 0;
HRSRC hRsrc;
HGLOBAL hmem;
LPCSTR data;
SEGPTR data;
dprintf_dialog(stddeb, "CreateDialogParam: %d,%08lx,%d,%08lx,%ld\n",
hInst, dlgTemplate, owner, (DWORD)dlgProc, param );
if (!(hRsrc = FindResource( hInst, dlgTemplate, RT_DIALOG ))) return 0;
if (!(hmem = LoadResource( hInst, hRsrc ))) return 0;
if (!(data = LockResource( hmem ))) hwnd = 0;
if (!(data = WIN16_LockResource( hmem ))) hwnd = 0;
else hwnd = CreateDialogIndirectParam(hInst, data, owner, dlgProc, param);
FreeResource( hmem );
return hwnd;
@ -207,7 +233,7 @@ HWND CreateDialogParam( HINSTANCE hInst, SEGPTR dlgTemplate,
/***********************************************************************
* CreateDialogIndirect (USER.219)
*/
HWND CreateDialogIndirect( HINSTANCE hInst, LPCSTR dlgTemplate,
HWND CreateDialogIndirect( HINSTANCE hInst, SEGPTR dlgTemplate,
HWND owner, WNDPROC dlgProc )
{
return CreateDialogIndirectParam( hInst, dlgTemplate, owner, dlgProc, 0 );
@ -217,17 +243,17 @@ HWND CreateDialogIndirect( HINSTANCE hInst, LPCSTR dlgTemplate,
/***********************************************************************
* CreateDialogIndirectParam (USER.242)
*/
HWND CreateDialogIndirectParam( HINSTANCE hInst, LPCSTR dlgTemplate,
HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate,
HWND owner, WNDPROC dlgProc, LPARAM param )
{
HMENU hMenu;
HMENU hMenu = 0;
HFONT hFont = 0;
HWND hwnd, hwndCtrl;
RECT rect;
WND * wndPtr;
int i;
DLGTEMPLATE template;
DLGCONTROLHEADER * header;
SEGPTR headerPtr;
DIALOGINFO * dlgInfo;
DWORD exStyle = 0;
WORD xUnit = xBaseUnit;
@ -236,40 +262,23 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, LPCSTR dlgTemplate,
/* Parse dialog template */
if (!dlgTemplate) return 0;
header = DIALOG_ParseTemplate( dlgTemplate, &template );
if(debugging_dialog)DIALOG_DisplayTemplate( &template );
headerPtr = DIALOG_ParseTemplate( dlgTemplate, &template );
if (debugging_dialog) DIALOG_DisplayTemplate( &template );
/* Load menu */
switch (template.menuName[0])
{
case 0x00:
hMenu = 0;
break;
case 0xff:
hMenu = LoadMenu( hInst, MAKEINTRESOURCE( template.menuName[1] +
256*template.menuName[2] ));
break;
default:
{
/* Need to copy the menu name to a 16-bit accessible area */
char name[256];
strncpy( name, template.menuName, 255 );
name[255] = '\0';
hMenu = LoadMenu( hInst, MAKE_SEGPTR(name) );
}
break;
}
if (template.menuName) hMenu = LoadMenu( hInst, template.menuName );
/* Create custom font if needed */
if (template.header->style & DS_SETFONT)
if (template.header.style & DS_SETFONT)
{
/* The font height must be negative as it is a point size */
/* (see CreateFont() documentation in the Windows SDK). */
hFont = CreateFont( -template.pointSize, 0, 0, 0, FW_DONTCARE,
FALSE, FALSE, FALSE, DEFAULT_CHARSET, 0, 0,
DEFAULT_QUALITY, FF_DONTCARE, template.faceName );
DEFAULT_QUALITY, FF_DONTCARE,
(LPSTR)PTR_SEG_TO_LIN(template.faceName) );
if (hFont)
{
TEXTMETRIC tm;
@ -291,18 +300,26 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, LPCSTR dlgTemplate,
/* Create dialog main window */
rect.left = rect.top = 0;
if (!(template.header->style & DS_ABSALIGN))
ClientToScreen( owner, (POINT *)&rect );
rect.right = rect.left + template.header->cx * xUnit / 4;
rect.bottom = rect.top + template.header->cy * yUnit / 8;
if (template.header->style & DS_MODALFRAME) exStyle |= WS_EX_DLGMODALFRAME;
AdjustWindowRectEx( &rect, template.header->style, hMenu, exStyle );
rect.right = template.header.cx * xUnit / 4;
rect.bottom = template.header.cy * yUnit / 8;
if (template.header.style & DS_MODALFRAME) exStyle |= WS_EX_DLGMODALFRAME;
AdjustWindowRectEx( &rect, template.header.style, hMenu, exStyle );
rect.right -= rect.left;
rect.bottom -= rect.top;
hwnd = CreateWindowEx( exStyle, template.className, template.caption,
template.header->style & ~WS_VISIBLE,
rect.left + template.header->x * xUnit / 4,
rect.top + template.header->y * yUnit / 8,
rect.right - rect.left, rect.bottom - rect.top,
if ((INT)template.header.x == CW_USEDEFAULT)
rect.left = rect.top = CW_USEDEFAULT;
else
{
rect.left += template.header.x * xUnit / 4;
rect.top += template.header.y * yUnit / 8;
if (!(template.header.style & DS_ABSALIGN))
ClientToScreen( owner, (POINT *)&rect );
}
hwnd = CreateWindowEx( exStyle, template.className, template.caption,
template.header.style & ~WS_VISIBLE,
rect.left, rect.top, rect.right, rect.bottom,
owner, hMenu, hInst, (SEGPTR)0 );
if (!hwnd)
{
@ -320,48 +337,76 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, LPCSTR dlgTemplate,
dlgInfo->msgResult = 0; /* This is used to store the default button id */
dlgInfo->hDialogHeap = 0;
for (i = 0; i < template.header->nbItems; i++)
for (i = 0; i < template.header.nbItems; i++)
{
DLGCONTROLHEADER * next_header;
LPSTR class, text;
DLGCONTROLHEADER *header;
SEGPTR className, winName;
HWND hwndDefButton = 0;
next_header = DIALOG_GetControl( header, &class, &text );
char buffer[10];
header = (DLGCONTROLHEADER *)PTR_SEG_TO_LIN( headerPtr );
headerPtr = DIALOG_GetControl( headerPtr, &className, &winName );
if (!HIWORD(className))
{
switch(LOWORD(className))
{
case 0x80: strcpy( buffer, "BUTTON" ); break;
case 0x81: strcpy( buffer, "EDIT" ); break;
case 0x82: strcpy( buffer, "STATIC" ); break;
case 0x83: strcpy( buffer, "LISTBOX" ); break;
case 0x84: strcpy( buffer, "SCROLLBAR" ); break;
case 0x85: strcpy( buffer, "COMBOBOX" ); break;
default: buffer[0] = '\0'; break;
}
className = MAKE_SEGPTR(buffer);
}
if (HIWORD(className))
dprintf_dialog(stddeb, " %s ", (char*)PTR_SEG_TO_LIN(className));
else dprintf_dialog(stddeb, " %04x ", LOWORD(className) );
if (HIWORD(winName))
dprintf_dialog(stddeb,"'%s'", (char *)PTR_SEG_TO_LIN(winName) );
else dprintf_dialog(stddeb,"%04x", LOWORD(winName) );
dprintf_dialog(stddeb, " %s ", class);
if ((int)text & 0xffff0000)
dprintf_dialog(stddeb,"'%s'", text);
else
dprintf_dialog(stddeb,"%4X", (int)text & 0xffff);
dprintf_dialog(stddeb," %d, %d, %d, %d, %d, %08lx\n",
header->id, header->x, header->y,
header->cx, header->cy, header->style );
header->id, header->x, header->y,
header->cx, header->cy, header->style );
if ((strcmp(class, "EDIT") == 0) &&
((header->style & DS_LOCALEDIT) != DS_LOCALEDIT)) {
if (!dlgInfo->hDialogHeap) {
if (HIWORD(className) &&
!strcmp( (char *)PTR_SEG_TO_LIN(className), "EDIT") &&
((header->style & DS_LOCALEDIT) != DS_LOCALEDIT))
{
if (!dlgInfo->hDialogHeap)
{
dlgInfo->hDialogHeap = GlobalAlloc(GMEM_FIXED, 0x10000);
if (!dlgInfo->hDialogHeap) {
if (!dlgInfo->hDialogHeap)
{
fprintf(stderr,"CreateDialogIndirectParam: Insufficient memory to create heap for edit control\n");
continue;
}
LocalInit(dlgInfo->hDialogHeap, 0, 0xffff);
}
header->style |= WS_CHILD;
hwndCtrl = CreateWindowEx( WS_EX_NOPARENTNOTIFY,
class, text, header->style,
header->x * xUnit / 4, header->y * yUnit / 8,
header->cx * xUnit / 4, header->cy * yUnit / 8,
hwnd, header->id, dlgInfo->hDialogHeap, (SEGPTR)0 );
hwndCtrl = CreateWindowEx(WS_EX_NOPARENTNOTIFY, className, winName,
header->style | WS_CHILD,
header->x * xUnit / 4,
header->y * yUnit / 8,
header->cx * xUnit / 4,
header->cy * yUnit / 8,
hwnd, header->id, dlgInfo->hDialogHeap,
(SEGPTR)0 );
}
else
{
header->style |= WS_CHILD;
hwndCtrl = CreateWindowEx( WS_EX_NOPARENTNOTIFY,
class, text, header->style,
header->x * xUnit / 4, header->y * yUnit / 8,
header->cx * xUnit / 4, header->cy * yUnit / 8,
hwnd, header->id, hInst, (SEGPTR)0 );
hwndCtrl = CreateWindowEx(WS_EX_NOPARENTNOTIFY, className, winName,
header->style | WS_CHILD,
header->x * xUnit / 4,
header->y * yUnit / 8,
header->cx * xUnit / 4,
header->cy * yUnit / 8,
hwnd, header->id, hInst, (SEGPTR)0 );
}
/* Make the control last one in Z-order, so that controls remain
in the order in which they were created */
SetWindowPos( hwndCtrl, HWND_BOTTOM, 0, 0, 0, 0,
@ -376,9 +421,8 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, LPCSTR dlgTemplate,
if (hwndDefButton)
SendMessage( hwndDefButton, BM_SETSTYLE, BS_PUSHBUTTON, FALSE);
hwndDefButton = hwndCtrl;
dlgInfo->msgResult = header->id;
dlgInfo->msgResult = GetWindowWord( hwndCtrl, GWW_ID );
}
header = next_header;
}
dprintf_dialog(stddeb, " END\n" );
@ -398,7 +442,7 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, LPCSTR dlgTemplate,
SendMessage( hwnd, WM_SETFONT, dlgInfo->hUserFont, 0 );
if (SendMessage( hwnd, WM_INITDIALOG, dlgInfo->hwndFocus, param ))
SetFocus( dlgInfo->hwndFocus );
if (template.header->style & WS_VISIBLE) ShowWindow(hwnd, SW_SHOW);
if (template.header.style & WS_VISIBLE) ShowWindow(hwnd, SW_SHOW);
return hwnd;
}
@ -485,9 +529,9 @@ int DialogBoxIndirectParam( HINSTANCE hInst, HANDLE dlgTemplate,
HWND owner, WNDPROC dlgProc, LPARAM param )
{
HWND hwnd;
LPCSTR ptr;
SEGPTR ptr;
if (!(ptr = GlobalLock( dlgTemplate ))) return -1;
if (!(ptr = WIN16_GlobalLock( dlgTemplate ))) return -1;
hwnd = CreateDialogIndirectParam( hInst, ptr, owner, dlgProc, param );
GlobalUnlock( dlgTemplate );
if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
@ -495,29 +539,6 @@ int DialogBoxIndirectParam( HINSTANCE hInst, HANDLE dlgTemplate,
}
/***********************************************************************
* DialogBoxIndirectParamPtr
* like DialogBoxIndirectParam, but expects pointer to template
*/
int DialogBoxIndirectParamPtr(HINSTANCE hInst,LPCSTR dlgTemplate,
HWND owner, WNDPROC dlgProc, LPARAM param)
{
HWND hwnd;
hwnd = CreateDialogIndirectParam( hInst, dlgTemplate, owner, dlgProc, param );
if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
return -1;
}
/***********************************************************************
* DialogBoxIndirectPtr
* like DialogBoxIndirect, but expects pointer to template
*/
int DialogBoxIndirectPtr( HINSTANCE hInst, LPCSTR dlgTemplate,
HWND owner, WNDPROC dlgProc)
{
return DialogBoxIndirectParamPtr(hInst, dlgTemplate, owner, dlgProc, 0);
}
/***********************************************************************
* EndDialog (USER.88)
*/

View File

@ -107,8 +107,7 @@ HWND MDICreateChild(WND *w, MDICLIENTINFO *ci, HWND parent, LPARAM lParam )
cs->x = ci->nActiveChildren * spacing;
cs->y = ci->nActiveChildren * spacing;
hwnd = CreateWindowEx(0, PTR_SEG_TO_LIN(cs->szClass),
PTR_SEG_TO_LIN(cs->szTitle),
hwnd = CreateWindow( cs->szClass, cs->szTitle,
WS_CHILD | WS_BORDER | WS_CAPTION | WS_CLIPSIBLINGS |
WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU |
WS_THICKFRAME | WS_VISIBLE | cs->style,

View File

@ -7,8 +7,10 @@
#include "windows.h"
#include "dlgs.h"
#include "dialog.h"
#include "global.h"
#include "selectors.h"
#include "alias.h"
#include "relay32.h"
#include "../rc/sysres.h"
#include "task.h"
@ -175,15 +177,35 @@ LONG SystemMessageBoxProc(HWND hwnd, WORD message, WORD wParam, LONG lParam)
int MessageBox(HWND hWnd, LPSTR text, LPSTR title, WORD type)
{
MSGBOX mbox;
HANDLE handle;
MSGBOX mbox;
int ret;
DWORD WineProc,Win16Proc,Win32Proc;
static int initialized = 0;
mbox.title = title;
mbox.text = text;
mbox.type = type;
return DialogBoxIndirectParamPtr(GetWindowWord(hWnd, GWW_HINSTANCE),
sysres_DIALOG_MSGBOX, hWnd,
GetWndProcEntry16("SystemMessageBoxProc"),
(LONG)&mbox);
mbox.title = title;
mbox.text = text;
mbox.type = type;
if (!initialized)
{
WineProc=(DWORD)SystemMessageBoxProc;
Win16Proc=(DWORD)GetWndProcEntry16("SystemMessageBoxProc");
Win32Proc=(DWORD)RELAY32_GetEntryPoint("WINPROCS32","SystemMessageBoxProc",0);
ALIAS_RegisterAlias(WineProc,Win16Proc,Win32Proc);
initialized=1;
}
handle = GLOBAL_CreateBlock( GMEM_FIXED, sysres_DIALOG_MSGBOX.bytes,
sysres_DIALOG_MSGBOX.size, GetCurrentPDB(),
FALSE, FALSE, TRUE, NULL );
if (!handle) return 0;
ret = DialogBoxIndirectParam( GetWindowWord(hWnd, GWW_HINSTANCE),
handle, hWnd,
GetWndProcEntry16("SystemMessageBoxProc"),
(LONG)&mbox );
GLOBAL_FreeBlock( handle );
return ret;
}
/**************************************************************************

View File

@ -279,7 +279,7 @@ BOOL WIN_CreateDesktopWindow(void)
/***********************************************************************
* CreateWindow (USER.41)
*/
HWND CreateWindow( LPSTR className, LPSTR windowName,
HWND CreateWindow( SEGPTR className, SEGPTR windowName,
DWORD style, short x, short y, short width, short height,
HWND parent, HMENU menu, HANDLE instance, SEGPTR data )
{
@ -291,7 +291,7 @@ HWND CreateWindow( LPSTR className, LPSTR windowName,
/***********************************************************************
* CreateWindowEx (USER.452)
*/
HWND CreateWindowEx( DWORD exStyle, LPSTR className, LPSTR windowName,
HWND CreateWindowEx( DWORD exStyle, SEGPTR className, SEGPTR windowName,
DWORD style, short x, short y, short width, short height,
HWND parent, HMENU menu, HANDLE instance, SEGPTR data )
{
@ -300,31 +300,25 @@ HWND CreateWindowEx( DWORD exStyle, LPSTR className, LPSTR windowName,
WND *wndPtr;
POINT maxSize, maxPos, minTrack, maxTrack;
CREATESTRUCT createStruct;
HANDLE hwinName, hclassName;
int wmcreate;
XSetWindowAttributes win_attr;
/* FIXME: windowName and className should be SEGPTRs */
dprintf_win( stddeb, "CreateWindowEx: " );
if (HIWORD(windowName))
dprintf_win( stddeb, "CreateWindowEx: '%s' ", windowName );
dprintf_win( stddeb, "'%s' ", (char *)PTR_SEG_TO_LIN(windowName) );
else
dprintf_win( stddeb, "CreateWindowEx: %04x ", LOWORD(windowName) );
dprintf_win( stddeb, "%04x ", LOWORD(windowName) );
if (HIWORD(className))
dprintf_win( stddeb, "'%s' ", className );
dprintf_win( stddeb, "'%s' ", (char *)PTR_SEG_TO_LIN(className) );
else
dprintf_win( stddeb, "%04x ", LOWORD(className) );
dprintf_win(stddeb, "%08lx %08lx %d,%d %dx%d %04x %04x %04x %08lx\n",
exStyle, style, x, y, width, height,
parent, menu, instance, data);
/* 'soundrec.exe' has negative position !
Why ? For now, here a patch : */
if (HIWORD(className) && !strcmp(className, "SoundRec"))
{
if (x < 0) x = 0;
if (y < 0) y = 0;
}
if (x == CW_USEDEFAULT) x = y = 0;
if (width == CW_USEDEFAULT)
{
@ -350,15 +344,14 @@ HWND CreateWindowEx( DWORD exStyle, LPSTR className, LPSTR windowName,
}
}
if (!(class = CLASS_FindClassByName( className, GetExePtr(instance),
&classPtr )))
{
/* FIXME!! */
char buff[256];
if (HIWORD(className)) strcpy( buff, className );
if (!(class = CLASS_FindClassByName( HIWORD(className) ? MAKE_SEGPTR(buff) : (SEGPTR)className,
GetExePtr( instance ), &classPtr ))) {
fprintf(stderr,"CreateWindow BAD CLASSNAME '%s' !\n", className);
return 0;
}
fprintf(stderr,"CreateWindow BAD CLASSNAME " );
if (HIWORD(className)) fprintf( stderr, "'%s'\n",
(char *)PTR_SEG_TO_LIN(className) );
else fprintf( stderr, "%04x\n", LOWORD(className) );
return 0;
}
/* Correct the window style */
@ -395,7 +388,7 @@ HWND CreateWindowEx( DWORD exStyle, LPSTR className, LPSTR windowName,
wndPtr->hwndPrevActive = 0;
wndPtr->hwndLastActive = hwnd;
wndPtr->lpfnWndProc = classPtr->wc.lpfnWndProc;
wndPtr->dwStyle = style;
wndPtr->dwStyle = style & ~WS_VISIBLE;
wndPtr->dwExStyle = exStyle;
wndPtr->wIDmenu = 0;
wndPtr->hText = 0;
@ -462,7 +455,7 @@ HWND CreateWindowEx( DWORD exStyle, LPSTR className, LPSTR windowName,
CWEventMask | CWOverrideRedirect |
CWColormap | CWCursor | CWSaveUnder |
CWBackingStore, &win_attr );
XStoreName( display, wndPtr->window, windowName );
XStoreName( display, wndPtr->window, PTR_SEG_TO_LIN(windowName) );
EVENT_RegisterWindow( wndPtr->window, hwnd );
GlobalUnlock( hCursor );
}
@ -486,33 +479,13 @@ HWND CreateWindowEx( DWORD exStyle, LPSTR className, LPSTR windowName,
createStruct.x = x;
createStruct.y = y;
createStruct.style = style;
createStruct.lpszName = windowName;
createStruct.lpszClass = className;
createStruct.dwExStyle = 0;
if (HIWORD(className))
{
hclassName = USER_HEAP_ALLOC( strlen(className)+1 );
strcpy( USER_HEAP_LIN_ADDR(hclassName), className );
createStruct.lpszClass = (LPSTR)USER_HEAP_SEG_ADDR(hclassName);
}
else
{
hclassName = 0;
createStruct.lpszClass = className;
}
if (HIWORD(windowName))
{
hwinName = USER_HEAP_ALLOC( strlen(windowName)+1 );
strcpy( USER_HEAP_LIN_ADDR(hwinName), windowName );
createStruct.lpszName = (LPSTR)USER_HEAP_SEG_ADDR(hwinName);
}
else
{
hwinName = 0;
createStruct.lpszName = windowName;
}
wmcreate = SendMessage( hwnd, WM_NCCREATE, 0, MAKE_SEGPTR(&createStruct) );
if (!wmcreate) {
if (!wmcreate)
{
dprintf_win(stddeb,"CreateWindowEx: WM_NCCREATE return 0\n");
wmcreate = -1;
}
@ -523,9 +496,6 @@ HWND CreateWindowEx( DWORD exStyle, LPSTR className, LPSTR windowName,
wmcreate = SendMessage(hwnd, WM_CREATE, 0, MAKE_SEGPTR(&createStruct));
}
if (hclassName) USER_HEAP_FREE( hclassName );
if (hwinName) USER_HEAP_FREE( hwinName );
if (wmcreate == -1)
{
/* Abort window creation */
@ -538,9 +508,25 @@ HWND CreateWindowEx( DWORD exStyle, LPSTR className, LPSTR windowName,
if (style & WS_SYSMENU) wndPtr->hSysMenu = CopySysMenu();
WIN_SendParentNotify( hwnd, WM_CREATE, MAKELONG( hwnd, wndPtr->wIDmenu ) );
if (style & WS_VISIBLE) ShowWindow( hwnd, SW_SHOW );
/* if (style & WS_MINIMIZE) ShowWindow( hwnd, SW_MINIMIZE ); */
/* Show the window, maximizing or minimizing if needed */
if (wndPtr->dwStyle & WS_MINIMIZE)
{
wndPtr->dwStyle &= ~WS_MAXIMIZE;
WINPOS_FindIconPos( hwnd );
SetWindowPos( hwnd, 0, wndPtr->ptIconPos.x, wndPtr->ptIconPos.y,
SYSMETRICS_CXICON, SYSMETRICS_CYICON,
SWP_FRAMECHANGED |
(style & WS_VISIBLE) ? SWP_SHOWWINDOW : 0 );
}
else if (wndPtr->dwStyle & WS_MAXIMIZE)
{
SetWindowPos( hwnd, 0, maxPos.x, maxPos.y, maxSize.x, maxSize.y,
SWP_FRAMECHANGED |
(style & WS_VISIBLE) ? SWP_SHOWWINDOW : 0 );
}
else if (style & WS_VISIBLE) ShowWindow( hwnd, SW_SHOW );
dprintf_win(stddeb, "CreateWindowEx: return %04X \n", hwnd);
return hwnd;

View File

@ -24,7 +24,7 @@ static HWND hwndActive = 0; /* Currently active window */
* Find a suitable place for an iconic window.
* The new position is stored into wndPtr->ptIconPos.
*/
static void WINPOS_FindIconPos( HWND hwnd )
void WINPOS_FindIconPos( HWND hwnd )
{
RECT rectParent;
short x, y, xspacing, yspacing;