Release 970629
Thu Jun 26 02:14:03 1997 Slaven Rezic <eserte@cs.tu-berlin.de> * [Makefile.in] New target install_includes. * [rc/parser.h] [rc/parser.y] [rc/winerc.c] Some bug fixes. Wed Jun 25 14:43:41 1997 Victor Schneider <vischne@ibm.net> * [controls/edit.c] Fixed WM_GETTEXT return value. Tue Jun 24 23:46:04 1997 Michiel van Loon <mfvl@xs4all.nl> * [multimedia/*.c] [include/mmsystem.h] Added more callback code, including (I hope) function callback. Changed some linear pointers into segmented. * [multimedia/audio.c] Removed some bugs. Sat Jun 28 11:37:56 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> * [if1632/commdlg.spec][if1632/comdlg32.spec][misc/commdlg.c] [include/commdlg.h] Implemented parts of comdlg32: GetOpenFileName32*, GetSaveFileName32*, GetFileTitle32* using the 16 bit equivalents. * [windows/event.c] EVENT_QueryZOrder: check for children !=NULL (happens when using -managed). * [BUGS][DEVELOPER-HINTS] Updated. * [objects/text.c] Added GetTextCharset... (stub mostly). Sat Jun 21 08:47:58 1997 Philippe De Muyter <phdm@info.ucl.ac.be> * [if1632/kernel.spec] [if1632/gdi.spec] [include/windows.h] [loader/resource.c] [graphics/x11drv/xfont.c] SetResourceHandler & RemoveFontResource prototypes fixed. * [if1632/relay.c] [if1632/kernel.spec] [if1632/user.spec] [if1632/olesvr.spec] [if1632/commdlg.spec] [if1632/ddeml.spec] [if1632/gdi.spec] [if1632/lzexpand.spec] [if1632/shell.spec] [include/windows.h] [memory/string.c] [tools/build.c] New type of parameter allowed in .spec files : str, printed as a string with -debugmsg +relay. .spec files updated. * [objects/dc.c] In DC_SetupGCForPen, call BlackPixelOfScreen, not BlackPixel. Likewise for WhitePixel. * [objects/gdiobj.c] [graphics/x11drv/brush.c] Use BS_HATCHED with an added entry in HatchBrushes for DkGrayBrush, instead of BS_SOLID. Fri May 30 17:58:00 1997 Chris Faherty <chrisf@america.com> * [windows/keyboard.c] Added vkey to scancode translation table. This was primarily to fix Citrix WinFrame client which always needs scancodes in WM_KEYDOWN. Tested with Exceed 5.1.0.1 & XFree86 3.1.2.
This commit is contained in:
parent
23946ad264
commit
33072e1f2c
19
ANNOUNCE
19
ANNOUNCE
|
@ -1,16 +1,13 @@
|
|||
This is release 970616 of Wine, the MS Windows emulator. This is still a
|
||||
This is release 970629 of Wine, the MS Windows emulator. This is still a
|
||||
developer's only release. There are many bugs and many unimplemented API
|
||||
features. Most applications still do not work correctly.
|
||||
|
||||
Patches should be submitted to "julliard@lrc.epfl.ch". Please don't
|
||||
forget to include a ChangeLog entry.
|
||||
|
||||
WHAT'S NEW with Wine-970616: (see ChangeLog for details)
|
||||
- More improvements to multimedia code.
|
||||
- New font mapper.
|
||||
- Icon titles.
|
||||
- Print spooling.
|
||||
- Direct I/O ports access.
|
||||
WHAT'S NEW with Wine-970629: (see ChangeLog for details)
|
||||
- Start of COMDLG32 implementation.
|
||||
- Relay debugging knows about strings.
|
||||
- Lots of bug fixes.
|
||||
|
||||
See the README file in the distribution for installation instructions.
|
||||
|
@ -19,10 +16,10 @@ Because of lags created by using mirror, this message may reach you before
|
|||
the release is available at the ftp sites. The sources will be available
|
||||
from the following locations:
|
||||
|
||||
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-970616.tar.gz
|
||||
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-970616.tar.gz
|
||||
ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-970616.tar.gz
|
||||
ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-970616.tar.gz
|
||||
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-970629.tar.gz
|
||||
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-970629.tar.gz
|
||||
ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-970629.tar.gz
|
||||
ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-970629.tar.gz
|
||||
|
||||
It should also be available from any site that mirrors tsx-11 or sunsite.
|
||||
|
||||
|
|
14
BUGS
14
BUGS
|
@ -11,7 +11,7 @@ General:
|
|||
|
||||
* TrueType, .FON rasterizer.
|
||||
|
||||
* No thread/process/kernel-object support in Win32 code.
|
||||
* No thread/process scheduling support in Win32 code.
|
||||
|
||||
* Very alpha printing code. [john@division.co.uk]
|
||||
|
||||
|
@ -20,23 +20,19 @@ General:
|
|||
* No MS Video support (perhaps interface with xanim, don't hold
|
||||
your breath for this one).
|
||||
|
||||
* No COMDLG32 support. (Needed badly, the Windows95 comdlg32.dll
|
||||
doesn't work with WINE.)
|
||||
* COMDLG32 support not complete yet.
|
||||
|
||||
* No COMMCTRL/COMCTL32 support.
|
||||
|
||||
* No icon titles.
|
||||
- Windows uses a special window class to display icon titles.
|
||||
Handles to these title windows are stored in the icon window
|
||||
properties.
|
||||
|
||||
* No manual pages describing the various Windows calls.
|
||||
- You can find information about most of the Win32 API calls
|
||||
on the www.microsoft.com (go to 'search').
|
||||
|
||||
Miscellaneous:
|
||||
|
||||
* New font mapping scheme can be improved.
|
||||
* Text alignment problems in Word and Write (variable pitch fonts).
|
||||
|
||||
* Font mapper weights
|
||||
|
||||
* "Cursor XXXX has more than 1 bpp!"
|
||||
|
||||
|
|
69
ChangeLog
69
ChangeLog
|
@ -1,3 +1,72 @@
|
|||
----------------------------------------------------------------------
|
||||
Thu Jun 26 02:14:03 1997 Slaven Rezic <eserte@cs.tu-berlin.de>
|
||||
|
||||
* [Makefile.in]
|
||||
New target install_includes.
|
||||
|
||||
* [rc/parser.h] [rc/parser.y] [rc/winerc.c]
|
||||
Some bug fixes.
|
||||
|
||||
Wed Jun 25 14:43:41 1997 Victor Schneider <vischne@ibm.net>
|
||||
|
||||
* [controls/edit.c]
|
||||
Fixed WM_GETTEXT return value.
|
||||
|
||||
Tue Jun 24 23:46:04 1997 Michiel van Loon <mfvl@xs4all.nl>
|
||||
|
||||
* [multimedia/*.c] [include/mmsystem.h]
|
||||
Added more callback code, including (I hope) function callback.
|
||||
Changed some linear pointers into segmented.
|
||||
|
||||
* [multimedia/audio.c]
|
||||
Removed some bugs.
|
||||
|
||||
Sat Jun 28 11:37:56 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
|
||||
|
||||
* [if1632/commdlg.spec][if1632/comdlg32.spec][misc/commdlg.c]
|
||||
[include/commdlg.h]
|
||||
Implemented parts of comdlg32: GetOpenFileName32*,
|
||||
GetSaveFileName32*, GetFileTitle32* using the 16 bit equivalents.
|
||||
|
||||
* [windows/event.c]
|
||||
EVENT_QueryZOrder: check for children !=NULL (happens when
|
||||
using -managed).
|
||||
|
||||
* [BUGS][DEVELOPER-HINTS]
|
||||
Updated.
|
||||
|
||||
* [objects/text.c]
|
||||
Added GetTextCharset... (stub mostly).
|
||||
|
||||
Sat Jun 21 08:47:58 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
|
||||
|
||||
* [if1632/kernel.spec] [if1632/gdi.spec] [include/windows.h]
|
||||
[loader/resource.c] [graphics/x11drv/xfont.c]
|
||||
SetResourceHandler & RemoveFontResource prototypes fixed.
|
||||
|
||||
* [if1632/relay.c] [if1632/kernel.spec] [if1632/user.spec]
|
||||
[if1632/olesvr.spec] [if1632/commdlg.spec] [if1632/ddeml.spec]
|
||||
[if1632/gdi.spec] [if1632/lzexpand.spec] [if1632/shell.spec]
|
||||
[include/windows.h] [memory/string.c] [tools/build.c]
|
||||
New type of parameter allowed in .spec files : str, printed
|
||||
as a string with -debugmsg +relay. .spec files updated.
|
||||
|
||||
* [objects/dc.c]
|
||||
In DC_SetupGCForPen, call BlackPixelOfScreen, not BlackPixel.
|
||||
Likewise for WhitePixel.
|
||||
|
||||
* [objects/gdiobj.c] [graphics/x11drv/brush.c]
|
||||
Use BS_HATCHED with an added entry in HatchBrushes for DkGrayBrush,
|
||||
instead of BS_SOLID.
|
||||
|
||||
Fri May 30 17:58:00 1997 Chris Faherty <chrisf@america.com>
|
||||
|
||||
* [windows/keyboard.c]
|
||||
Added vkey to scancode translation table.
|
||||
This was primarily to fix Citrix WinFrame client which
|
||||
always needs scancodes in WM_KEYDOWN.
|
||||
Tested with Exceed 5.1.0.1 & XFree86 3.1.2.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Sat Jun 14 13:05:23 1997 Andreas Mohr <100.30936@germany.net>
|
||||
|
||||
|
|
|
@ -243,9 +243,12 @@ DEBUG_XXX's in include/stddebug.h or in a specific file.
|
|||
MORE INFO
|
||||
=========
|
||||
|
||||
1. http://www.sonic.net/~undoc/bookstore.html
|
||||
1. There is a FREE online version of the MSDN library (including
|
||||
documentation for the Win32 API) on http://www.microsoft.com/msdn/
|
||||
|
||||
2. In 1993 Dr. Dobbs Journal published a column called "Undocumented Corner".
|
||||
2. http://www.sonic.net/~undoc/bookstore.html
|
||||
|
||||
3. You might want to check out BYTE from December 1983 as well :-)
|
||||
3. In 1993 Dr. Dobbs Journal published a column called "Undocumented Corner".
|
||||
|
||||
4. You might want to check out BYTE from December 1983 as well :-)
|
||||
|
||||
|
|
13
Makefile.in
13
Makefile.in
|
@ -23,6 +23,7 @@ LDLIBS = @LDLIBS@
|
|||
AR = ar rc
|
||||
RANLIB = @RANLIB@
|
||||
RM = rm -f
|
||||
MKDIR = mkdir
|
||||
SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'OPTIONS=$(OPTIONS)'
|
||||
@SET_MAKE@
|
||||
|
||||
|
@ -37,6 +38,7 @@ bindir = @bindir@
|
|||
libdir = @libdir@
|
||||
mandir = @mandir@/man1
|
||||
manext = .1
|
||||
includedir = @includedir@/wine
|
||||
|
||||
# Main target to build
|
||||
|
||||
|
@ -118,15 +120,19 @@ libwine.a: $(COMMONSUBDIRS) $(LIBSUBDIRS) dummy
|
|||
$(AR) $@ $(COMMONOBJS) $(LIBOBJS)
|
||||
$(RANLIB) $@
|
||||
|
||||
install_libwine.a: dummy
|
||||
install_libwine.a: install_includes
|
||||
$(INSTALL_DATA) libwine.a $(libdir)
|
||||
|
||||
libwine.so.1.0: $(COMMONSUBDIRS) $(LIBSUBDIRS) dummy
|
||||
$(CC) -shared -Wl,-soname,libwine.so -o$@ $(COMMONOBJS) $(LIBOBJS) $(LDOPTIONS) $(X_LIBS) $(XPM_LIB) $(XLIB) $(LDLIBS)
|
||||
|
||||
install_libwine.so.1.0: dummy
|
||||
install_libwine.so.1.0: install_includes
|
||||
$(INSTALL_DATA) libwine.so.1.0 $(libdir)
|
||||
|
||||
install_includes: dummy
|
||||
if [ -d $(includedir) ]; then : ; else $(MKDIR) $(includedir); fi
|
||||
cd include; $(INSTALL_DATA) windows.h wintypes.h $(includedir)
|
||||
|
||||
$(ALLSUBDIRS): dummy
|
||||
@cd $@; $(SUBMAKE)
|
||||
|
||||
|
@ -143,9 +149,8 @@ etags:
|
|||
|
||||
clean:
|
||||
for i in $(ALLSUBDIRS); do (cd $$i; $(MAKE) clean) || exit 1; done
|
||||
$(RM) *.o \#*\# *~ *.bak *.orig *.rej *.flc
|
||||
for i in . include documentation; do (cd $$i; $(RM) *.o \#*\# *~ *.bak *.orig *.rej *.flc); done
|
||||
$(RM) wine wine.sym libwine.a libwine.so.1.0 TAGS
|
||||
(cd include; $(RM) *.o \#*\# *~ *.bak *.orig *.rej *.flc)
|
||||
|
||||
distclean: clean
|
||||
$(RM) config.* Make.rules include/config.h
|
||||
|
|
|
@ -3078,9 +3078,9 @@ static INT32 EDIT_WM_GetText(WND *wnd, EDITSTATE *es, INT32 count, LPSTR text)
|
|||
|
||||
if (count > len) {
|
||||
lstrcpy32A(text, es->text);
|
||||
return len + 1;
|
||||
return len;
|
||||
} else
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1731,9 +1731,12 @@ static LRESULT LISTBOX_HandleLButtonUp( WND *wnd, LB_DESCR *descr )
|
|||
if (LISTBOX_Timer != LB_TIMER_NONE)
|
||||
KillSystemTimer32( wnd->hwndSelf, LB_TIMER_ID );
|
||||
LISTBOX_Timer = LB_TIMER_NONE;
|
||||
if (GetCapture32() == wnd->hwndSelf) ReleaseCapture();
|
||||
if (descr->style & LBS_NOTIFY)
|
||||
SEND_NOTIFICATION( wnd, descr, LBN_SELCHANGE );
|
||||
if (GetCapture32() == wnd->hwndSelf)
|
||||
{
|
||||
ReleaseCapture();
|
||||
if (descr->style & LBS_NOTIFY)
|
||||
SEND_NOTIFICATION( wnd, descr, LBN_SELCHANGE );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@ How To Convert Windows Fonts
|
|||
|
||||
If you have access to Windows installation you should use
|
||||
fnt2bdf utility (found in the 'tools)' directory to convert
|
||||
bitmap fonts (SYSTEM.FON, SSERIFE.FON, and SERIFE.FON) into
|
||||
the format that X Window System can recognize.
|
||||
bitmap fonts (VGASYS.FON, SSERIFE.FON, and SERIFE.FON) into
|
||||
the format that X Window System can recognize.
|
||||
|
||||
Step 1. Extract bitmap fonts with 'fnt2bdf'.
|
||||
|
||||
|
@ -14,14 +14,25 @@ Step 2. Convert .bdf files produced by the Step 1 into
|
|||
|
||||
Step 3. Copy .pcf files to the font server directory which
|
||||
is usually /usr/lib/X11/fonts/misc (you will probably
|
||||
need superuser privileges).
|
||||
need superuser privileges). If you want to create a new
|
||||
font directory you will need to add it to the font path.
|
||||
|
||||
Step 4. Run 'mkfontdir' for the directory you copied fonts to.
|
||||
If you are already in X you should run 'xset fp rehash'
|
||||
to make X server aware of the new fonts.
|
||||
|
||||
Step 5. Edit wine.conf file to remove aliases for the fonts
|
||||
you've just installed.
|
||||
|
||||
Wine can get by without these fonts but 'the look and feel'
|
||||
will be quite different.
|
||||
will be quite different. Also, some applications try to load
|
||||
their custom fonts on the fly (WinWord 6.0) and since Wine does
|
||||
not implement this yet it instead prints out something like;
|
||||
|
||||
STUB: AddFontResource( somefile.FON )
|
||||
|
||||
You can convert this file too. Note that .FON file may not hold
|
||||
any bitmap fonts and fnt2bdf will fail if this is the case.
|
||||
|
||||
What to do with TrueType fonts? There are several commercial
|
||||
font tools that can convert them to the Type1 format but the
|
||||
|
@ -87,7 +98,9 @@ installations, however X font table starts with whatever is the first line
|
|||
in the fonts.dir. Therefore WINE uses the following entry to determine
|
||||
which font to check first.
|
||||
|
||||
Default = ...
|
||||
Example:
|
||||
|
||||
Default = -adobe-times-
|
||||
|
||||
Comments:
|
||||
It is better to have a scalable font family (bolds and italics included)
|
||||
|
|
|
@ -12,14 +12,15 @@
|
|||
#include "stddebug.h"
|
||||
#include "debug.h"
|
||||
|
||||
static const char HatchBrushes[NB_HATCH_STYLES][8] =
|
||||
static const char HatchBrushes[NB_HATCH_STYLES + 1][8] =
|
||||
{
|
||||
{ 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00 }, /* HS_HORIZONTAL */
|
||||
{ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* HS_VERTICAL */
|
||||
{ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }, /* HS_FDIAGONAL */
|
||||
{ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }, /* HS_BDIAGONAL */
|
||||
{ 0x08, 0x08, 0x08, 0xff, 0x08, 0x08, 0x08, 0x08 }, /* HS_CROSS */
|
||||
{ 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81 } /* HS_DIAGCROSS */
|
||||
{ 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81 }, /* HS_DIAGCROSS */
|
||||
{ 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb } /* Hack for DKGRAY */
|
||||
};
|
||||
|
||||
/* Levels of each primary for dithering */
|
||||
|
|
|
@ -107,20 +107,17 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags,
|
|||
|
||||
/* Compute text starting position */
|
||||
|
||||
XTextExtents( font, str, count, &dir, &ascent, &descent, &info );
|
||||
|
||||
if (lpDx) /* have explicit character cell x offsets */
|
||||
if (lpDx) /* have explicit character cell x offsets in logical coordinates */
|
||||
{
|
||||
/* sum lpDx array and add the width of last character */
|
||||
|
||||
info.width = XTextWidth( font, str + count - 1, 1) + dc->w.charExtra;
|
||||
if (str[count-1] == dfBreakChar)
|
||||
info.width += dc->w.breakExtra;
|
||||
|
||||
for (i = 0; i < count; i++) info.width += lpDx[i];
|
||||
int extra = dc->wndExtX / 2;
|
||||
for (i = info.width = 0; i < count; i++) info.width += lpDx[i];
|
||||
info.width = (info.width * dc->vportExtX + extra ) / dc->wndExtX;
|
||||
}
|
||||
else
|
||||
info.width += count*dc->w.charExtra + dc->w.breakExtra*dc->w.breakCount;
|
||||
{
|
||||
XTextExtents( font, str, count, &dir, &ascent, &descent, &info );
|
||||
info.width += count*dc->w.charExtra + dc->w.breakExtra*dc->w.breakCount;
|
||||
}
|
||||
|
||||
switch( dc->w.textAlign & (TA_LEFT | TA_RIGHT | TA_CENTER) )
|
||||
{
|
||||
|
@ -200,32 +197,50 @@ X11DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags,
|
|||
|
||||
pitem = items = xmalloc( count * sizeof(XTextItem) );
|
||||
delta = i = 0;
|
||||
while (i < count)
|
||||
{
|
||||
/* initialize text item with accumulated delta */
|
||||
if( lpDx ) /* explicit character widths */
|
||||
{
|
||||
int extra = dc->wndExtX / 2;
|
||||
|
||||
pitem->chars = (char *)str + i;
|
||||
pitem->delta = delta;
|
||||
pitem->nchars = 0;
|
||||
pitem->font = None;
|
||||
delta = 0;
|
||||
while (i < count)
|
||||
{
|
||||
/* initialize text item with accumulated delta */
|
||||
|
||||
/* stuff characters into the same XTextItem until new delta
|
||||
* becomes non-zero */
|
||||
pitem->chars = (char *)str + i;
|
||||
pitem->delta = delta;
|
||||
pitem->nchars = 0;
|
||||
pitem->font = None;
|
||||
delta = 0;
|
||||
|
||||
do
|
||||
/* add characters to the same XTextItem until new delta
|
||||
* becomes non-zero */
|
||||
|
||||
do
|
||||
{
|
||||
delta += (lpDx[i] * dc->vportExtX + extra) / dc->wndExtX
|
||||
- XTextWidth( font, str + i, 1);
|
||||
pitem->nchars++;
|
||||
} while ((++i < count) && !delta);
|
||||
pitem++;
|
||||
}
|
||||
}
|
||||
else /* charExtra or breakExtra */
|
||||
{
|
||||
while (i < count)
|
||||
{
|
||||
if (lpDx) delta += lpDx[i] - XTextWidth( font, str + i, 1);
|
||||
else
|
||||
pitem->chars = (char *)str + i;
|
||||
pitem->delta = delta;
|
||||
pitem->nchars = 0;
|
||||
pitem->font = None;
|
||||
delta = 0;
|
||||
|
||||
do
|
||||
{
|
||||
delta += dc->w.charExtra;
|
||||
if (str[i] == (char)dfBreakChar)
|
||||
delta += dc->w.breakExtra;
|
||||
}
|
||||
pitem->nchars++;
|
||||
if (str[i] == (char)dfBreakChar) delta += dc->w.breakExtra;
|
||||
pitem->nchars++;
|
||||
} while ((++i < count) && !delta);
|
||||
pitem++;
|
||||
}
|
||||
while ((++i < count) && !delta);
|
||||
pitem++;
|
||||
}
|
||||
|
||||
XDrawText( display, dc->u.x.drawable, dc->u.x.gc,
|
||||
|
|
|
@ -606,6 +606,7 @@ static void XFONT_GetTextMetric( fontObject* pfo, LPTEXTMETRIC32A pTM )
|
|||
|
||||
pTM->tmCharSet = pdf->dfCharSet;
|
||||
pTM->tmPitchAndFamily = pdf->dfPitchAndFamily;
|
||||
|
||||
pTM->tmDigitizedAspectX = pdf->dfHorizRes;
|
||||
pTM->tmDigitizedAspectY = pdf->dfVertRes;
|
||||
}
|
||||
|
@ -1147,10 +1148,10 @@ BOOL32 X11DRV_FONT_Init( DeviceCaps* pDevCaps )
|
|||
|
||||
if( !fr ) /* add new family */
|
||||
{
|
||||
if( n_ff++ > MAX_FONT_FAMILIES ) break;
|
||||
|
||||
if( n_ff >= MAX_FONT_FAMILIES ) break;
|
||||
if( !LFD_InitFontInfo( fi, lpstr) ) continue;
|
||||
|
||||
n_ff++;
|
||||
fr = (fontResource*) HeapAlloc(SystemHeap, 0, sizeof(fontResource));
|
||||
memset(fr, 0, sizeof(fontResource));
|
||||
fr->resource = (char*) HeapAlloc(SystemHeap, 0, j + 1 );
|
||||
|
@ -1318,8 +1319,11 @@ static UINT32 XFONT_Match( fontMatch* pfm )
|
|||
|
||||
pfm->flags = 0;
|
||||
|
||||
if( plf->lfCharSet != DEFAULT_CHARSET &&
|
||||
plf->lfCharSet != pfi->df.dfCharSet ) penalty += 0x200;
|
||||
if( plf->lfCharSet == DEFAULT_CHARSET )
|
||||
{
|
||||
if( (pfi->df.dfCharSet!= ANSI_CHARSET) && (pfi->df.dfCharSet!=DEFAULT_CHARSET) ) penalty += 0x200;
|
||||
}
|
||||
else if (plf->lfCharSet != pfi->df.dfCharSet) penalty += 0x200;
|
||||
|
||||
/* TMPF_FIXED_PITCH means exactly the opposite */
|
||||
|
||||
|
@ -1937,7 +1941,7 @@ BOOL32 X11DRV_GetCharWidth( DC *dc, UINT32 firstChar, UINT32 lastChar,
|
|||
cs = &xfs->per_char[(i - xfs->min_char_or_byte2)];
|
||||
if (CI_NONEXISTCHAR(cs)) cs = def;
|
||||
} else cs = def;
|
||||
*buffer++ = MAX( cs->width, 0 );
|
||||
*buffer++ = MAX(cs->width, 0 );
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
|
@ -1993,9 +1997,14 @@ INT32 AddFontResource32W( LPCWSTR str )
|
|||
/***********************************************************************
|
||||
* RemoveFontResource16 (GDI.136)
|
||||
*/
|
||||
BOOL16 RemoveFontResource16( LPCSTR str )
|
||||
BOOL16 RemoveFontResource16( SEGPTR str )
|
||||
{
|
||||
return RemoveFontResource32A( str );
|
||||
if (HIWORD(str))
|
||||
fprintf( stdnimp, "STUB: RemoveFontResource('%s')\n",
|
||||
(char *)PTR_SEG_TO_LIN( str) );
|
||||
else
|
||||
fprintf( stdnimp, "STUB: RemoveFontResource(%04x)\n", LOWORD(str) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ base 0
|
|||
0007 stub AddAce
|
||||
0008 stub AddAuditAccessAce
|
||||
0009 stub AdjustTokenGroups
|
||||
0010 stub AdjustTokenPrivileges
|
||||
0010 stdcall AdjustTokenPrivileges(long long ptr long ptr ptr) AdjustTokenPrivileges
|
||||
0011 stdcall AllocateAndInitializeSid(ptr long long long long long long long long long ptr) AllocateAndInitializeSid
|
||||
0012 stdcall AllocateLocallyUniqueId(ptr) AllocateLocallyUniqueId
|
||||
0013 stub AreAllAccessesGranted
|
||||
|
@ -94,7 +94,7 @@ base 0
|
|||
0089 stub LookupPrivilegeDisplayNameW
|
||||
0090 stub LookupPrivilegeNameA
|
||||
0091 stub LookupPrivilegeNameW
|
||||
0092 stub LookupPrivilegeValueA
|
||||
0092 stdcall LookupPrivilegeValueA(ptr ptr ptr) LookupPrivilegeValue32A
|
||||
0093 stub LookupPrivilegeValueW
|
||||
0094 stub MakeAbsoluteSD
|
||||
0095 stub MakeSelfRelativeSD
|
||||
|
|
|
@ -148,7 +148,7 @@ static BUILTIN_DLL BuiltinDLLs[] =
|
|||
/* Win32 DLLs */
|
||||
{ &ADVAPI32_Descriptor, 0 },
|
||||
{ &COMCTL32_Descriptor, DLL_FLAG_NOT_USED },
|
||||
{ &COMDLG32_Descriptor, DLL_FLAG_NOT_USED },
|
||||
{ &COMDLG32_Descriptor, 0 },
|
||||
{ &CRTDLL_Descriptor, 0 },
|
||||
{ &OLE32_Descriptor, DLL_FLAG_NOT_USED },
|
||||
{ &GDI32_Descriptor, 0 },
|
||||
|
|
|
@ -7,15 +7,15 @@ base 1
|
|||
0002 stub ChooseColorW
|
||||
0003 stub ChooseFontA
|
||||
0004 stub ChooseFontW
|
||||
0005 stub CommDlgExtendedError
|
||||
0005 stdcall CommDlgExtendedError() 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
|
||||
0008 stdcall GetFileTitleA(ptr ptr long) GetFileTitle32A
|
||||
0009 stdcall GetFileTitleW(ptr ptr long) GetFileTitle32W
|
||||
0010 stdcall GetOpenFileNameA(ptr) GetOpenFileName32A
|
||||
0011 stdcall GetOpenFileNameW(ptr) GetOpenFileName32W
|
||||
0012 stdcall GetSaveFileNameA(ptr) GetSaveFileName32A
|
||||
0013 stdcall GetSaveFileNameW(ptr) GetSaveFileName32A
|
||||
0014 stub LoadAlterBitmap
|
||||
0015 stub PageSetupDlgA
|
||||
0016 stub PageSetupDlgW
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
name commdlg
|
||||
type win16
|
||||
|
||||
1 pascal16 GetOpenFileName(segptr) GetOpenFileName
|
||||
2 pascal16 GetSaveFileName(segptr) GetSaveFileName
|
||||
1 pascal16 GetOpenFileName(segptr) GetOpenFileName16
|
||||
2 pascal16 GetSaveFileName(segptr) GetSaveFileName16
|
||||
5 pascal16 ChooseColor(ptr) ChooseColor
|
||||
6 pascal FileOpenDlgProc(word word word long) FileOpenDlgProc
|
||||
7 pascal FileSaveDlgProc(word word word long) FileSaveDlgProc
|
||||
|
@ -22,7 +22,7 @@ type win16
|
|||
#23 pascal EDITINTEGERONLY exported, shared data
|
||||
#25 pascal WANTARROWS exported, shared data
|
||||
26 pascal CommDlgExtendedError() CommDlgExtendedError
|
||||
27 pascal16 GetFileTitle(ptr ptr word) GetFileTitle
|
||||
27 pascal16 GetFileTitle(str ptr word) GetFileTitle16
|
||||
#28 pascal WEP exported, shared data
|
||||
#29 pascal DWLBSUBCLASS exported, shared data
|
||||
#30 pascal DWUPARROWHACK exported, shared data
|
||||
|
|
|
@ -431,7 +431,7 @@ base 1
|
|||
426 stub longjmp
|
||||
427 cdecl malloc(ptr) CRTDLL_malloc
|
||||
428 stub mblen
|
||||
429 stub mbstowcs
|
||||
429 cdecl mbstowcs(ptr ptr long) CRTDLL_mbstowcs
|
||||
430 cdecl mbtowc(long) CRTDLL_mbtowc
|
||||
431 cdecl memchr(ptr long long) memchr
|
||||
432 cdecl memcmp(ptr ptr long) memcmp
|
||||
|
|
|
@ -20,9 +20,9 @@ type win16
|
|||
18 stub DdeUnaccessData #(word) DdeUnaccessData
|
||||
19 stub DdeFreeDataHandle #(word) DdeFreeDataHandle
|
||||
20 stub DdeGetLastError #(long) DdeGetLastError
|
||||
21 stub DdeCreateStringHandle #(long ptr word) DdeCreateStringHandle
|
||||
21 stub DdeCreateStringHandle #(long str word) DdeCreateStringHandle
|
||||
22 stub DdeFreeStringHandle #(long word) DdeFreeStringHandle
|
||||
23 stub DdeQueryString #(long word ptr long word) DdeQueryString
|
||||
23 stub DdeQueryString #(long word ptr long word) DdeQueryString
|
||||
24 stub DdeKeepStringHandle #(long word) DdeKeepStringHandle
|
||||
|
||||
26 stub DdeEnableCallback #(long word word) DdeEnableCallback
|
||||
|
|
|
@ -44,3 +44,4 @@ long stub_USER_919(void) { fprintf(stderr, "Warning: USER_919: unimplemented stu
|
|||
long stub_USER_920(void) { fprintf(stderr, "Warning: USER_920: unimplemented stub\n"); return 0; }
|
||||
long stub_USER_922(void) { fprintf(stderr, "Warning: USER_922: unimplemented stub\n"); return 0; }
|
||||
long stub_USER_923(void) { fprintf(stderr, "Warning: USER_923: unimplemented stub\n"); return 0; }
|
||||
long stub_KERNEL_700(void) { fprintf(stderr, "Warning: KERNEL_700: unimplemented stub\n"); return 1; }
|
||||
|
|
|
@ -63,7 +63,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
|
|||
54 pascal16 CreateEllipticRgn(s_word s_word s_word s_word) CreateEllipticRgn16
|
||||
55 pascal16 CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect16
|
||||
56 pascal16 CreateFont(s_word s_word s_word s_word s_word word word word
|
||||
word word word word word ptr) CreateFont16
|
||||
word word word word word str) CreateFont16
|
||||
57 pascal16 CreateFontIndirect(ptr) CreateFontIndirect16
|
||||
58 pascal16 CreateHatchBrush(word long) CreateHatchBrush16
|
||||
60 pascal16 CreatePatternBrush(word) CreatePatternBrush16
|
||||
|
@ -76,7 +76,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
|
|||
67 pascal16 DPtoLP(word ptr s_word) DPtoLP16
|
||||
68 pascal16 DeleteDC(word) DeleteDC16
|
||||
69 pascal16 DeleteObject(word) DeleteObject16
|
||||
70 pascal16 EnumFonts(word ptr segptr long) THUNK_EnumFonts16
|
||||
70 pascal16 EnumFonts(word str segptr long) THUNK_EnumFonts16
|
||||
71 pascal16 EnumObjects(word word segptr long) THUNK_EnumObjects16
|
||||
72 pascal16 EqualRgn(word word) EqualRgn16
|
||||
73 pascal16 ExcludeVisRect(word s_word s_word s_word s_word) ExcludeVisRect
|
||||
|
@ -115,28 +115,28 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
|
|||
105 pascal16 SelectVisRgn(word word) SelectVisRgn
|
||||
106 pascal SetBitmapBits(word long ptr) SetBitmapBits16
|
||||
117 pascal SetDCOrg(word s_word s_word) SetDCOrg
|
||||
119 pascal16 AddFontResource(ptr) AddFontResource16
|
||||
119 pascal16 AddFontResource(str) AddFontResource16
|
||||
#121 pascal Death
|
||||
#122 pascal ReSurRection
|
||||
123 pascal16 PlayMetaFile(word word) PlayMetaFile16
|
||||
124 pascal16 GetMetaFile(ptr) GetMetaFile16
|
||||
125 pascal16 CreateMetaFile(ptr) CreateMetaFile16
|
||||
124 pascal16 GetMetaFile(str) GetMetaFile16
|
||||
125 pascal16 CreateMetaFile(str) CreateMetaFile16
|
||||
126 pascal16 CloseMetaFile(word) CloseMetaFile16
|
||||
127 pascal16 DeleteMetaFile(word) DeleteMetaFile16
|
||||
128 pascal16 MulDiv(s_word s_word s_word) MulDiv16
|
||||
129 pascal16 SaveVisRgn(word) SaveVisRgn
|
||||
130 pascal16 RestoreVisRgn(word) RestoreVisRgn
|
||||
131 pascal16 InquireVisRgn(word) InquireVisRgn
|
||||
132 pascal16 SetEnvironment(ptr ptr word) SetEnvironment
|
||||
133 pascal16 GetEnvironment(ptr ptr word) GetEnvironment
|
||||
132 pascal16 SetEnvironment(str str word) SetEnvironment
|
||||
133 pascal16 GetEnvironment(str str word) GetEnvironment
|
||||
134 pascal16 GetRgnBox(word ptr) GetRgnBox16
|
||||
#135 pascal ScanLr
|
||||
136 pascal16 RemoveFontResource(ptr) RemoveFontResource16
|
||||
136 pascal16 RemoveFontResource(segptr) RemoveFontResource16
|
||||
148 pascal SetBrushOrg(word s_word s_word) SetBrushOrg
|
||||
149 pascal GetBrushOrg(word) GetBrushOrg
|
||||
150 pascal16 UnrealizeObject(word) UnrealizeObject16
|
||||
151 pascal16 CopyMetaFile(word ptr) CopyMetaFile16
|
||||
153 pascal16 CreateIC(ptr ptr ptr ptr) CreateIC16
|
||||
151 pascal16 CopyMetaFile(word str) CopyMetaFile16
|
||||
153 pascal16 CreateIC(str str str ptr) CreateIC16
|
||||
154 pascal GetNearestColor(word long) GetNearestColor16
|
||||
155 stub QueryAbort
|
||||
156 pascal16 CreateDiscardableBitmap(word word word) CreateDiscardableBitmap16
|
||||
|
@ -219,7 +219,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
|
|||
307 pascal16 GetCharABCWidths(word word word ptr) GetCharABCWidths16
|
||||
308 stub GetOutLineTextMetrics
|
||||
309 pascal GetGlyphOutline(word word word ptr long ptr ptr) GetGlyphOutline16
|
||||
310 pascal16 CreateScalableFontResource(word ptr ptr ptr) CreateScalableFontResource16
|
||||
310 pascal16 CreateScalableFontResource(word str str str) CreateScalableFontResource16
|
||||
311 stub GetFontData
|
||||
312 stub ConvertOutLineFontFile
|
||||
313 pascal16 GetRasterizerCaps(ptr word) GetRasterizerCaps16
|
||||
|
@ -227,7 +227,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
|
|||
315 stub EngineRealizeFontExt
|
||||
316 stub EngineGetCharWidthStr
|
||||
317 stub EngineGetGlyphBmpExt
|
||||
330 pascal16 EnumFontFamilies(word ptr segptr long) THUNK_EnumFontFamilies16
|
||||
330 pascal16 EnumFontFamilies(word str segptr long) THUNK_EnumFontFamilies16
|
||||
332 pascal16 GetKerningPairs(word word ptr) GetKerningPairs16
|
||||
345 pascal16 GetTextAlign(word) GetTextAlign16
|
||||
346 pascal16 SetTextAlign(word word) SetTextAlign16
|
||||
|
@ -380,7 +380,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
|
|||
609 stub GDIFreeResources
|
||||
610 stub GDISignalProc32
|
||||
611 stub GetRandomRgn
|
||||
612 stub GetTextCharSet
|
||||
612 pascal16 GetTextCharset(word) GetTextCharset16
|
||||
613 pascal16 EnumFontFamiliesEx(word ptr segptr long long) THUNK_EnumFontFamiliesEx16
|
||||
614 stub AddLpkToGDI
|
||||
615 stub GetCharacterPlacement
|
||||
|
|
|
@ -134,7 +134,7 @@ base 1
|
|||
0126 stub GdiDeleteLocalDC
|
||||
0127 stub GdiDeleteLocalObject
|
||||
0128 stub GdiFlush
|
||||
0129 stub GdiGetBatchLimit
|
||||
0129 return GdiGetBatchLimit 0 1
|
||||
0130 stub GdiGetLocalBrush
|
||||
0131 stub GdiGetLocalDC
|
||||
0132 stub GdiGetLocalFont
|
||||
|
@ -193,7 +193,7 @@ base 1
|
|||
0185 stub GetGlyphOutline
|
||||
0186 stdcall GetGlyphOutlineA(long long long ptr long ptr ptr) GetGlyphOutline32A
|
||||
0187 stdcall GetGlyphOutlineW(long long long ptr long ptr ptr) GetGlyphOutline32W
|
||||
0188 stub GetGraphicsMode
|
||||
0188 return GetGraphicsMode 4 1 # just return 1
|
||||
0189 stub GetICMProfileA
|
||||
0190 stub GetICMProfileW
|
||||
0191 stub GetKerningPairs
|
||||
|
@ -231,7 +231,7 @@ base 1
|
|||
0223 stdcall GetSystemPaletteUse() GetSystemPaletteUse32
|
||||
0224 stdcall GetTextAlign(long) GetTextAlign32
|
||||
0225 stdcall GetTextCharacterExtra(long) GetTextCharacterExtra32
|
||||
0226 stub GetTextCharset
|
||||
0226 stdcall GetTextCharset(long) GetTextCharset32
|
||||
0227 stdcall GetTextColor(long) GetTextColor32
|
||||
0228 stdcall GetTextExtentExPointA(long ptr long long ptr ptr ptr) GetTextExtentExPoint32A
|
||||
0229 stdcall GetTextExtentExPointW(long ptr long long ptr ptr ptr) GetTextExtentExPoint32W
|
||||
|
@ -249,7 +249,7 @@ base 1
|
|||
0241 stub GetWinMetaFileBits
|
||||
0242 stdcall GetWindowExtEx(long ptr) GetWindowExtEx32
|
||||
0243 stdcall GetWindowOrgEx(long ptr) GetWindowOrgEx32
|
||||
0244 stub GetWorldTransform
|
||||
0244 return GetWorldTransform 8 0
|
||||
0245 stdcall IntersectClipRect(long long long long long) IntersectClipRect32
|
||||
0246 stdcall InvertRgn(long long) InvertRgn32
|
||||
0247 stdcall LPtoDP(long ptr long) LPtoDP32
|
||||
|
@ -323,7 +323,7 @@ base 1
|
|||
0314 stub SetDeviceGammaRamp
|
||||
0315 stub SetEnhMetaFileBits
|
||||
0316 stub SetFontEnumeration
|
||||
0317 stub SetGraphicsMode
|
||||
0317 return SetGraphicsMode 8 1
|
||||
0318 stub SetICMMode
|
||||
0319 stub SetICMProfileA
|
||||
0320 stub SetICMProfileW
|
||||
|
|
|
@ -41,7 +41,7 @@ type win16
|
|||
38 pascal SetTaskSignalProc(word segptr) SetTaskSignalProc
|
||||
41 return EnableDos 0 0
|
||||
42 return DisableDos 0 0
|
||||
45 pascal16 LoadModule(ptr ptr) LoadModule16
|
||||
45 pascal16 LoadModule(str ptr) LoadModule16
|
||||
46 pascal16 FreeModule(word) FreeModule16
|
||||
47 pascal16 GetModuleHandle(segptr) WIN16_GetModuleHandle
|
||||
48 pascal16 GetModuleUsage(word) GetModuleUsage
|
||||
|
@ -53,9 +53,9 @@ type win16
|
|||
54 pascal16 GetInstanceData(word word word) GetInstanceData
|
||||
55 pascal16 Catch(ptr) Catch
|
||||
56 pascal16 Throw(ptr word) Throw
|
||||
57 pascal16 GetProfileInt(ptr ptr s_word) GetProfileInt16
|
||||
58 pascal16 GetProfileString(ptr ptr ptr ptr word) GetProfileString16
|
||||
59 pascal16 WriteProfileString(ptr ptr ptr) WriteProfileString16
|
||||
57 pascal16 GetProfileInt(str str s_word) GetProfileInt16
|
||||
58 pascal16 GetProfileString(str str str ptr word) GetProfileString16
|
||||
59 pascal16 WriteProfileString(str str str) WriteProfileString16
|
||||
60 pascal16 FindResource(word segptr segptr) FindResource16
|
||||
61 pascal16 LoadResource(word word) LoadResource16
|
||||
62 pascal LockResource(word) WIN16_LockResource16
|
||||
|
@ -63,14 +63,14 @@ type win16
|
|||
64 pascal16 AccessResource(word word) AccessResource16
|
||||
65 pascal SizeofResource(word word) SizeofResource16
|
||||
66 pascal16 AllocResource(word word long) AllocResource16
|
||||
67 pascal SetResourceHandler(word ptr ptr) SetResourceHandler
|
||||
67 pascal SetResourceHandler(word segptr ptr) SetResourceHandler
|
||||
68 pascal16 InitAtomTable(word) InitAtomTable16
|
||||
69 pascal16 FindAtom(segptr) FindAtom16
|
||||
70 pascal16 AddAtom(segptr) AddAtom16
|
||||
71 pascal16 DeleteAtom(word) DeleteAtom16
|
||||
72 pascal16 GetAtomName(word ptr word) GetAtomName16
|
||||
73 pascal16 GetAtomHandle(word) GetAtomHandle
|
||||
74 pascal16 OpenFile(ptr ptr word) OpenFile16
|
||||
74 pascal16 OpenFile(str ptr word) OpenFile16
|
||||
75 stub OpenPathName
|
||||
76 stub DeletePathName
|
||||
77 stub KERNEL_77 #RESERVED1
|
||||
|
@ -79,21 +79,21 @@ type win16
|
|||
#80 RESERVED4
|
||||
81 pascal16 _lclose(word) _lclose16
|
||||
82 pascal16 _lread(word segptr word) WIN16_lread
|
||||
83 pascal16 _lcreat(ptr word) _lcreat16
|
||||
83 pascal16 _lcreat(str word) _lcreat16
|
||||
84 pascal _llseek(word long word) _llseek16
|
||||
85 pascal16 _lopen(ptr word) _lopen16
|
||||
85 pascal16 _lopen(str word) _lopen16
|
||||
86 pascal16 _lwrite(word ptr word) _lwrite16
|
||||
87 pascal16 RESERVED5(ptr ptr) lstrcmp16
|
||||
88 pascal lstrcpy(segptr segptr) lstrcpy16
|
||||
89 pascal lstrcat(segptr segptr) lstrcat16
|
||||
90 pascal16 lstrlen(ptr) lstrlen16
|
||||
87 pascal16 RESERVED5(str str) lstrcmp16
|
||||
88 pascal lstrcpy(segptr str) lstrcpy16
|
||||
89 pascal lstrcat(segptr str) lstrcat16
|
||||
90 pascal16 lstrlen(str) lstrlen16
|
||||
91 register InitTask() InitTask
|
||||
92 pascal GetTempDrive(byte) WIN16_GetTempDrive
|
||||
93 pascal16 GetCodeHandle(segptr) GetCodeHandle
|
||||
94 stub DefineHandleTable
|
||||
95 pascal16 LoadLibrary(ptr) LoadLibrary16
|
||||
95 pascal16 LoadLibrary(str) LoadLibrary16
|
||||
96 pascal16 FreeLibrary(word) FreeLibrary16
|
||||
97 pascal16 GetTempFileName(byte ptr word ptr) GetTempFileName16
|
||||
97 pascal16 GetTempFileName(byte str word ptr) GetTempFileName16
|
||||
98 return GetLastDiskChange 0 0
|
||||
99 stub GetLPErrMode
|
||||
100 return ValidateCodeSegments 0 0
|
||||
|
@ -111,7 +111,7 @@ type win16
|
|||
112 pascal16 GlobalUnWire(word) GlobalUnWire16
|
||||
113 equate __AHSHIFT 3
|
||||
114 equate __AHINCR 8
|
||||
115 pascal16 OutputDebugString(ptr) OutputDebugString16
|
||||
115 pascal16 OutputDebugString(str) OutputDebugString16
|
||||
116 stub InitLib
|
||||
117 pascal16 OldYield() OldYield
|
||||
118 register GetTaskQueueDS() GetTaskQueueDS
|
||||
|
@ -123,10 +123,10 @@ type win16
|
|||
124 return EnableKernel 0 0
|
||||
125 return DisableKernel 0 0
|
||||
126 stub MemoryFreed
|
||||
127 pascal16 GetPrivateProfileInt(ptr ptr s_word ptr) GetPrivateProfileInt16
|
||||
128 pascal16 GetPrivateProfileString(ptr ptr ptr ptr word ptr)
|
||||
127 pascal16 GetPrivateProfileInt(str str s_word str) GetPrivateProfileInt16
|
||||
128 pascal16 GetPrivateProfileString(str str str ptr word str)
|
||||
GetPrivateProfileString16
|
||||
129 pascal16 WritePrivateProfileString(ptr ptr ptr ptr)
|
||||
129 pascal16 WritePrivateProfileString(str str str str)
|
||||
WritePrivateProfileString16
|
||||
130 pascal FileCDR(ptr) FileCDR
|
||||
131 pascal GetDOSEnvironment() GetDOSEnvironment
|
||||
|
@ -135,7 +135,7 @@ type win16
|
|||
134 pascal16 GetWindowsDirectory(ptr word) GetWindowsDirectory16
|
||||
135 pascal16 GetSystemDirectory(ptr word) GetSystemDirectory16
|
||||
136 pascal16 GetDriveType(byte) GetDriveType16
|
||||
137 pascal16 FatalAppExit(word ptr) FatalAppExit16
|
||||
137 pascal16 FatalAppExit(word str) FatalAppExit16
|
||||
138 pascal GetHeapSpaces(word) GetHeapSpaces
|
||||
139 stub DoSignal
|
||||
140 pascal16 SetSigHandler(segptr ptr ptr word word) SetSigHandler
|
||||
|
@ -163,7 +163,7 @@ type win16
|
|||
163 pascal16 GlobalLRUOldest(word) GlobalLRUOldest
|
||||
164 pascal16 GlobalLRUNewest(word) GlobalLRUNewest
|
||||
165 return A20Proc 2 0
|
||||
166 pascal16 WinExec(ptr word) WinExec16
|
||||
166 pascal16 WinExec(str word) WinExec16
|
||||
167 pascal16 GetExpWinVer(word) GetExpWinVer
|
||||
168 pascal16 DirectResAlloc(word word word) DirectResAlloc
|
||||
169 pascal GetFreeSpace(word) GetFreeSpace16
|
||||
|
@ -268,8 +268,8 @@ type win16
|
|||
349 pascal _hread(word segptr long) WIN16_hread
|
||||
350 pascal _hwrite(word ptr long) _hwrite16
|
||||
#351 BUNNY_351
|
||||
352 pascal lstrcatn(segptr segptr word) lstrcatn16
|
||||
353 pascal lstrcpyn(segptr segptr word) lstrcpyn16
|
||||
352 pascal lstrcatn(segptr str word) lstrcatn16
|
||||
353 pascal lstrcpyn(segptr str word) lstrcpyn16
|
||||
354 pascal GetAppCompatFlags(word) GetAppCompatFlags16
|
||||
355 pascal16 GetWinDebugInfo(ptr word) GetWinDebugInfo
|
||||
356 pascal16 SetWinDebugInfo(ptr) SetWinDebugInfo
|
||||
|
@ -311,6 +311,7 @@ type win16
|
|||
472 stub KERNEL_472
|
||||
473 stub KERNEL_473
|
||||
482 stub KERNEL_482
|
||||
485 stub KERNEL_485
|
||||
491 stub RegisterServiceProcess
|
||||
500 stub KERNEL_500
|
||||
502 stub KERNEL_502
|
||||
|
@ -338,4 +339,4 @@ type win16
|
|||
630 stub KERNEL_630
|
||||
631 stub FUNC004 # shell hook
|
||||
651 stub KERNEL_651
|
||||
700 return KERNEL_700 0 1
|
||||
700 pascal KERNEL_700() stub_KERNEL_700
|
||||
|
|
|
@ -2,7 +2,7 @@ name lzexpand
|
|||
type win16
|
||||
|
||||
1 pascal LZCopy(word word) LZCopy16
|
||||
2 pascal16 LZOpenFile(ptr ptr word) LZOpenFile16
|
||||
2 pascal16 LZOpenFile(str ptr word) LZOpenFile16
|
||||
3 pascal16 LZInit(word) LZInit16
|
||||
4 pascal LZSeek(word long word) LZSeek16
|
||||
5 pascal16 LZRead(word ptr word) LZRead16
|
||||
|
@ -10,6 +10,6 @@ type win16
|
|||
7 pascal16 LZStart() LZStart16
|
||||
8 pascal CopyLZFile(word word) CopyLZFile16
|
||||
9 pascal16 LZDone() LZDone
|
||||
10 pascal16 GetExpandedName(ptr ptr) GetExpandedName16
|
||||
10 pascal16 GetExpandedName(str ptr) GetExpandedName16
|
||||
#11 WEP
|
||||
#12 ___EXPORTEDSTUB
|
||||
|
|
|
@ -2,11 +2,11 @@ name olesvr
|
|||
type win16
|
||||
|
||||
#1 WEP
|
||||
2 pascal OleRegisterServer(ptr ptr ptr word word) OleRegisterServer
|
||||
2 pascal OleRegisterServer(str ptr ptr word word) OleRegisterServer
|
||||
3 pascal OleRevokeServer(long) OleRevokeServer
|
||||
4 pascal OleBlockServer(long) OleBlockServer
|
||||
5 pascal OleUnblockServer(long ptr) OleUnblockServer
|
||||
6 pascal OleRegisterServerDoc(long ptr ptr ptr) OleRegisterServerDoc
|
||||
6 pascal OleRegisterServerDoc(long str ptr ptr) OleRegisterServerDoc
|
||||
7 pascal OleRevokeServerDoc(long) OleRevokeServerDoc
|
||||
8 stub OLERENAMESERVERDOC
|
||||
9 stub OLEREVERTSERVERDOC
|
||||
|
|
|
@ -82,6 +82,7 @@ void RELAY_DebugCallFrom16( int func_type, char *args,
|
|||
break;
|
||||
case 'l':
|
||||
case 'p':
|
||||
case 't':
|
||||
args16 += 4;
|
||||
break;
|
||||
}
|
||||
|
@ -100,6 +101,14 @@ void RELAY_DebugCallFrom16( int func_type, char *args,
|
|||
args16 -= 4;
|
||||
printf( "0x%08x", *(int *)args16 );
|
||||
break;
|
||||
case 't':
|
||||
args16 -= 4;
|
||||
if (HIWORD(*(int *)args16))
|
||||
printf( "0x%08x \"%s\"", *(int *)args16,
|
||||
(char *)PTR_SEG_TO_LIN(*(int *)args16) );
|
||||
else
|
||||
printf( "0x%08x", *(int *)args16 );
|
||||
break;
|
||||
case 'p':
|
||||
args16 -= 4;
|
||||
printf( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
|
||||
|
@ -386,6 +395,7 @@ WIN16_CallProc32W() {
|
|||
DWORD argconvmask = win_stack[1];
|
||||
FARPROC32 proc32 = (FARPROC32)win_stack[2];
|
||||
DWORD *args,ret;
|
||||
STACK16FRAME stf16;
|
||||
int i;
|
||||
|
||||
fprintf(stderr,"CallProc32W(%ld,%ld,%p,args[",nrofargs,argconvmask,proc32);
|
||||
|
@ -419,6 +429,16 @@ WIN16_CallProc32W() {
|
|||
ret = 0;
|
||||
break;
|
||||
}
|
||||
/* POP nrofargs DWORD arguments and 3 DWORD parameters */
|
||||
/* FIXME: this is a BAD hack, but I don't see any other way to
|
||||
* pop a variable number of arguments. -MM
|
||||
* The -2 in the size is for not copying WORD args[0] (which would
|
||||
* overwrite the top WORD on the return stack)
|
||||
*/
|
||||
memcpy(&stf16,CURRENT_STACK16,sizeof(stf16)-2);
|
||||
IF1632_Saved16_sp += (3+nrofargs)*sizeof(DWORD);
|
||||
memcpy(CURRENT_STACK16,&stf16,sizeof(stf16)-2);
|
||||
|
||||
fprintf(stderr,"returns %08lx\n",ret);
|
||||
free(args);
|
||||
return ret;
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
name shell
|
||||
type win16
|
||||
|
||||
1 pascal RegOpenKey(long ptr ptr) RegOpenKey16
|
||||
2 pascal RegCreateKey(long ptr ptr) RegCreateKey16
|
||||
1 pascal RegOpenKey(long str ptr) RegOpenKey16
|
||||
2 pascal RegCreateKey(long str ptr) RegCreateKey16
|
||||
3 pascal RegCloseKey(long) RegCloseKey
|
||||
4 pascal RegDeleteKey(long ptr) RegDeleteKey16
|
||||
5 pascal RegSetValue(long ptr long ptr long) RegSetValue16
|
||||
6 pascal RegQueryValue(long ptr ptr ptr) RegQueryValue16
|
||||
4 pascal RegDeleteKey(long str) RegDeleteKey16
|
||||
5 pascal RegSetValue(long str long str long) RegSetValue16
|
||||
6 pascal RegQueryValue(long str ptr ptr) RegQueryValue16
|
||||
7 pascal RegEnumKey(long long ptr long) RegEnumKey16
|
||||
9 pascal16 DragAcceptFiles(word word) DragAcceptFiles
|
||||
11 pascal16 DragQueryFile(word s_word ptr s_word) DragQueryFile
|
||||
12 pascal16 DragFinish(word) DragFinish
|
||||
13 pascal16 DragQueryPoint(word ptr) DragQueryPoint
|
||||
20 pascal16 ShellExecute(word ptr ptr ptr ptr s_word) ShellExecute16
|
||||
21 pascal16 FindExecutable(ptr ptr ptr) FindExecutable16
|
||||
20 pascal16 ShellExecute(word str str str str s_word) ShellExecute16
|
||||
21 pascal16 FindExecutable(str str ptr) FindExecutable16
|
||||
22 pascal16 ShellAbout(word ptr ptr word) ShellAbout16
|
||||
33 pascal16 AboutDlgProc(word word word long) AboutDlgProc16
|
||||
34 pascal16 ExtractIcon(word ptr s_word) ExtractIcon16
|
||||
34 pascal16 ExtractIcon(word str s_word) ExtractIcon16
|
||||
36 pascal16 ExtractAssociatedIcon(word ptr ptr) ExtractAssociatedIcon
|
||||
37 pascal DoEnvironmentSubst(ptr word) DoEnvironmentSubst
|
||||
38 pascal FindEnvironmentString(ptr) FindEnvironmentString
|
||||
|
|
|
@ -2,7 +2,7 @@ name user
|
|||
type win16
|
||||
heap 65520
|
||||
|
||||
1 pascal16 MessageBox(word ptr ptr word) MessageBox16
|
||||
1 pascal16 MessageBox(word str str word) MessageBox16
|
||||
2 stub OldExitWindows
|
||||
3 stub EnableOEMLayer
|
||||
4 stub DisableOEMLayer
|
||||
|
@ -40,7 +40,7 @@ heap 65520
|
|||
38 pascal16 GetWindowTextLength(word) GetWindowTextLength16
|
||||
39 pascal16 BeginPaint(word ptr) BeginPaint16
|
||||
40 pascal16 EndPaint(word ptr) EndPaint16
|
||||
41 pascal16 CreateWindow(ptr ptr long s_word s_word s_word s_word
|
||||
41 pascal16 CreateWindow(str str long s_word s_word s_word s_word
|
||||
word word word segptr) CreateWindow16
|
||||
42 pascal16 ShowWindow(word word) ShowWindow16
|
||||
43 pascal16 CloseWindow(word) CloseWindow16
|
||||
|
@ -50,7 +50,7 @@ heap 65520
|
|||
47 pascal16 IsWindow(word) IsWindow16
|
||||
48 pascal16 IsChild(word word) IsChild16
|
||||
49 pascal16 IsWindowVisible(word) IsWindowVisible16
|
||||
50 pascal16 FindWindow(segptr ptr) FindWindow16
|
||||
50 pascal16 FindWindow(segptr str) FindWindow16
|
||||
#51 BEAR51
|
||||
52 pascal16 AnyPopup() AnyPopup16
|
||||
53 pascal16 DestroyWindow(word) DestroyWindow16
|
||||
|
@ -170,7 +170,7 @@ heap 65520
|
|||
168 pascal16 SetCaretBlinkTime(word) SetCaretBlinkTime16
|
||||
169 pascal16 GetCaretBlinkTime() GetCaretBlinkTime16
|
||||
170 pascal16 ArrangeIconicWindows(word) ArrangeIconicWindows16
|
||||
171 pascal16 WinHelp(word ptr word long) WinHelp16
|
||||
171 pascal16 WinHelp(word str word long) WinHelp16
|
||||
172 pascal16 SwitchToThisWindow(word word) SwitchToThisWindow16
|
||||
173 pascal16 LoadCursor(word segptr) LoadCursor16
|
||||
174 pascal16 LoadIcon(word segptr) LoadIcon16
|
||||
|
@ -200,7 +200,7 @@ heap 65520
|
|||
197 pascal GetTabbedTextExtent(word ptr word word ptr) GetTabbedTextExtent16
|
||||
198 pascal16 CascadeChildWindows(word word) CascadeChildWindows
|
||||
199 pascal16 TileChildWindows(word word) TileChildWindows
|
||||
200 pascal16 OpenComm(ptr word word) OpenComm
|
||||
200 pascal16 OpenComm(str word word) OpenComm
|
||||
201 pascal16 SetCommState(ptr) SetCommState16
|
||||
202 pascal16 GetCommState(word ptr) GetCommState16
|
||||
203 pascal16 GetCommError(word ptr) GetCommError
|
||||
|
@ -254,7 +254,7 @@ heap 65520
|
|||
249 pascal16 GetAsyncKeyState(word) GetAsyncKeyState16
|
||||
250 pascal16 GetMenuState(word word word) GetMenuState16
|
||||
251 pascal SendDriverMessage(word word long long) SendDriverMessage
|
||||
252 pascal16 OpenDriver(ptr ptr long) OpenDriver
|
||||
252 pascal16 OpenDriver(str str long) OpenDriver
|
||||
253 pascal CloseDriver(word long long) CloseDriver
|
||||
254 pascal16 GetDriverModuleHandle(word) GetDriverModuleHandle
|
||||
255 pascal DefDriverProc(long word word long long) DefDriverProc
|
||||
|
@ -377,15 +377,15 @@ heap 65520
|
|||
427 pascal16 FindWindowEx(word word segptr ptr) FindWindowEx16
|
||||
428 stub TileWindows
|
||||
429 stub CascadeWindows
|
||||
430 pascal16 lstrcmp(ptr ptr) lstrcmp16
|
||||
430 pascal16 lstrcmp(str str) lstrcmp16
|
||||
431 pascal AnsiUpper(segptr) AnsiUpper16
|
||||
432 pascal AnsiLower(segptr) AnsiLower16
|
||||
433 pascal16 IsCharAlpha(byte) IsCharAlpha16
|
||||
434 pascal16 IsCharAlphanumeric(byte) IsCharAlphanumeric16
|
||||
435 pascal16 IsCharUpper(byte) IsCharUpper16
|
||||
436 pascal16 IsCharLower(byte) IsCharLower16
|
||||
437 pascal16 AnsiUpperBuff(ptr word) AnsiUpperBuff16
|
||||
438 pascal16 AnsiLowerBuff(ptr word) AnsiLowerBuff16
|
||||
437 pascal16 AnsiUpperBuff(str word) AnsiUpperBuff16
|
||||
438 pascal16 AnsiLowerBuff(str word) AnsiLowerBuff16
|
||||
441 stub InsertMenuItem
|
||||
443 stub GetMenuItemInfo
|
||||
445 pascal DefFrameProc(word word word word long) DefFrameProc16
|
||||
|
@ -395,7 +395,7 @@ heap 65520
|
|||
449 stub DrawState
|
||||
450 stub CreateIconFromResourceEx
|
||||
451 pascal16 TranslateMDISysAccel(word ptr) TranslateMDISysAccel16
|
||||
452 pascal16 CreateWindowEx(long ptr ptr long s_word s_word s_word s_word
|
||||
452 pascal16 CreateWindowEx(long str str long s_word s_word s_word s_word
|
||||
word word word segptr) CreateWindowEx16
|
||||
454 pascal16 AdjustWindowRectEx(ptr long word long) AdjustWindowRectEx16
|
||||
455 pascal16 GetIconID(word long) GetIconID
|
||||
|
@ -411,7 +411,7 @@ heap 65520
|
|||
465 pascal16 DragDetect(word long) DragDetect16
|
||||
466 pascal16 DrawFocusRect(word ptr) DrawFocusRect16
|
||||
470 stub StringFunc
|
||||
471 pascal16 lstrcmpi(ptr ptr) lstrcmpi16
|
||||
471 pascal16 lstrcmpi(str str) lstrcmpi16
|
||||
472 pascal AnsiNext(segptr) AnsiNext16
|
||||
473 pascal AnsiPrev(segptr segptr) AnsiPrev16
|
||||
475 pascal16 SetScrollInfo(word s_word ptr word) SetScrollInfo16
|
||||
|
|
|
@ -140,7 +140,7 @@ base 1
|
|||
0133 stdcall DestroyMenu(long) DestroyMenu32
|
||||
0134 stdcall DestroyWindow(long) DestroyWindow32
|
||||
0135 stdcall DialogBoxIndirectParamA(long ptr long ptr long) DialogBoxIndirectParam32A
|
||||
0136 stub DialogBoxIndirectParamAorW
|
||||
0136 stdcall DialogBoxIndirectParamAorW(long ptr long ptr long) DialogBoxIndirectParam32A
|
||||
0137 stdcall DialogBoxIndirectParamW(long ptr long ptr long) DialogBoxIndirectParam32W
|
||||
0138 stdcall DialogBoxParamA(long ptr long ptr long) DialogBoxParam32A
|
||||
0139 stdcall DialogBoxParamW(long ptr long ptr long) DialogBoxParam32W
|
||||
|
|
|
@ -43,6 +43,9 @@ extern "C" {
|
|||
#define OFN_NOREADONLYRETURN 0x00008000
|
||||
#define OFN_NOTESTFILECREATE 0x00010000
|
||||
|
||||
#define OFN_UNICODE 0x40000000 /*to differ between 32W/A hook*/
|
||||
#define OFN_WINE32 0x80000000 /* comdlg32 */
|
||||
|
||||
#define OFN_SHAREFALLTHROUGH 2
|
||||
#define OFN_SHARENOWARN 1
|
||||
#define OFN_SHAREWARN 0
|
||||
|
@ -68,9 +71,56 @@ typedef struct {
|
|||
LPARAM lCustData;
|
||||
WNDPROC16 lpfnHook;
|
||||
SEGPTR lpTemplateName;
|
||||
} OPENFILENAME;
|
||||
typedef OPENFILENAME * LPOPENFILENAME;
|
||||
} OPENFILENAME16,*LPOPENFILENAME16;
|
||||
|
||||
typedef struct {
|
||||
DWORD lStructSize;
|
||||
HWND32 hwndOwner;
|
||||
HINSTANCE32 hInstance;
|
||||
LPCSTR lpstrFilter;
|
||||
LPSTR lpstrCustomFilter;
|
||||
DWORD nMaxCustFilter;
|
||||
DWORD nFilterIndex;
|
||||
LPSTR lpstrFile;
|
||||
DWORD nMaxFile;
|
||||
LPSTR lpstrFileTitle;
|
||||
DWORD nMaxFileTitle;
|
||||
LPCSTR lpstrInitialDir;
|
||||
LPCSTR lpstrTitle;
|
||||
DWORD Flags;
|
||||
WORD nFileOffset;
|
||||
WORD nFileExtension;
|
||||
LPCSTR lpstrDefExt;
|
||||
LPARAM lCustData;
|
||||
WNDPROC32 lpfnHook;
|
||||
LPCSTR lpTemplateName;
|
||||
} OPENFILENAME32A,*LPOPENFILENAME32A;
|
||||
|
||||
typedef struct {
|
||||
DWORD lStructSize;
|
||||
HWND32 hwndOwner;
|
||||
HINSTANCE32 hInstance;
|
||||
LPCWSTR lpstrFilter;
|
||||
LPWSTR lpstrCustomFilter;
|
||||
DWORD nMaxCustFilter;
|
||||
DWORD nFilterIndex;
|
||||
LPWSTR lpstrFile;
|
||||
DWORD nMaxFile;
|
||||
LPWSTR lpstrFileTitle;
|
||||
DWORD nMaxFileTitle;
|
||||
LPCWSTR lpstrInitialDir;
|
||||
LPCWSTR lpstrTitle;
|
||||
DWORD Flags;
|
||||
WORD nFileOffset;
|
||||
WORD nFileExtension;
|
||||
LPCWSTR lpstrDefExt;
|
||||
LPARAM lCustData;
|
||||
WNDPROC32 lpfnHook;
|
||||
LPCWSTR lpTemplateName;
|
||||
} OPENFILENAME32W,*LPOPENFILENAME32W;
|
||||
|
||||
DECL_WINELIB_TYPE_AW(OPENFILENAME);
|
||||
DECL_WINELIB_TYPE_AW(LPOPENFILENAME);
|
||||
|
||||
typedef struct {
|
||||
DWORD lStructSize;
|
||||
|
@ -82,7 +132,7 @@ typedef struct {
|
|||
LPARAM lCustData;
|
||||
WNDPROC16 lpfnHook;
|
||||
SEGPTR lpTemplateName;
|
||||
} CHOOSECOLOR;
|
||||
} CHOOSECOLOR;
|
||||
typedef CHOOSECOLOR *LPCHOOSECOLOR;
|
||||
|
||||
#define CC_RGBINIT 0x00000001
|
||||
|
@ -278,9 +328,18 @@ typedef DEVNAMES * LPDEVNAMES;
|
|||
BOOL16 ChooseColor(LPCHOOSECOLOR lpChCol);
|
||||
DWORD CommDlgExtendedError(void);
|
||||
HWND16 FindText( SEGPTR find);
|
||||
short GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf);
|
||||
BOOL16 GetOpenFileName(SEGPTR ofn);
|
||||
BOOL16 GetSaveFileName(SEGPTR ofn);
|
||||
INT16 GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf);
|
||||
INT16 GetFileTitle32A(LPCSTR lpFile, LPSTR lpTitle, UINT32 cbBuf);
|
||||
INT16 GetFileTitle32W(LPCWSTR lpFile, LPWSTR lpTitle, UINT32 cbBuf);
|
||||
#define GetFileTitle WINELIB_NAME_AW(GetFileTitle)
|
||||
BOOL16 GetOpenFileName16(SEGPTR ofn);
|
||||
BOOL32 GetOpenFileName32A(LPOPENFILENAME32A ofn);
|
||||
BOOL32 GetOpenFileName32W(LPOPENFILENAME32W ofn);
|
||||
#define GetOpenFileName WINELIB_NAME_AW(GetOpenFileName)
|
||||
BOOL16 GetSaveFileName16(SEGPTR ofn);
|
||||
BOOL32 GetSaveFileName32A(LPOPENFILENAME32A ofn);
|
||||
BOOL32 GetSaveFileName32W(LPOPENFILENAME32W ofn);
|
||||
#define GetSaveFileName WINELIB_NAME_AW(GetSaveFileName)
|
||||
BOOL16 PrintDlg( SEGPTR print);
|
||||
HWND16 ReplaceText( SEGPTR find);
|
||||
BOOL16 ChooseFont(LPCHOOSEFONT lpChFont);
|
||||
|
|
|
@ -171,7 +171,8 @@ typedef struct wavehdr_tag {
|
|||
DWORD dwUser; /* for client's use */
|
||||
DWORD dwFlags; /* assorted flags (see defines) */
|
||||
DWORD dwLoops; /* loop control counter */
|
||||
struct wavehdr_tag *lpNext; /* reserved for driver */
|
||||
/* struct wavehdr_tag *lpNext;*/
|
||||
SEGPTR lp16Next; /* reserved for driver */
|
||||
DWORD reserved; /* reserved for driver */
|
||||
} WAVEHDR, *LPWAVEHDR;
|
||||
|
||||
|
|
|
@ -5122,7 +5122,7 @@ INT16 SetEnvironment(LPCSTR,LPCSTR,UINT16);
|
|||
WORD SetHookFlags(HDC16,WORD);
|
||||
HMETAFILE16 SetMetaFileBits(HGLOBAL16);
|
||||
VOID SetPriority(HTASK16,INT16);
|
||||
FARPROC16 SetResourceHandler(HINSTANCE16,LPSTR,FARPROC16);
|
||||
FARPROC16 SetResourceHandler(HINSTANCE16,SEGPTR,FARPROC16);
|
||||
WORD SetSelectorBase(WORD,DWORD);
|
||||
WORD SetSelectorLimit(WORD,DWORD);
|
||||
LONG SetSwapAreaSize(WORD);
|
||||
|
@ -6949,7 +6949,7 @@ BOOL16 RemoveDirectory16(LPCSTR);
|
|||
BOOL32 RemoveDirectory32A(LPCSTR);
|
||||
BOOL32 RemoveDirectory32W(LPCWSTR);
|
||||
#define RemoveDirectory WINELIB_NAME_AW(RemoveDirectory)
|
||||
BOOL16 RemoveFontResource16(LPCSTR);
|
||||
BOOL16 RemoveFontResource16(SEGPTR);
|
||||
BOOL32 RemoveFontResource32A(LPCSTR);
|
||||
BOOL32 RemoveFontResource32W(LPCWSTR);
|
||||
#define RemoveFontResource WINELIB_NAME_AW(RemoveFontResource)
|
||||
|
@ -7413,11 +7413,11 @@ BOOL16 WriteProfileString16(LPCSTR,LPCSTR,LPCSTR);
|
|||
BOOL32 WriteProfileString32A(LPCSTR,LPCSTR,LPCSTR);
|
||||
BOOL32 WriteProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR);
|
||||
#define WriteProfileString WINELIB_NAME_AW(WriteProfileString)
|
||||
SEGPTR lstrcat16(SEGPTR,SEGPTR);
|
||||
SEGPTR lstrcat16(SEGPTR,LPCSTR);
|
||||
LPSTR lstrcat32A(LPSTR,LPCSTR);
|
||||
LPWSTR lstrcat32W(LPWSTR,LPCWSTR);
|
||||
#define lstrcat WINELIB_NAME_AW(lstrcat)
|
||||
SEGPTR lstrcatn16(SEGPTR,SEGPTR,INT16);
|
||||
SEGPTR lstrcatn16(SEGPTR,LPCSTR,INT16);
|
||||
LPSTR lstrcatn32A(LPSTR,LPCSTR,INT32);
|
||||
LPWSTR lstrcatn32W(LPWSTR,LPCWSTR,INT32);
|
||||
#define lstrcatn WINELIB_NAME_AW(lstrcatn)
|
||||
|
@ -7429,11 +7429,11 @@ INT16 lstrcmpi16(LPCSTR,LPCSTR);
|
|||
INT32 lstrcmpi32A(LPCSTR,LPCSTR);
|
||||
INT32 lstrcmpi32W(LPCWSTR,LPCWSTR);
|
||||
#define lstrcmpi WINELIB_NAME_AW(lstrcmpi)
|
||||
SEGPTR lstrcpy16(SEGPTR,SEGPTR);
|
||||
SEGPTR lstrcpy16(SEGPTR,LPCSTR);
|
||||
LPSTR lstrcpy32A(LPSTR,LPCSTR);
|
||||
LPWSTR lstrcpy32W(LPWSTR,LPCWSTR);
|
||||
#define lstrcpy WINELIB_NAME_AW(lstrcpy)
|
||||
SEGPTR lstrcpyn16(SEGPTR,SEGPTR,INT16);
|
||||
SEGPTR lstrcpyn16(SEGPTR,LPCSTR,INT16);
|
||||
LPSTR lstrcpyn32A(LPSTR,LPCSTR,INT32);
|
||||
LPWSTR lstrcpyn32W(LPWSTR,LPCWSTR,INT32);
|
||||
#define lstrcpyn WINELIB_NAME_AW(lstrcpyn)
|
||||
|
|
|
@ -748,12 +748,14 @@ INT32 LoadMessage32W( HINSTANCE32 instance, UINT32 id, WORD lang,
|
|||
* SetResourceHandler (KERNEL.43)
|
||||
*/
|
||||
FARPROC16
|
||||
SetResourceHandler(HINSTANCE16 instance,LPSTR s,FARPROC16 farproc)
|
||||
SetResourceHandler(HINSTANCE16 instance,SEGPTR s,FARPROC16 farproc)
|
||||
{
|
||||
if (HIWORD(s))
|
||||
fprintf(stderr,"SetResourceHandler(%04x,%s,%p), empty STUB!\n",instance,s,farproc);
|
||||
fprintf(stderr,"SetResourceHandler(%04x,%s,%p), empty STUB!\n",
|
||||
instance,(char*)PTR_SEG_TO_LIN(s),farproc);
|
||||
else
|
||||
fprintf(stderr,"SetResourceHandler(%04x,0x%04x,%p), empty STUB!\n",instance,LOWORD(s),farproc);
|
||||
fprintf(stderr,"SetResourceHandler(%04x,0x%04x,%p), empty STUB!\n",
|
||||
instance,LOWORD(s),farproc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -64,9 +64,9 @@ void hmemcpy( LPVOID dst, LPCVOID src, LONG count )
|
|||
/***********************************************************************
|
||||
* lstrcat16 (KERNEL.89)
|
||||
*/
|
||||
SEGPTR lstrcat16( SEGPTR dst, SEGPTR src )
|
||||
SEGPTR lstrcat16( SEGPTR dst, LPCSTR src )
|
||||
{
|
||||
lstrcat32A( (LPSTR)PTR_SEG_TO_LIN(dst), (LPCSTR)PTR_SEG_TO_LIN(src) );
|
||||
lstrcat32A( (LPSTR)PTR_SEG_TO_LIN(dst), src );
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
@ -98,9 +98,9 @@ LPWSTR lstrcat32W( LPWSTR dst, LPCWSTR src )
|
|||
/***********************************************************************
|
||||
* lstrcatn16 (KERNEL.352)
|
||||
*/
|
||||
SEGPTR lstrcatn16( SEGPTR dst, SEGPTR src, INT16 n )
|
||||
SEGPTR lstrcatn16( SEGPTR dst, LPCSTR src, INT16 n )
|
||||
{
|
||||
lstrcatn32A( (LPSTR)PTR_SEG_TO_LIN(dst), (LPCSTR)PTR_SEG_TO_LIN(src), n );
|
||||
lstrcatn32A( (LPSTR)PTR_SEG_TO_LIN(dst), src, n );
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
@ -212,9 +212,9 @@ INT32 lstrcmpi32W( LPCWSTR str1, LPCWSTR str2 )
|
|||
/***********************************************************************
|
||||
* lstrcpy16 (KERNEL.88)
|
||||
*/
|
||||
SEGPTR lstrcpy16( SEGPTR dst, SEGPTR src )
|
||||
SEGPTR lstrcpy16( SEGPTR dst, LPCSTR src )
|
||||
{
|
||||
lstrcpy32A( (LPSTR)PTR_SEG_TO_LIN(dst), (LPCSTR)PTR_SEG_TO_LIN(src) );
|
||||
lstrcpy32A( (LPSTR)PTR_SEG_TO_LIN(dst), src );
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
@ -246,9 +246,9 @@ LPWSTR lstrcpy32W( LPWSTR dst, LPCWSTR src )
|
|||
/***********************************************************************
|
||||
* lstrcpyn16 (KERNEL.353)
|
||||
*/
|
||||
SEGPTR lstrcpyn16( SEGPTR dst, SEGPTR src, INT16 n )
|
||||
SEGPTR lstrcpyn16( SEGPTR dst, LPCSTR src, INT16 n )
|
||||
{
|
||||
lstrcpyn32A( (LPSTR)PTR_SEG_TO_LIN(dst), (LPCSTR)PTR_SEG_TO_LIN(src), n );
|
||||
lstrcpyn32A( (LPSTR)PTR_SEG_TO_LIN(dst), src, n );
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
#include <ctype.h>
|
||||
#include <sys/stat.h>
|
||||
#if defined(__NetBSD__) || defined(__FreeBSD__)
|
||||
#include <sys/ioctl.h>
|
||||
#else
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/filio.h>
|
||||
#endif
|
||||
#include <sys/ioctl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "windows.h"
|
||||
|
@ -36,6 +35,10 @@
|
|||
#include "debug.h"
|
||||
#include "handle32.h"
|
||||
|
||||
#ifndef TIOCINQ
|
||||
#define TIOCINQ FIONREAD
|
||||
#endif
|
||||
|
||||
/*
|
||||
* [RER] These are globals are wrong. They should be in DosDeviceStruct
|
||||
* on a per port basis.
|
||||
|
|
447
misc/commdlg.c
447
misc/commdlg.c
|
@ -56,44 +56,71 @@ static BOOL32 FileDlg_Init()
|
|||
/***********************************************************************
|
||||
* GetOpenFileName (COMMDLG.1)
|
||||
*/
|
||||
BOOL16 GetOpenFileName( SEGPTR ofn )
|
||||
BOOL16 GetOpenFileName16( SEGPTR ofn )
|
||||
{
|
||||
HINSTANCE16 hInst;
|
||||
HANDLE16 hDlgTmpl = 0, hResInfo;
|
||||
HANDLE32 hDlgTmpl = 0, hResInfo;
|
||||
BOOL32 bRet = FALSE, win32Format = FALSE;
|
||||
HWND32 hwndDialog;
|
||||
LPOPENFILENAME lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(ofn);
|
||||
LPOPENFILENAME16 lpofn = (LPOPENFILENAME16)PTR_SEG_TO_LIN(ofn);
|
||||
LPCVOID template;
|
||||
|
||||
if (!lpofn || !FileDlg_Init()) return FALSE;
|
||||
|
||||
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
|
||||
{
|
||||
if (!(template = LockResource16( lpofn->hInstance )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (lpofn->Flags & OFN_ENABLETEMPLATE)
|
||||
{
|
||||
if (!(hResInfo = FindResource16(lpofn->hInstance,
|
||||
lpofn->lpTemplateName, RT_DIALOG)))
|
||||
{
|
||||
CommDlgLastError = CDERR_FINDRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
if (!(hDlgTmpl = LoadResource16( lpofn->hInstance, hResInfo )) ||
|
||||
!(template = LockResource16( hDlgTmpl )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
template = SYSRES_GetResPtr( SYSRES_DIALOG_OPEN_FILE );
|
||||
win32Format = TRUE;
|
||||
if (lpofn->Flags & OFN_WINE32) {
|
||||
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
|
||||
{
|
||||
if (!(template = LockResource32( lpofn->hInstance )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (lpofn->Flags & OFN_ENABLETEMPLATE)
|
||||
{
|
||||
if (!(hResInfo = FindResource32A(lpofn->hInstance,
|
||||
PTR_SEG_TO_LIN(lpofn->lpTemplateName), (LPSTR)RT_DIALOG)))
|
||||
{
|
||||
CommDlgLastError = CDERR_FINDRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
if (!(hDlgTmpl = LoadResource32( lpofn->hInstance, hResInfo )) ||
|
||||
!(template = LockResource32( hDlgTmpl )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
template = SYSRES_GetResPtr( SYSRES_DIALOG_OPEN_FILE );
|
||||
}
|
||||
win32Format = TRUE;
|
||||
} else {
|
||||
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
|
||||
{
|
||||
if (!(template = LockResource16( lpofn->hInstance )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (lpofn->Flags & OFN_ENABLETEMPLATE)
|
||||
{
|
||||
if (!(hResInfo = FindResource16(lpofn->hInstance,
|
||||
lpofn->lpTemplateName, RT_DIALOG)))
|
||||
{
|
||||
CommDlgLastError = CDERR_FINDRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
if (!(hDlgTmpl = LoadResource16( lpofn->hInstance, hResInfo )) ||
|
||||
!(template = LockResource16( hDlgTmpl )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
template = SYSRES_GetResPtr( SYSRES_DIALOG_OPEN_FILE );
|
||||
win32Format = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
hInst = WIN_GetWindowInstance( lpofn->hwndOwner );
|
||||
|
@ -103,7 +130,12 @@ BOOL16 GetOpenFileName( SEGPTR ofn )
|
|||
ofn, WIN_PROC_16 );
|
||||
if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner );
|
||||
|
||||
if (hDlgTmpl) FreeResource16( hDlgTmpl );
|
||||
if (hDlgTmpl) {
|
||||
if (lpofn->Flags & OFN_WINE32)
|
||||
FreeResource32( hDlgTmpl );
|
||||
else
|
||||
FreeResource16( hDlgTmpl );
|
||||
}
|
||||
|
||||
dprintf_commdlg(stddeb,"GetOpenFileName // return lpstrFile='%s' !\n",
|
||||
(LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFile));
|
||||
|
@ -114,45 +146,74 @@ BOOL16 GetOpenFileName( SEGPTR ofn )
|
|||
/***********************************************************************
|
||||
* GetSaveFileName (COMMDLG.2)
|
||||
*/
|
||||
BOOL16 GetSaveFileName( SEGPTR ofn)
|
||||
BOOL16 GetSaveFileName16( SEGPTR ofn)
|
||||
{
|
||||
HINSTANCE16 hInst;
|
||||
HANDLE16 hDlgTmpl = 0;
|
||||
HANDLE32 hDlgTmpl = 0;
|
||||
BOOL32 bRet = FALSE, win32Format = FALSE;
|
||||
LPOPENFILENAME lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(ofn);
|
||||
LPOPENFILENAME16 lpofn = (LPOPENFILENAME16)PTR_SEG_TO_LIN(ofn);
|
||||
LPCVOID template;
|
||||
HWND32 hwndDialog;
|
||||
|
||||
if (!lpofn || !FileDlg_Init()) return FALSE;
|
||||
|
||||
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
|
||||
{
|
||||
if (!(template = LockResource16( lpofn->hInstance )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (lpofn->Flags & OFN_ENABLETEMPLATE)
|
||||
{
|
||||
HANDLE16 hResInfo;
|
||||
if (!(hResInfo = FindResource16(lpofn->hInstance,
|
||||
lpofn->lpTemplateName, RT_DIALOG)))
|
||||
{
|
||||
CommDlgLastError = CDERR_FINDRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
if (!(hDlgTmpl = LoadResource16( lpofn->hInstance, hResInfo )) ||
|
||||
!(template = LockResource16( hDlgTmpl )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
template = SYSRES_GetResPtr( SYSRES_DIALOG_SAVE_FILE );
|
||||
win32Format = TRUE;
|
||||
if (lpofn->Flags & OFN_WINE32) {
|
||||
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
|
||||
{
|
||||
if (!(template = LockResource32( lpofn->hInstance )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (lpofn->Flags & OFN_ENABLETEMPLATE)
|
||||
{
|
||||
HANDLE32 hResInfo;
|
||||
if (!(hResInfo = FindResource32A(lpofn->hInstance,
|
||||
PTR_SEG_TO_LIN(lpofn->lpTemplateName), (LPSTR)RT_DIALOG)))
|
||||
{
|
||||
CommDlgLastError = CDERR_FINDRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
if (!(hDlgTmpl = LoadResource32(lpofn->hInstance,hResInfo)) ||
|
||||
!(template = LockResource32(hDlgTmpl)))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
win32Format= TRUE;
|
||||
} else {
|
||||
template = SYSRES_GetResPtr( SYSRES_DIALOG_SAVE_FILE );
|
||||
win32Format = TRUE;
|
||||
}
|
||||
} else {
|
||||
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE)
|
||||
{
|
||||
if (!(template = LockResource16( lpofn->hInstance )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (lpofn->Flags & OFN_ENABLETEMPLATE)
|
||||
{
|
||||
HANDLE16 hResInfo;
|
||||
if (!(hResInfo = FindResource16(lpofn->hInstance,
|
||||
lpofn->lpTemplateName, RT_DIALOG)))
|
||||
{
|
||||
CommDlgLastError = CDERR_FINDRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
if (!(hDlgTmpl = LoadResource16( lpofn->hInstance, hResInfo )) ||
|
||||
!(template = LockResource16( hDlgTmpl )))
|
||||
{
|
||||
CommDlgLastError = CDERR_LOADRESFAILURE;
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
template = SYSRES_GetResPtr( SYSRES_DIALOG_SAVE_FILE );
|
||||
win32Format = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
hInst = WIN_GetWindowInstance( lpofn->hwndOwner );
|
||||
|
@ -163,7 +224,12 @@ BOOL16 GetSaveFileName( SEGPTR ofn)
|
|||
ofn, WIN_PROC_16 );
|
||||
if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner );
|
||||
|
||||
if (hDlgTmpl) FreeResource16( hDlgTmpl );
|
||||
if (hDlgTmpl) {
|
||||
if (lpofn->Flags & OFN_WINE32)
|
||||
FreeResource32( hDlgTmpl );
|
||||
else
|
||||
FreeResource16( hDlgTmpl );
|
||||
}
|
||||
|
||||
dprintf_commdlg(stddeb, "GetSaveFileName // return lpstrFile='%s' !\n",
|
||||
(LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFile));
|
||||
|
@ -342,7 +408,7 @@ static LONG FILEDLG_WMMeasureItem(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
|||
/***********************************************************************
|
||||
* FILEDLG_HookCallChk [internal]
|
||||
*/
|
||||
static int FILEDLG_HookCallChk(LPOPENFILENAME lpofn)
|
||||
static int FILEDLG_HookCallChk(LPOPENFILENAME16 lpofn)
|
||||
{
|
||||
if (lpofn)
|
||||
if (lpofn->Flags & OFN_ENABLEHOOK)
|
||||
|
@ -351,6 +417,25 @@ static int FILEDLG_HookCallChk(LPOPENFILENAME lpofn)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static BOOL32 FILEDLG_CallWindowProc(LPOPENFILENAME16 lpofn,HWND32 hwnd,
|
||||
UINT32 wMsg,WPARAM32 wParam,LPARAM lParam
|
||||
) {
|
||||
if (!(lpofn->Flags & OFN_WINE32))
|
||||
return (BOOL32)CallWindowProc16(
|
||||
lpofn->lpfnHook,hwnd,(UINT16)wMsg,(WPARAM16)wParam,lParam
|
||||
);
|
||||
/* |OFN_WINE32 */
|
||||
if (lpofn->Flags & OFN_UNICODE)
|
||||
return (BOOL32)CallWindowProc32W(
|
||||
(WNDPROC32)lpofn->lpfnHook,hwnd,wMsg,wParam,lParam
|
||||
);
|
||||
/* ! |OFN_UNICODE */
|
||||
return (BOOL32)CallWindowProc32A(
|
||||
(WNDPROC32)lpofn->lpfnHook,hwnd,wMsg,wParam,lParam
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* FILEDLG_WMInitDialog [internal]
|
||||
*/
|
||||
|
@ -358,11 +443,11 @@ static int FILEDLG_HookCallChk(LPOPENFILENAME lpofn)
|
|||
static LONG FILEDLG_WMInitDialog(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
||||
{
|
||||
int i, n;
|
||||
LPOPENFILENAME lpofn;
|
||||
LPOPENFILENAME16 lpofn;
|
||||
char tmpstr[512];
|
||||
LPSTR pstr;
|
||||
SetWindowLong32A(hWnd, DWL_USER, lParam);
|
||||
lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(lParam);
|
||||
lpofn = (LPOPENFILENAME16)PTR_SEG_TO_LIN(lParam);
|
||||
if (lpofn->lpstrTitle) SetWindowText16( hWnd, lpofn->lpstrTitle );
|
||||
/* read custom filter information */
|
||||
if (lpofn->lpstrCustomFilter)
|
||||
|
@ -433,8 +518,7 @@ static LONG FILEDLG_WMInitDialog(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
|||
if (lpofn->Flags & OFN_HIDEREADONLY)
|
||||
ShowWindow32(GetDlgItem32(hWnd, chx1), SW_HIDE);
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
return (BOOL16)CallWindowProc16(lpofn->lpfnHook,
|
||||
hWnd, WM_INITDIALOG, wParam, lParam );
|
||||
return (BOOL16)FILEDLG_CallWindowProc(lpofn,hWnd,WM_INITDIALOG,wParam,lParam );
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -445,8 +529,8 @@ static LONG FILEDLG_WMInitDialog(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
|||
static LRESULT FILEDLG_WMCommand(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
||||
{
|
||||
LONG lRet;
|
||||
LPOPENFILENAME lpofn;
|
||||
OPENFILENAME ofn2;
|
||||
LPOPENFILENAME16 lpofn;
|
||||
OPENFILENAME16 ofn2;
|
||||
char tmpstr[512], tmpstr2[512];
|
||||
LPSTR pstr, pstr2;
|
||||
UINT16 control,notification;
|
||||
|
@ -455,7 +539,7 @@ static LRESULT FILEDLG_WMCommand(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
|||
control = wParam;
|
||||
notification = HIWORD(lParam);
|
||||
|
||||
lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
|
||||
lpofn = (LPOPENFILENAME16)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
|
||||
switch (control)
|
||||
{
|
||||
case lst1: /* file list */
|
||||
|
@ -472,7 +556,7 @@ static LRESULT FILEDLG_WMCommand(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
|||
SEGPTR_FREE(pstr);
|
||||
}
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
CallWindowProc16(lpofn->lpfnHook, hWnd,
|
||||
FILEDLG_CallWindowProc(lpofn,hWnd,
|
||||
RegisterWindowMessage32A( LBSELCHSTRING ),
|
||||
control, MAKELONG(lRet,CD_LBSELCHANGE));
|
||||
/* FIXME: for OFN_ALLOWMULTISELECT we need CD_LBSELSUB, CD_SELADD, CD_LBSELNOITEMS */
|
||||
|
@ -610,7 +694,7 @@ static LRESULT FILEDLG_WMCommand(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
|||
}
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
{
|
||||
lRet= (BOOL16)CallWindowProc16(lpofn->lpfnHook,
|
||||
lRet= (BOOL16)FILEDLG_CallWindowProc(lpofn,
|
||||
hWnd, RegisterWindowMessage32A( FILEOKSTRING ), 0, lParam );
|
||||
if (lRet)
|
||||
{
|
||||
|
@ -636,12 +720,12 @@ static LRESULT FILEDLG_WMCommand(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
|
|||
*/
|
||||
LRESULT FileOpenDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam)
|
||||
{
|
||||
LPOPENFILENAME lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
|
||||
LPOPENFILENAME16 lpofn = (LPOPENFILENAME16)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
|
||||
|
||||
if (wMsg!=WM_INITDIALOG)
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
{
|
||||
LRESULT lRet=(BOOL16)CallWindowProc16(lpofn->lpfnHook, hWnd, wMsg, wParam, lParam);
|
||||
LRESULT lRet=(BOOL16)FILEDLG_CallWindowProc(lpofn,hWnd,wMsg,wParam,lParam);
|
||||
if (lRet)
|
||||
return lRet; /* else continue message processing */
|
||||
}
|
||||
|
@ -679,12 +763,12 @@ LRESULT FileOpenDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam
|
|||
*/
|
||||
LRESULT FileSaveDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam)
|
||||
{
|
||||
LPOPENFILENAME lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
|
||||
LPOPENFILENAME16 lpofn = (LPOPENFILENAME16)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
|
||||
|
||||
if (wMsg!=WM_INITDIALOG)
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
{
|
||||
LRESULT lRet=(BOOL16)CallWindowProc16(lpofn->lpfnHook, hWnd, wMsg, wParam, lParam);
|
||||
LRESULT lRet=(BOOL16)FILEDLG_CallWindowProc(lpofn,hWnd,wMsg,wParam,lParam);
|
||||
if (lRet)
|
||||
return lRet; /* else continue message processing */
|
||||
}
|
||||
|
@ -1089,11 +1173,10 @@ DWORD CommDlgExtendedError(void)
|
|||
return CommDlgLastError;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* GetFileTitle (COMMDLG.27)
|
||||
* GetFileTitleA (COMDLG32.8)
|
||||
*/
|
||||
short GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf)
|
||||
short GetFileTitle32A(LPCSTR lpFile, LPSTR lpTitle, UINT32 cbBuf)
|
||||
{
|
||||
int i, len;
|
||||
dprintf_commdlg(stddeb,"GetFileTitle(%p %p %d); \n", lpFile, lpTitle, cbBuf);
|
||||
|
@ -1124,6 +1207,30 @@ short GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf)
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* GetFileTitleA (COMDLG32.8)
|
||||
*/
|
||||
short GetFileTitle32W(LPCWSTR lpFile, LPWSTR lpTitle, UINT32 cbBuf)
|
||||
{
|
||||
LPSTR file = HEAP_strdupWtoA(GetProcessHeap(),0,lpFile);
|
||||
LPSTR title = HeapAlloc(GetProcessHeap(),0,cbBuf);
|
||||
short ret;
|
||||
|
||||
ret = GetFileTitle32A(file,title,cbBuf);
|
||||
|
||||
lstrcpynAtoW(lpTitle,title,cbBuf);
|
||||
HeapFree(GetProcessHeap(),0,file);
|
||||
HeapFree(GetProcessHeap(),0,title);
|
||||
return ret;
|
||||
}
|
||||
/***********************************************************************
|
||||
* GetFileTitle (COMMDLG.27)
|
||||
*/
|
||||
short GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf) {
|
||||
return GetFileTitle32A(lpFile,lpTitle,cbBuf);
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------ Choose Color Dialog --------------------------- */
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -2873,3 +2980,183 @@ LRESULT FormatCharDlgProc(HWND16 hDlg, UINT16 message, WPARAM16 wParam, LPARAM l
|
|||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
#define GET_XXX_FILENAME(xxx) \
|
||||
BOOL32 xxx##32A( LPOPENFILENAME32A ofn ) \
|
||||
{ \
|
||||
BOOL16 ret; \
|
||||
LPOPENFILENAME16 ofn16 = SEGPTR_ALLOC(sizeof(OPENFILENAME16)); \
|
||||
\
|
||||
memset(ofn16,'\0',sizeof(*ofn16)); \
|
||||
ofn16->lStructSize = sizeof(*ofn16); \
|
||||
ofn16->hwndOwner = ofn->hwndOwner; \
|
||||
ofn16->hInstance = ofn->hInstance; \
|
||||
if (ofn->lpstrFilter) { \
|
||||
LPSTR s,x; \
|
||||
\
|
||||
/* filter is a list... title\0ext\0......\0\0 */ \
|
||||
s = (LPSTR)ofn->lpstrFilter; \
|
||||
while (*s) \
|
||||
s = s+strlen(s)+1; \
|
||||
s++; \
|
||||
x = (LPSTR)SEGPTR_ALLOC(s-ofn->lpstrFilter); \
|
||||
memcpy(x,ofn->lpstrFilter,s-ofn->lpstrFilter); \
|
||||
ofn16->lpstrFilter = SEGPTR_GET(x); \
|
||||
} \
|
||||
if (ofn->lpstrCustomFilter) { \
|
||||
LPSTR s,x; \
|
||||
\
|
||||
/* filter is a list... title\0ext\0......\0\0 */ \
|
||||
s = (LPSTR)ofn->lpstrCustomFilter; \
|
||||
while (*s) \
|
||||
s = s+strlen(s)+1; \
|
||||
x = SEGPTR_ALLOC(s-ofn->lpstrCustomFilter); \
|
||||
s++; \
|
||||
memcpy(x,ofn->lpstrCustomFilter,s-ofn->lpstrCustomFilter);\
|
||||
ofn16->lpstrCustomFilter = SEGPTR_GET(x); \
|
||||
} \
|
||||
ofn16->nMaxCustFilter = ofn->nMaxCustFilter; \
|
||||
ofn16->nFilterIndex = ofn->nFilterIndex; \
|
||||
ofn16->lpstrFile = SEGPTR_GET(SEGPTR_ALLOC(ofn->nMaxFile)); \
|
||||
ofn16->nMaxFile = ofn->nMaxFile; \
|
||||
if (ofn->lpstrFileTitle) \
|
||||
ofn16->lpstrFileTitle= SEGPTR_GET(SEGPTR_STRDUP(ofn->lpstrFileTitle));\
|
||||
ofn16->nMaxFileTitle = ofn->nMaxFileTitle; \
|
||||
if (ofn->lpstrInitialDir) \
|
||||
ofn16->lpstrInitialDir = SEGPTR_GET(SEGPTR_STRDUP(ofn->lpstrInitialDir));\
|
||||
if (ofn->lpstrTitle) \
|
||||
ofn16->lpstrTitle = SEGPTR_GET(SEGPTR_STRDUP(ofn->lpstrTitle));\
|
||||
ofn16->Flags = ofn->Flags|OFN_WINE32; \
|
||||
ofn16->nFileOffset = ofn->nFileOffset; \
|
||||
ofn16->nFileExtension = ofn->nFileExtension; \
|
||||
if (ofn->lpstrDefExt) \
|
||||
ofn16->lpstrDefExt = SEGPTR_GET(SEGPTR_STRDUP(ofn->lpstrDefExt));\
|
||||
ofn16->lCustData = ofn->lCustData; \
|
||||
ofn16->lpfnHook = (WNDPROC16)ofn->lpfnHook; \
|
||||
\
|
||||
if (ofn->lpTemplateName) \
|
||||
ofn16->lpTemplateName = SEGPTR_GET(SEGPTR_STRDUP(ofn->lpTemplateName));\
|
||||
\
|
||||
ret = xxx##16(SEGPTR_GET(ofn16)); \
|
||||
\
|
||||
if (ofn16->lpstrFilter) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrFilter)); \
|
||||
if (ofn16->lpTemplateName) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpTemplateName)); \
|
||||
if (ofn16->lpstrDefExt) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrDefExt)); \
|
||||
if (ofn16->lpstrTitle) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrTitle)); \
|
||||
if (ofn16->lpstrInitialDir) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrInitialDir)); \
|
||||
if (ofn16->lpstrCustomFilter) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrCustomFilter)); \
|
||||
\
|
||||
strcpy(ofn->lpstrFile,PTR_SEG_TO_LIN(ofn16->lpstrFile)); \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrFile)); \
|
||||
\
|
||||
if (ofn16->lpstrFileTitle) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrFileTitle)); \
|
||||
SEGPTR_FREE(ofn16); \
|
||||
return ret; \
|
||||
} \
|
||||
\
|
||||
BOOL32 xxx##32W( LPOPENFILENAME32W ofn ) \
|
||||
{ \
|
||||
BOOL16 ret; \
|
||||
LPOPENFILENAME16 ofn16 = SEGPTR_ALLOC(sizeof(OPENFILENAME16)); \
|
||||
\
|
||||
memset(ofn16,'\0',sizeof(*ofn16)); \
|
||||
ofn16->lStructSize = sizeof(*ofn16); \
|
||||
ofn16->hwndOwner = ofn->hwndOwner; \
|
||||
ofn16->hInstance = ofn->hInstance; \
|
||||
if (ofn->lpstrFilter) { \
|
||||
LPWSTR s; \
|
||||
LPSTR x,y; \
|
||||
int n; \
|
||||
\
|
||||
/* filter is a list... title\0ext\0......\0\0 */ \
|
||||
s = (LPWSTR)ofn->lpstrFilter; \
|
||||
while (*s) \
|
||||
s = s+lstrlen32W(s)+1; \
|
||||
s++; \
|
||||
n = s - ofn->lpstrFilter; /* already divides by 2. ptr magic */\
|
||||
x = y = (LPSTR)SEGPTR_ALLOC(n); \
|
||||
s = (LPWSTR)ofn->lpstrFilter; \
|
||||
while (*s) { \
|
||||
lstrcpyWtoA(x,s); \
|
||||
x+=lstrlen32A(x)+1; \
|
||||
s+=lstrlen32W(s)+1; \
|
||||
} \
|
||||
*x=0; \
|
||||
ofn16->lpstrFilter = SEGPTR_GET(y); \
|
||||
} \
|
||||
if (ofn->lpstrCustomFilter) { \
|
||||
LPWSTR s; \
|
||||
LPSTR x,y; \
|
||||
int n; \
|
||||
\
|
||||
/* filter is a list... title\0ext\0......\0\0 */ \
|
||||
s = (LPWSTR)ofn->lpstrCustomFilter; \
|
||||
while (*s) \
|
||||
s = s+lstrlen32W(s)+1; \
|
||||
s++; \
|
||||
n = s - ofn->lpstrCustomFilter; \
|
||||
x = y = (LPSTR)SEGPTR_ALLOC(n); \
|
||||
s = (LPWSTR)ofn->lpstrCustomFilter; \
|
||||
while (*s) { \
|
||||
lstrcpyWtoA(x,s); \
|
||||
x+=lstrlen32A(x)+1; \
|
||||
s+=lstrlen32W(s)+1; \
|
||||
} \
|
||||
*x=0; \
|
||||
ofn16->lpstrCustomFilter = SEGPTR_GET(y); \
|
||||
} \
|
||||
ofn16->nMaxCustFilter = ofn->nMaxCustFilter; \
|
||||
ofn16->nFilterIndex = ofn->nFilterIndex; \
|
||||
ofn16->lpstrFile = SEGPTR_GET(SEGPTR_ALLOC(ofn->nMaxFile)); \
|
||||
ofn16->nMaxFile = ofn->nMaxFile; \
|
||||
if (ofn->lpstrFileTitle) \
|
||||
ofn16->lpstrFileTitle= SEGPTR_GET(SEGPTR_STRDUP_WtoA(ofn->lpstrFileTitle));\
|
||||
ofn16->nMaxFileTitle = ofn->nMaxFileTitle; \
|
||||
if (ofn->lpstrInitialDir) \
|
||||
ofn16->lpstrInitialDir = SEGPTR_GET(SEGPTR_STRDUP_WtoA(ofn->lpstrInitialDir));\
|
||||
if (ofn->lpstrTitle) \
|
||||
ofn16->lpstrTitle = SEGPTR_GET(SEGPTR_STRDUP_WtoA(ofn->lpstrTitle));\
|
||||
ofn16->Flags = ofn->Flags|OFN_WINE32|OFN_UNICODE; \
|
||||
ofn16->nFileOffset = ofn->nFileOffset; \
|
||||
ofn16->nFileExtension = ofn->nFileExtension; \
|
||||
if (ofn->lpstrDefExt) \
|
||||
ofn16->lpstrDefExt = SEGPTR_GET(SEGPTR_STRDUP_WtoA(ofn->lpstrDefExt));\
|
||||
ofn16->lCustData = ofn->lCustData; \
|
||||
ofn16->lpfnHook = (WNDPROC16)ofn->lpfnHook; \
|
||||
if (ofn->lpTemplateName) { \
|
||||
ofn16->lpTemplateName = SEGPTR_GET(SEGPTR_STRDUP_WtoA(ofn->lpTemplateName));\
|
||||
} \
|
||||
ret = xxx##16(SEGPTR_GET(ofn16)); \
|
||||
\
|
||||
if (ofn16->lpstrFilter) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrFilter)); \
|
||||
if (ofn16->lpTemplateName) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpTemplateName)); \
|
||||
if (ofn16->lpstrDefExt) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrDefExt)); \
|
||||
if (ofn16->lpstrTitle) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrTitle)); \
|
||||
if (ofn16->lpstrInitialDir) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrInitialDir)); \
|
||||
if (ofn16->lpstrCustomFilter) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrCustomFilter)); \
|
||||
\
|
||||
lstrcpyAtoW(ofn->lpstrFile,PTR_SEG_TO_LIN(ofn16->lpstrFile)); \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrFile)); \
|
||||
\
|
||||
if (ofn16->lpstrFileTitle) \
|
||||
SEGPTR_FREE(PTR_SEG_TO_LIN(ofn16->lpstrFileTitle)); \
|
||||
SEGPTR_FREE(ofn16); \
|
||||
return ret; \
|
||||
}
|
||||
|
||||
GET_XXX_FILENAME(GetOpenFileName)
|
||||
GET_XXX_FILENAME(GetSaveFileName)
|
||||
|
|
|
@ -912,6 +912,19 @@ CRTDLL_atexit(LPVOID x) {
|
|||
return 0; /* successful */
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* mbstowcs (CRTDLL.429)
|
||||
* FIXME: check multibyte support
|
||||
*/
|
||||
INT32
|
||||
CRTDLL_mbstowcs(LPWSTR a,LPSTR b,INT32 nr) {
|
||||
int i;
|
||||
for (i=0;(i<nr) && b[i];i++) {
|
||||
a[i] = (WCHAR)b[i];
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* mbtowc (CRTDLL.430)
|
||||
* FIXME: check multibyte support
|
||||
|
|
|
@ -40,8 +40,16 @@ DWORD
|
|||
DrvGetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, LPDWORD lpType,
|
||||
LPBYTE lpPrinterData, int cbData, LPDWORD lpNeeded)
|
||||
{
|
||||
fprintf(stderr,"In DrvGetPrinterData printer %p profile %p lpType %p \n",
|
||||
lpPrinter, lpProfile, lpType);
|
||||
fprintf(stderr,"In DrvGetPrinterData ");
|
||||
if (HIWORD(lpPrinter))
|
||||
fprintf(stderr,"printer %s ",lpPrinter);
|
||||
else
|
||||
fprintf(stderr,"printer %p ",lpPrinter);
|
||||
if (HIWORD(lpProfile))
|
||||
fprintf(stderr,"profile %s ",lpProfile);
|
||||
else
|
||||
fprintf(stderr,"profile %p ",lpProfile);
|
||||
fprintf(stderr,"lpType %p\n",lpType);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -51,8 +59,16 @@ DWORD
|
|||
DrvSetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, LPDWORD lpType,
|
||||
LPBYTE lpPrinterData, DWORD dwSize)
|
||||
{
|
||||
fprintf(stderr,"In DrvSetPrinterData printer %p profile %p lpType %p \n",
|
||||
lpPrinter, lpProfile, lpType);
|
||||
fprintf(stderr,"In DrvSetPrinterData ");
|
||||
if (HIWORD(lpPrinter))
|
||||
fprintf(stderr,"printer %s ",lpPrinter);
|
||||
else
|
||||
fprintf(stderr,"printer %p ",lpPrinter);
|
||||
if (HIWORD(lpProfile))
|
||||
fprintf(stderr,"profile %s ",lpProfile);
|
||||
else
|
||||
fprintf(stderr,"profile %p ",lpProfile);
|
||||
fprintf(stderr,"lpType %p\n",lpType);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ typedef struct {
|
|||
WAVEOPENDESC waveDesc;
|
||||
WORD wFlags;
|
||||
PCMWAVEFORMAT Format;
|
||||
LPWAVEHDR lpQueueHdr;
|
||||
SEGPTR lp16QueueHdr; /* Segmented LPWAVEHDR */
|
||||
DWORD dwTotalPlayed;
|
||||
} LINUX_WAVEOUT;
|
||||
|
||||
|
@ -58,7 +58,7 @@ typedef struct {
|
|||
WAVEOPENDESC waveDesc;
|
||||
WORD wFlags;
|
||||
PCMWAVEFORMAT Format;
|
||||
LPWAVEHDR lpQueueHdr;
|
||||
SEGPTR lp16QueueHdr; /* Segmented LPWAVEHDR */
|
||||
DWORD dwTotalRecorded;
|
||||
} LINUX_WAVEIN;
|
||||
|
||||
|
@ -296,6 +296,7 @@ static DWORD WAVE_mciCue(UINT16 wDevID, DWORD dwParam, LPMCI_GENERIC_PARMS lpPar
|
|||
dwRet = wodMessage(wDevID, WODM_CLOSE, 0, 0L, 0L);
|
||||
if (dwRet != MMSYSERR_NOERROR) return MCIERR_INTERNAL;
|
||||
dwRet = widMessage(wDevID, WIDM_OPEN, 0, (DWORD)lpDesc, CALLBACK_NULL);
|
||||
MCIWavDev[wDevID].fInput = TRUE;
|
||||
}
|
||||
else if (MCIWavDev[wDevID].fInput) {
|
||||
/* FIXME this is just a hack WInDev should be hidden here */
|
||||
|
@ -304,6 +305,7 @@ static DWORD WAVE_mciCue(UINT16 wDevID, DWORD dwParam, LPMCI_GENERIC_PARMS lpPar
|
|||
dwRet = widMessage(wDevID, WIDM_CLOSE, 0, 0L, 0L);
|
||||
if (dwRet != MMSYSERR_NOERROR) return MCIERR_INTERNAL;
|
||||
dwRet = wodMessage(wDevID, WODM_OPEN, 0, (DWORD)lpDesc, CALLBACK_NULL);
|
||||
MCIWavDev[wDevID].fInput = FALSE;
|
||||
}
|
||||
|
||||
USER_HEAP_FREE(hDesc);
|
||||
|
@ -347,7 +349,7 @@ static DWORD WAVE_mciPlay(UINT16 wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms
|
|||
HGLOBAL16 hData;
|
||||
HLOCAL16 hWaveHdr;
|
||||
LPWAVEHDR lpWaveHdr;
|
||||
LPWAVEHDR lp16WaveHdr;
|
||||
SEGPTR lp16WaveHdr;
|
||||
DWORD dwRet;
|
||||
|
||||
dprintf_mciwave(stddeb,
|
||||
|
@ -398,10 +400,10 @@ static DWORD WAVE_mciPlay(UINT16 wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms
|
|||
lpWaveHdr->dwFlags = 0L;
|
||||
lpWaveHdr->dwLoops = 0L;
|
||||
hWaveHdr = USER_HEAP_ALLOC(sizeof(WAVEHDR));
|
||||
lp16WaveHdr = (LPWAVEHDR) USER_HEAP_SEG_ADDR(hWaveHdr);
|
||||
lp16WaveHdr = USER_HEAP_SEG_ADDR(hWaveHdr);
|
||||
memcpy(PTR_SEG_TO_LIN(lp16WaveHdr), lpWaveHdr, sizeof(WAVEHDR));
|
||||
lpWaveHdr = PTR_SEG_TO_LIN(lp16WaveHdr);
|
||||
dwRet = wodMessage(wDevID, WODM_PREPARE, 0, (DWORD)lp16WaveHdr, sizeof(WAVEHDR));
|
||||
dwRet = wodMessage(wDevID, WODM_PREPARE, 0, lp16WaveHdr, sizeof(WAVEHDR));
|
||||
while(TRUE) {
|
||||
count = mmioRead(MCIWavDev[wDevID].hFile,
|
||||
PTR_SEG_TO_LIN(lpWaveHdr->lpData), bufsize);
|
||||
|
@ -411,9 +413,9 @@ static DWORD WAVE_mciPlay(UINT16 wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms
|
|||
/* lpWaveHdr->dwBytesRecorded = count; */
|
||||
dprintf_mciwave(stddeb,"WAVE_mciPlay // before WODM_WRITE lpWaveHdr=%p dwBufferLength=%lu dwBytesRecorded=%lu\n",
|
||||
lpWaveHdr, lpWaveHdr->dwBufferLength, lpWaveHdr->dwBytesRecorded);
|
||||
dwRet = wodMessage(wDevID, WODM_WRITE, 0, (DWORD)lp16WaveHdr, sizeof(WAVEHDR));
|
||||
dwRet = wodMessage(wDevID, WODM_WRITE, 0, lp16WaveHdr, sizeof(WAVEHDR));
|
||||
}
|
||||
dwRet = wodMessage(wDevID, WODM_UNPREPARE, 0, (DWORD)lp16WaveHdr, sizeof(WAVEHDR));
|
||||
dwRet = wodMessage(wDevID, WODM_UNPREPARE, 0, lp16WaveHdr, sizeof(WAVEHDR));
|
||||
if (lpWaveHdr->lpData != NULL) {
|
||||
GlobalUnlock16(hData);
|
||||
GlobalFree16(hData);
|
||||
|
@ -439,7 +441,7 @@ static DWORD WAVE_mciRecord(UINT16 wDevID, DWORD dwFlags, LPMCI_RECORD_PARMS lpP
|
|||
HGLOBAL16 hData;
|
||||
HLOCAL16 hWaveHdr;
|
||||
LPWAVEHDR lpWaveHdr;
|
||||
LPWAVEHDR lp16WaveHdr;
|
||||
SEGPTR lp16WaveHdr;
|
||||
DWORD dwRet;
|
||||
|
||||
dprintf_mciwave(stddeb,
|
||||
|
@ -474,7 +476,7 @@ static DWORD WAVE_mciRecord(UINT16 wDevID, DWORD dwFlags, LPMCI_RECORD_PARMS lpP
|
|||
lpWaveHdr->dwFlags = 0L;
|
||||
lpWaveHdr->dwLoops = 0L;
|
||||
hWaveHdr = USER_HEAP_ALLOC(sizeof(WAVEHDR));
|
||||
lp16WaveHdr = (LPWAVEHDR) USER_HEAP_SEG_ADDR(hWaveHdr);
|
||||
lp16WaveHdr = USER_HEAP_SEG_ADDR(hWaveHdr);
|
||||
memcpy(PTR_SEG_TO_LIN(lp16WaveHdr), lpWaveHdr, sizeof(WAVEHDR));
|
||||
lpWaveHdr = PTR_SEG_TO_LIN(lp16WaveHdr);
|
||||
dwRet = widMessage(wDevID, WIDM_PREPARE, 0, (DWORD)lp16WaveHdr, sizeof(WAVEHDR));
|
||||
|
@ -926,7 +928,7 @@ static DWORD wodOpen(WORD wDevID, LPWAVEOPENDESC lpDesc, DWORD dwFlags)
|
|||
dprintf_mciwave(stddeb, "Linux 'wodOpen' // CALLBACK_FUNCTION !\n");
|
||||
break;
|
||||
}
|
||||
WOutDev[wDevID].lpQueueHdr = NULL;
|
||||
WOutDev[wDevID].lp16QueueHdr = NULL;
|
||||
WOutDev[wDevID].unixdev = audio;
|
||||
WOutDev[wDevID].dwTotalPlayed = 0;
|
||||
WOutDev[wDevID].bufsize = abuf_size;
|
||||
|
@ -986,10 +988,14 @@ static DWORD wodClose(WORD wDevID)
|
|||
dprintf_mciwave(stddeb,"Linux 'wodClose' // can't close !\n");
|
||||
return MMSYSERR_NOTENABLED;
|
||||
}
|
||||
if (WOutDev[wDevID].lp16QueueHdr != NULL) {
|
||||
dprintf_mciwave(stddeb,"linux 'wodclose' // still buffers open !\n");
|
||||
return WAVERR_STILLPLAYING;
|
||||
}
|
||||
close(WOutDev[wDevID].unixdev);
|
||||
WOutDev[wDevID].unixdev = 0;
|
||||
WOutDev[wDevID].bufsize = 0;
|
||||
WOutDev[wDevID].lpQueueHdr = NULL;
|
||||
WOutDev[wDevID].lp16QueueHdr = NULL;
|
||||
if (WAVE_NotifyClient(wDevID, WOM_CLOSE, 0L, 0L) != MMSYSERR_NOERROR) {
|
||||
dprintf_mciwave(stddeb,"Linux 'wodClose' // can't notify client !\n");
|
||||
return MMSYSERR_INVALPARAM;
|
||||
|
@ -1000,11 +1006,11 @@ static DWORD wodClose(WORD wDevID)
|
|||
/**************************************************************************
|
||||
* wodWrite [internal]
|
||||
*/
|
||||
static DWORD wodWrite(WORD wDevID, DWORD lpWH, DWORD dwSize)
|
||||
static DWORD wodWrite(WORD wDevID, SEGPTR lp16WaveHdr, DWORD dwSize)
|
||||
{
|
||||
int count;
|
||||
LPSTR lpData;
|
||||
LPWAVEHDR lpWaveHdr = (LPWAVEHDR)PTR_SEG_TO_LIN(lpWH);
|
||||
LPWAVEHDR lpWaveHdr = (LPWAVEHDR)PTR_SEG_TO_LIN(lp16WaveHdr);
|
||||
|
||||
dprintf_mciwave(stddeb,"wodWrite(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
|
||||
if (WOutDev[wDevID].unixdev == 0) {
|
||||
|
@ -1031,7 +1037,7 @@ static DWORD wodWrite(WORD wDevID, DWORD lpWH, DWORD dwSize)
|
|||
WOutDev[wDevID].dwTotalPlayed += count;
|
||||
lpWaveHdr->dwFlags &= ~WHDR_INQUEUE;
|
||||
lpWaveHdr->dwFlags |= WHDR_DONE;
|
||||
if (WAVE_NotifyClient(wDevID, WOM_DONE, lpWH, 0) != MMSYSERR_NOERROR) {
|
||||
if (WAVE_NotifyClient(wDevID, WOM_DONE, lp16WaveHdr, count) != MMSYSERR_NOERROR) {
|
||||
dprintf_mciwave(stddeb,"Linux 'wodWrite' // can't notify client !\n");
|
||||
return MMSYSERR_INVALPARAM;
|
||||
}
|
||||
|
@ -1041,14 +1047,19 @@ static DWORD wodWrite(WORD wDevID, DWORD lpWH, DWORD dwSize)
|
|||
/**************************************************************************
|
||||
* wodPrepare [internal]
|
||||
*/
|
||||
static DWORD wodPrepare(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
|
||||
static DWORD wodPrepare(WORD wDevID, SEGPTR lp16WaveHdr, DWORD dwSize)
|
||||
{
|
||||
LPWAVEHDR lpWaveHdr;
|
||||
|
||||
dprintf_mciwave(stddeb,
|
||||
"wodPrepare(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
|
||||
"wodPrepare(%u, %p, %08lX);\n", wDevID, (void *)lp16WaveHdr, dwSize);
|
||||
if (WOutDev[wDevID].unixdev == 0) {
|
||||
dprintf_mciwave(stddeb,"Linux 'wodPrepare' // can't prepare !\n");
|
||||
return MMSYSERR_NOTENABLED;
|
||||
}
|
||||
|
||||
lpWaveHdr = PTR_SEG_TO_LIN(lp16WaveHdr);
|
||||
|
||||
/* the COOL waveeditor feels much better without this check...
|
||||
* someone please have a look at available documentation
|
||||
if (WOutDev[wDevID].lpQueueHdr != NULL) {
|
||||
|
@ -1057,7 +1068,7 @@ static DWORD wodPrepare(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
|
|||
}
|
||||
*/
|
||||
WOutDev[wDevID].dwTotalPlayed = 0;
|
||||
WOutDev[wDevID].lpQueueHdr = lpWaveHdr;
|
||||
WOutDev[wDevID].lp16QueueHdr = lp16WaveHdr;
|
||||
if (lpWaveHdr->dwFlags & WHDR_INQUEUE) return WAVERR_STILLPLAYING;
|
||||
lpWaveHdr->dwFlags |= WHDR_PREPARED;
|
||||
lpWaveHdr->dwFlags &= ~WHDR_DONE;
|
||||
|
@ -1075,6 +1086,13 @@ static DWORD wodUnprepare(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
|
|||
dprintf_mciwave(stddeb,"Linux 'wodUnprepare' // can't unprepare !\n");
|
||||
return MMSYSERR_NOTENABLED;
|
||||
}
|
||||
|
||||
lpWaveHdr->dwFlags &= ~WHDR_PREPARED;
|
||||
lpWaveHdr->dwFlags &= ~WHDR_INQUEUE;
|
||||
lpWaveHdr->dwFlags |= WHDR_DONE;
|
||||
WOutDev[wDevID].lp16QueueHdr = NULL;
|
||||
dprintf_mciwave(stddeb,
|
||||
"Linux 'wodUnprepare' // all headers unprepared !\n");
|
||||
return MMSYSERR_NOERROR;
|
||||
}
|
||||
|
||||
|
@ -1123,6 +1141,16 @@ static DWORD wodGetPosition(WORD wDevID, LPMMTIME lpTime, DWORD uSize)
|
|||
return MMSYSERR_NOTENABLED;
|
||||
}
|
||||
if (lpTime == NULL) return MMSYSERR_INVALPARAM;
|
||||
dprintf_mciwave(stddeb,"wodGetPosition // wType=%04X !\n",
|
||||
lpTime->wType);
|
||||
dprintf_mciwave(stddeb,"wodGetPosition // wBitsPerSample=%u\n",
|
||||
WOutDev[wDevID].Format.wBitsPerSample);
|
||||
dprintf_mciwave(stddeb,"wodGetPosition // nSamplesPerSec=%lu\n",
|
||||
WOutDev[wDevID].Format.wf.nSamplesPerSec);
|
||||
dprintf_mciwave(stddeb,"wodGetPosition // nChannels=%u\n",
|
||||
WOutDev[wDevID].Format.wf.nChannels);
|
||||
dprintf_mciwave(stddeb,"wodGetPosition // nAvgBytesPerSec=%lu\n",
|
||||
WOutDev[wDevID].Format.wf.nAvgBytesPerSec);
|
||||
switch(lpTime->wType) {
|
||||
case TIME_BYTES:
|
||||
lpTime->u.cb = WOutDev[wDevID].dwTotalPlayed;
|
||||
|
@ -1232,15 +1260,15 @@ DWORD wodMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
|
|||
case WODM_WRITE:
|
||||
return wodWrite(wDevID, dwParam1, dwParam2);
|
||||
case WODM_PAUSE:
|
||||
return 0L;
|
||||
return MMSYSERR_NOTSUPPORTED;
|
||||
case WODM_STOP:
|
||||
return 0L;
|
||||
return MMSYSERR_NOTSUPPORTED;
|
||||
case WODM_GETPOS:
|
||||
return wodGetPosition(wDevID, (LPMMTIME)PTR_SEG_TO_LIN(dwParam1), dwParam2);
|
||||
case WODM_BREAKLOOP:
|
||||
return 0L;
|
||||
return MMSYSERR_NOTSUPPORTED;
|
||||
case WODM_PREPARE:
|
||||
return wodPrepare(wDevID, (LPWAVEHDR)PTR_SEG_TO_LIN(dwParam1), dwParam2);
|
||||
return wodPrepare(wDevID, dwParam1, dwParam2);
|
||||
case WODM_UNPREPARE:
|
||||
return wodUnprepare(wDevID, (LPWAVEHDR)PTR_SEG_TO_LIN(dwParam1), dwParam2);
|
||||
case WODM_GETDEVCAPS:
|
||||
|
@ -1389,7 +1417,7 @@ static DWORD widOpen(WORD wDevID, LPWAVEOPENDESC lpDesc, DWORD dwFlags)
|
|||
dprintf_mciwave(stddeb, "Linux 'widOpen' // CALLBACK_FUNCTION !\n");
|
||||
break;
|
||||
}
|
||||
WInDev[wDevID].lpQueueHdr = NULL;
|
||||
WInDev[wDevID].lp16QueueHdr = NULL;
|
||||
WInDev[wDevID].unixdev = audio;
|
||||
WInDev[wDevID].bufsize = abuf_size;
|
||||
WInDev[wDevID].dwTotalRecorded = 0;
|
||||
|
@ -1442,6 +1470,10 @@ static DWORD widClose(WORD wDevID)
|
|||
dprintf_mciwave(stddeb,"Linux 'widClose' // can't close !\n");
|
||||
return MMSYSERR_NOTENABLED;
|
||||
}
|
||||
if (WInDev[wDevID].lp16QueueHdr != NULL) {
|
||||
dprintf_mciwave(stddeb,"linux 'widclose' // still buffers open !\n");
|
||||
return WAVERR_STILLPLAYING;
|
||||
}
|
||||
close(WInDev[wDevID].unixdev);
|
||||
WInDev[wDevID].unixdev = 0;
|
||||
WInDev[wDevID].bufsize = 0;
|
||||
|
@ -1455,10 +1487,12 @@ static DWORD widClose(WORD wDevID)
|
|||
/**************************************************************************
|
||||
* widAddBuffer [internal]
|
||||
*/
|
||||
static DWORD widAddBuffer(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
|
||||
static DWORD widAddBuffer(WORD wDevID, SEGPTR lp16WaveHdr, DWORD dwSize)
|
||||
{
|
||||
int count = 1;
|
||||
LPWAVEHDR lpWIHdr;
|
||||
LPWAVEHDR lpWaveHdr = (LPWAVEHDR)PTR_SEG_TO_LIN(lp16WaveHdr);
|
||||
|
||||
dprintf_mciwave(stddeb,
|
||||
"widAddBuffer(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
|
||||
if (WInDev[wDevID].unixdev == 0) {
|
||||
|
@ -1477,19 +1511,19 @@ static DWORD widAddBuffer(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
|
|||
lpWaveHdr->dwFlags |= WHDR_INQUEUE;
|
||||
lpWaveHdr->dwFlags &= ~WHDR_DONE;
|
||||
lpWaveHdr->dwBytesRecorded = 0;
|
||||
if (WInDev[wDevID].lpQueueHdr == NULL) {
|
||||
if (WInDev[wDevID].lp16QueueHdr == NULL) {
|
||||
/* begin the queue with a first header ... */
|
||||
WInDev[wDevID].lpQueueHdr = lpWaveHdr;
|
||||
WInDev[wDevID].lp16QueueHdr = lp16WaveHdr;
|
||||
WInDev[wDevID].dwTotalRecorded = 0;
|
||||
}
|
||||
else {
|
||||
/* added to the queue, except if it's the one just prepared ... */
|
||||
lpWIHdr = WInDev[wDevID].lpQueueHdr;
|
||||
while (lpWIHdr->lpNext != NULL) {
|
||||
lpWIHdr = lpWIHdr->lpNext;
|
||||
lpWIHdr = (LPWAVEHDR)PTR_SEG_TO_LIN(WInDev[wDevID].lp16QueueHdr);
|
||||
while (lpWIHdr->lp16Next != NULL) {
|
||||
lpWIHdr = (LPWAVEHDR)PTR_SEG_TO_LIN(lpWIHdr->lp16Next);
|
||||
count++;
|
||||
}
|
||||
lpWIHdr->lpNext = lpWaveHdr;
|
||||
lpWIHdr->lp16Next = lp16WaveHdr;
|
||||
count++;
|
||||
}
|
||||
dprintf_mciwave(stddeb,
|
||||
|
@ -1508,7 +1542,7 @@ static DWORD widPrepare(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
|
|||
dprintf_mciwave(stddeb,"Linux 'widPrepare' // can't prepare !\n");
|
||||
return MMSYSERR_NOTENABLED;
|
||||
}
|
||||
if (WInDev[wDevID].lpQueueHdr != NULL) {
|
||||
if (WInDev[wDevID].lp16QueueHdr != NULL) {
|
||||
dprintf_mciwave(stddeb,"Linux 'widPrepare' // already prepare !\n");
|
||||
return WAVERR_BADFORMAT;
|
||||
}
|
||||
|
@ -1535,7 +1569,7 @@ static DWORD widUnprepare(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
|
|||
lpWaveHdr->dwFlags &= ~WHDR_PREPARED;
|
||||
lpWaveHdr->dwFlags &= ~WHDR_INQUEUE;
|
||||
lpWaveHdr->dwFlags |= WHDR_DONE;
|
||||
WInDev[wDevID].lpQueueHdr = NULL;
|
||||
WInDev[wDevID].lp16QueueHdr = NULL;
|
||||
dprintf_mciwave(stddeb,
|
||||
"Linux 'widUnprepare' // all headers unprepared !\n");
|
||||
return MMSYSERR_NOERROR;
|
||||
|
@ -1547,40 +1581,45 @@ static DWORD widUnprepare(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
|
|||
static DWORD widStart(WORD wDevID)
|
||||
{
|
||||
int count = 1;
|
||||
int bytesRead;
|
||||
LPWAVEHDR lpWIHdr;
|
||||
SEGPTR lp16WaveHdr;
|
||||
|
||||
dprintf_mciwave(stddeb,"widStart(%u);\n", wDevID);
|
||||
if (WInDev[wDevID].unixdev == 0) {
|
||||
dprintf_mciwave(stddeb, "Linux 'widStart' // can't start recording !\n");
|
||||
return MMSYSERR_NOTENABLED;
|
||||
}
|
||||
if (WInDev[wDevID].lpQueueHdr == NULL ||
|
||||
WInDev[wDevID].lpQueueHdr->lpData == NULL) {
|
||||
|
||||
lp16WaveHdr = WInDev[wDevID].lp16QueueHdr;
|
||||
dprintf_mciwave(stddeb,"Linux 'widstart'// lp16WaveHdr = %08lx\n",(DWORD)lp16WaveHdr);
|
||||
if (lp16WaveHdr == NULL ||
|
||||
((LPWAVEHDR)PTR_SEG_TO_LIN(lp16WaveHdr))->lpData == NULL) {
|
||||
dprintf_mciwave(stddeb,"Linux 'widStart' // never been prepared !\n");
|
||||
return WAVERR_UNPREPARED;
|
||||
}
|
||||
lpWIHdr = WInDev[wDevID].lpQueueHdr;
|
||||
while(lpWIHdr != NULL) {
|
||||
|
||||
while(lp16WaveHdr != NULL) {
|
||||
lpWIHdr = (LPWAVEHDR)PTR_SEG_TO_LIN(lp16WaveHdr);
|
||||
lpWIHdr->dwBufferLength &= 0xFFFF;
|
||||
dprintf_mciwave(stddeb,
|
||||
"widStart // recording buf#%u=%p size=%lu \n",
|
||||
count, lpWIHdr->lpData, lpWIHdr->dwBufferLength);
|
||||
fflush(stddeb);
|
||||
read (WInDev[wDevID].unixdev,
|
||||
bytesRead = read (WInDev[wDevID].unixdev,
|
||||
PTR_SEG_TO_LIN(lpWIHdr->lpData),
|
||||
lpWIHdr->dwBufferLength);
|
||||
lpWIHdr->dwBytesRecorded = lpWIHdr->dwBufferLength;
|
||||
lpWIHdr->dwBytesRecorded = bytesRead;
|
||||
WInDev[wDevID].dwTotalRecorded += lpWIHdr->dwBytesRecorded;
|
||||
lpWIHdr->dwFlags &= ~WHDR_INQUEUE;
|
||||
lpWIHdr->dwFlags |= WHDR_DONE;
|
||||
|
||||
/* FIXME here should be a segmented address in stead of lpWIHdr */
|
||||
|
||||
if (WAVE_NotifyClient(wDevID, WIM_DATA, (DWORD)lpWIHdr, 0L) !=
|
||||
if (WAVE_NotifyClient(wDevID, WIM_DATA, (DWORD)lp16WaveHdr, lpWIHdr->dwBytesRecorded) !=
|
||||
MMSYSERR_NOERROR) {
|
||||
dprintf_mciwave(stddeb, "Linux 'widStart' // can't notify client !\n");
|
||||
return MMSYSERR_INVALPARAM;
|
||||
}
|
||||
lpWIHdr = lpWIHdr->lpNext;
|
||||
lp16WaveHdr = lpWIHdr->lp16Next ;
|
||||
count++;
|
||||
}
|
||||
dprintf_mciwave(stddeb,"widStart // end of recording !\n");
|
||||
|
@ -1697,7 +1736,7 @@ DWORD widMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
|
|||
case WIDM_CLOSE:
|
||||
return widClose(wDevID);
|
||||
case WIDM_ADDBUFFER:
|
||||
return widAddBuffer(wDevID, (LPWAVEHDR)PTR_SEG_TO_LIN(dwParam1), dwParam2);
|
||||
return widAddBuffer(wDevID, dwParam1, dwParam2);
|
||||
case WIDM_PREPARE:
|
||||
return widPrepare(wDevID, (LPWAVEHDR)PTR_SEG_TO_LIN(dwParam1), dwParam2);
|
||||
case WIDM_UNPREPARE:
|
||||
|
|
|
@ -92,6 +92,9 @@ static DWORD ANIM_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_OPEN_PARMS lpParms
|
|||
AnimDev[wDevID].dwTotalLen = 0;
|
||||
AnimDev[wDevID].lpdwTrackLen = NULL;
|
||||
AnimDev[wDevID].lpdwTrackPos = NULL;
|
||||
/*
|
||||
Moved to mmsystem.c mciOpen routine
|
||||
|
||||
if (dwFlags & MCI_NOTIFY) {
|
||||
dprintf_mcianim(stddeb,
|
||||
"ANIM_mciOpen // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
|
||||
|
@ -99,6 +102,7 @@ static DWORD ANIM_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_OPEN_PARMS lpParms
|
|||
mciDriverNotify((HWND16)LOWORD(lpParms->dwCallback),
|
||||
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
|
||||
}
|
||||
*/
|
||||
return 0;
|
||||
#else
|
||||
return MCIERR_HARDWARE;
|
||||
|
|
|
@ -270,6 +270,10 @@ static DWORD CDAUDIO_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_OPEN_PARMS lpPa
|
|||
dprintf_cdaudio(stddeb,"CDAUDIO_mciOpen // error reading TracksInfo !\n");
|
||||
/* return MCIERR_INTERNAL; */
|
||||
}
|
||||
|
||||
/*
|
||||
Moved to mmsystem.c mciOpen routine
|
||||
|
||||
if (dwFlags & MCI_NOTIFY) {
|
||||
dprintf_cdaudio(stddeb,
|
||||
"CDAUDIO_mciOpen // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
|
||||
|
@ -277,6 +281,7 @@ static DWORD CDAUDIO_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_OPEN_PARMS lpPa
|
|||
mciDriverNotify((HWND16)LOWORD(lpParms->dwCallback),
|
||||
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
|
||||
}
|
||||
*/
|
||||
return 0;
|
||||
#else
|
||||
return MCIERR_HARDWARE;
|
||||
|
|
|
@ -6,6 +6,11 @@
|
|||
/* FIXME: special commands of device drivers should be handled by those drivers
|
||||
*/
|
||||
|
||||
/* FIXME: this current implementation does not allow commands like
|
||||
* capability <filename> can play
|
||||
* which is allowed by the MCI standard.
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -57,7 +62,8 @@ LONG ANIM_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
|
|||
/* standard functionparameters for all functions */
|
||||
#define _MCISTR_PROTO_ \
|
||||
WORD wDevID,WORD uDevTyp,LPSTR lpstrReturnString,UINT16 uReturnLength,\
|
||||
LPCSTR dev,LPSTR *keywords,UINT16 nrofkeywords,DWORD dwFlags
|
||||
LPCSTR dev,LPSTR *keywords,UINT16 nrofkeywords,DWORD dwFlags,\
|
||||
HWND16 hwndCallback
|
||||
|
||||
/* copy string to return pointer including necessary checks
|
||||
* for use in mciSendString()
|
||||
|
@ -340,7 +346,7 @@ MCISTR_Open(_MCISTR_PROTO_) {
|
|||
}
|
||||
GetDrv(wDevID)->wType = uDevTyp;
|
||||
GetDrv(wDevID)->wDeviceID = 0; /* FIXME? for multiple devices */
|
||||
pU->openParams.dwCallback = 0;
|
||||
pU->openParams.dwCallback = hwndCallback ;
|
||||
pU->openParams.wDeviceID = wDevID;
|
||||
pU->ovlyopenParams.dwStyle = 0;
|
||||
pU->animopenParams.dwStyle = 0;
|
||||
|
@ -543,7 +549,7 @@ MCISTR_Status(_MCISTR_PROTO_) {
|
|||
MCI_STATUS_PARMS *statusParams = SEGPTR_NEW(MCI_STATUS_PARMS);
|
||||
int type = 0,i,res,timef;
|
||||
|
||||
statusParams->dwCallback = 0;
|
||||
statusParams->dwCallback = hwndCallback;
|
||||
dwFlags |= MCI_STATUS_ITEM;
|
||||
res = _MCISTR_determine_timeformat(dev,wDevID,uDevTyp,&timef);
|
||||
if (res) return res;
|
||||
|
@ -672,7 +678,7 @@ MCISTR_Set(_MCISTR_PROTO_) {
|
|||
union U *pU = SEGPTR_NEW(union U);
|
||||
int i,res;
|
||||
|
||||
pU->setParams.dwCallback = 0;
|
||||
pU->setParams.dwCallback = hwndCallback;
|
||||
i = 0;
|
||||
while (i<nrofkeywords) {
|
||||
FLAG2("door","open",MCI_SET_DOOR_OPEN);
|
||||
|
@ -931,7 +937,7 @@ MCISTR_Capability(_MCISTR_PROTO_) {
|
|||
MCI_GETDEVCAPS_PARMS *gdcParams = SEGPTR_NEW(MCI_GETDEVCAPS_PARMS);
|
||||
int type=0,i,res;
|
||||
|
||||
gdcParams->dwCallback = 0;
|
||||
gdcParams->dwCallback = hwndCallback;
|
||||
if (!nrofkeywords)
|
||||
return MCIERR_MISSING_STRING_ARGUMENT;
|
||||
/* well , thats default */
|
||||
|
@ -995,7 +1001,7 @@ MCISTR_Resume(_MCISTR_PROTO_)
|
|||
{
|
||||
MCI_GENERIC_PARMS *genParams = SEGPTR_NEW(MCI_GENERIC_PARMS);
|
||||
int res;
|
||||
genParams->dwCallback = 0;
|
||||
genParams->dwCallback = hwndCallback;
|
||||
_MCI_CALL_DRIVER( MCI_RESUME, SEGPTR_GET(genParams) );
|
||||
return res;
|
||||
}
|
||||
|
@ -1006,7 +1012,7 @@ MCISTR_Pause(_MCISTR_PROTO_)
|
|||
{
|
||||
MCI_GENERIC_PARMS *genParams = SEGPTR_NEW(MCI_GENERIC_PARMS);
|
||||
int res;
|
||||
genParams->dwCallback = 0;
|
||||
genParams->dwCallback = hwndCallback;
|
||||
_MCI_CALL_DRIVER( MCI_PAUSE, SEGPTR_GET(genParams) );
|
||||
return res;
|
||||
}
|
||||
|
@ -1017,7 +1023,7 @@ MCISTR_Stop(_MCISTR_PROTO_)
|
|||
{
|
||||
MCI_GENERIC_PARMS *genParams = SEGPTR_NEW(MCI_GENERIC_PARMS);
|
||||
int res;
|
||||
genParams->dwCallback = 0;
|
||||
genParams->dwCallback = hwndCallback;
|
||||
_MCI_CALL_DRIVER( MCI_STOP, SEGPTR_GET(genParams) );
|
||||
return res;
|
||||
}
|
||||
|
@ -1060,7 +1066,7 @@ MCISTR_Record(_MCISTR_PROTO_) {
|
|||
nrargs=1;
|
||||
break;
|
||||
}
|
||||
recordParams->dwCallback = 0;
|
||||
recordParams->dwCallback = hwndCallback;
|
||||
i = 0;
|
||||
while (i<nrofkeywords) {
|
||||
if (!strcmp(keywords[i],"to") && (i+1<nrofkeywords)) {
|
||||
|
@ -1149,7 +1155,7 @@ MCISTR_Play(_MCISTR_PROTO_) {
|
|||
nrargs=1;
|
||||
break;
|
||||
}
|
||||
pU->playParams.dwCallback=0;
|
||||
pU->playParams.dwCallback=hwndCallback;
|
||||
i=0;
|
||||
while (i<nrofkeywords) {
|
||||
if (!strcmp(keywords[i],"to") && (i+1<nrofkeywords)) {
|
||||
|
@ -1246,7 +1252,7 @@ MCISTR_Seek(_MCISTR_PROTO_) {
|
|||
nrargs=1;
|
||||
break;
|
||||
}
|
||||
seekParams->dwCallback=0;
|
||||
seekParams->dwCallback=hwndCallback;
|
||||
i=0;
|
||||
while (i<nrofkeywords) {
|
||||
if ( !STRCMP(keywords[i],"to") && (i+1<nrofkeywords)) {
|
||||
|
@ -2157,8 +2163,7 @@ DWORD mciSendString (LPCSTR lpstrCommand, LPSTR lpstrReturnString,
|
|||
continue;
|
||||
}
|
||||
if (!STRCMP(keywords[i],"notify")) {
|
||||
/* how should we callback? I don't know. */
|
||||
/*dwFlags |= MCI_NOTIFY;*/
|
||||
dwFlags |= MCI_NOTIFY;
|
||||
memcpy(keywords+i,keywords+(i+1),(nrofkeywords-i-1)*sizeof(char *));
|
||||
nrofkeywords--;
|
||||
continue;
|
||||
|
@ -2181,7 +2186,7 @@ DWORD mciSendString (LPCSTR lpstrCommand, LPSTR lpstrReturnString,
|
|||
if (!MMSYSTEM_DevIDValid(wDevID)) {
|
||||
dprintf_mci(stddeb, __FILE__":mciSendString:MAXMCIDRIVERS reached!\n");
|
||||
free(keywords);free(cmd);
|
||||
return MCIERR_INTERNAL;
|
||||
return MCIERR_INVALID_DEVICE_NAME;
|
||||
}
|
||||
}
|
||||
uDevTyp=GetDrv(wDevID)->wType;
|
||||
|
@ -2192,7 +2197,7 @@ DWORD mciSendString (LPCSTR lpstrCommand, LPSTR lpstrReturnString,
|
|||
res=MCISTR_cmdtable[i].fun(
|
||||
wDevID,uDevTyp,lpstrReturnString,
|
||||
uReturnLength,dev,(LPSTR*)keywords,nrofkeywords,
|
||||
dwFlags
|
||||
dwFlags,hwndCallback
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -91,14 +91,42 @@ static LINUX_MCIMIDI MCIMidiDev[MAX_MCIMIDIDRV];
|
|||
static DWORD MIDI_NotifyClient(UINT16 wDevID, WORD wMsg,
|
||||
DWORD dwParam1, DWORD dwParam2)
|
||||
{
|
||||
dprintf_midi(stddeb,"MIDI_NotifyClient // wDevID = %04X wMsg = %d dwParm1 = %04lX dwParam2 = %04lX\n",wDevID, wMsg, dwParam1, dwParam2);
|
||||
|
||||
#if defined(linux) || defined(__FreeBSD__)
|
||||
|
||||
switch (wMsg) {
|
||||
case MOM_OPEN:
|
||||
case MOM_CLOSE:
|
||||
case MOM_DONE:
|
||||
if (wDevID > MAX_MIDIOUTDRV) return MCIERR_INTERNAL;
|
||||
|
||||
if (MidiOutDev[wDevID].wFlags != DCB_NULL && !DriverCallback(
|
||||
MidiOutDev[wDevID].midiDesc.dwCallback,
|
||||
MidiOutDev[wDevID].wFlags,
|
||||
MidiOutDev[wDevID].midiDesc.hMidi,
|
||||
wMsg,
|
||||
MidiOutDev[wDevID].midiDesc.dwInstance,
|
||||
dwParam1,
|
||||
dwParam2)) {
|
||||
dprintf_midi(stddeb,"MIDI_NotifyClient // can't notify client !\n");
|
||||
return MMSYSERR_NOERROR;
|
||||
}
|
||||
break;
|
||||
|
||||
case MIM_OPEN:
|
||||
case MIM_CLOSE:
|
||||
if (wDevID > MAX_MIDIINDRV) return MCIERR_INTERNAL;
|
||||
|
||||
if (MidiInDev[wDevID].wFlags != DCB_NULL && !DriverCallback(
|
||||
MidiInDev[wDevID].midiDesc.dwCallback, MidiInDev[wDevID].wFlags,
|
||||
MidiInDev[wDevID].midiDesc.hMidi, wMsg,
|
||||
MidiInDev[wDevID].midiDesc.dwInstance, dwParam1, dwParam2)) {
|
||||
dprintf_midi(stddeb, "MIDI_NotifyClient // can't notify client !\n");
|
||||
dprintf_mciwave(stddeb,"MIDI_NotifyClient // can't notify client !\n");
|
||||
return MMSYSERR_NOERROR;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
#else
|
||||
return MMSYSERR_NOTENABLED;
|
||||
|
@ -293,6 +321,7 @@ static DWORD MIDI_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_OPEN_PARMS lpParms
|
|||
MCIMidiDev[wDevID].fShareable = dwFlags & MCI_OPEN_SHAREABLE;
|
||||
MCIMidiDev[wDevID].hMidiHdr = USER_HEAP_ALLOC(sizeof(MIDIHDR));
|
||||
}
|
||||
|
||||
dprintf_midi(stddeb, "MIDI_mciOpen // wDevID=%04X\n", wDevID);
|
||||
/* lpParms->wDeviceID = wDevID;*/
|
||||
dprintf_midi(stddeb, "MIDI_mciOpen // lpParms->wDevID=%04X\n", lpParms->wDeviceID);
|
||||
|
@ -352,15 +381,16 @@ static DWORD MIDI_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_OPEN_PARMS lpParms
|
|||
(LPSTR)&ckMainRIFF.ckid, (LPSTR)&ckMainRIFF.fccType,
|
||||
ckMainRIFF.cksize);
|
||||
}
|
||||
|
||||
dwRet = modMessage(wDevID, MODM_OPEN, 0, (DWORD)&MidiDesc, CALLBACK_NULL);
|
||||
/* dwRet = midMessage(wDevID, MIDM_OPEN, 0, (DWORD)&MidiDesc, CALLBACK_NULL); */
|
||||
/* dwRet = midMessage(wDevID, MIDM_OPEN, 0, (DWORD)&MidiDesc, CALLBACK_NULL);*/
|
||||
|
||||
return 0;
|
||||
#else
|
||||
return MMSYSERR_NOTENABLED;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* MIDI_mciStop [internal]
|
||||
*/
|
||||
|
@ -868,7 +898,12 @@ static DWORD MIDI_mciInfo(UINT16 wDevID, DWORD dwFlags, LPMCI_INFO_PARMS lpParms
|
|||
static DWORD midGetDevCaps(WORD wDevID, LPMIDIINCAPS lpCaps, DWORD dwSize)
|
||||
{
|
||||
dprintf_midi(stddeb, "midGetDevCaps(%04X, %p, %08lX);\n", wDevID, lpCaps, dwSize);
|
||||
return MMSYSERR_NOTENABLED;
|
||||
lpCaps->wMid = 0x00FF; /* Manufac ID */
|
||||
lpCaps->wPid = 0x0001; /* Product ID */
|
||||
lpCaps->vDriverVersion = 0x001; /* Product Version */
|
||||
strcpy(lpCaps->szPname, "Linux MIDIIN Driver");
|
||||
|
||||
return MMSYSERR_NOERROR;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -1051,7 +1086,21 @@ DWORD midMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
|
|||
static DWORD modGetDevCaps(WORD wDevID, LPMIDIOUTCAPS lpCaps, DWORD dwSize)
|
||||
{
|
||||
dprintf_midi(stddeb, "modGetDevCaps(%04X, %p, %08lX);\n", wDevID, lpCaps, dwSize);
|
||||
return MMSYSERR_NOTENABLED;
|
||||
lpCaps->wMid = 0x00FF; /* Manufac ID */
|
||||
lpCaps->wPid = 0x0001; /* Product ID */
|
||||
lpCaps->vDriverVersion = 0x001; /* Product Version */
|
||||
strcpy(lpCaps->szPname, "Linux MIDIOUT Driver version 0.01");
|
||||
/* FIXME
|
||||
Values are the same as I get with Borland TC 4.5
|
||||
*/
|
||||
|
||||
lpCaps->wTechnology = MOD_FMSYNTH;
|
||||
lpCaps->wVoices = 14; /* make it ioctl */
|
||||
lpCaps->wNotes = 14; /* make it ioctl */
|
||||
lpCaps->dwSupport = MIDICAPS_VOLUME|MIDICAPS_LRVOLUME;
|
||||
dprintf_midi(stddeb,"Linux modGetDevCaps // techn = %d voices=%d notes = %d support = %ld\n",lpCaps->wTechnology,lpCaps->wVoices,lpCaps->wNotes,lpCaps->dwSupport);
|
||||
|
||||
return MMSYSERR_NOERROR;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include "windows.h"
|
||||
#include "win.h"
|
||||
|
@ -280,20 +281,19 @@ BOOL16 DriverCallback(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev,
|
|||
dprintf_mmsys(stddeb, "DriverCallback() // CALLBACK_NULL !\n");
|
||||
break;
|
||||
case DCB_WINDOW:
|
||||
dprintf_mmsys(stddeb, "DriverCallback() // CALLBACK_WINDOW = %04lX!\n",dwCallBack);
|
||||
dprintf_mmsys(stddeb, "DriverCallback() // CALLBACK_WINDOW = %04lX handle = %04X!\n",dwCallBack,hDev);
|
||||
if (!IsWindow32(dwCallBack)) return FALSE;
|
||||
dprintf_mmsys(stddeb, "DriverCallback() // Device Handle = %04X\n", hDev);
|
||||
lpDesc = (LPWAVEOPENDESC) USER_HEAP_LIN_ADDR(hDev);
|
||||
if (lpDesc == NULL) return FALSE;
|
||||
|
||||
dprintf_mmsys(stddeb, "DriverCallback() // Before PostMessage16\n");
|
||||
PostMessage16((HWND16)dwCallBack, wMsg, hDev, dwParam1);
|
||||
break;
|
||||
case DCB_TASK:
|
||||
dprintf_mmsys(stddeb, "DriverCallback() // CALLBACK_TASK !\n");
|
||||
break;
|
||||
return FALSE;
|
||||
case DCB_FUNCTION:
|
||||
dprintf_mmsys(stddeb, "DriverCallback() // CALLBACK_FUNCTION !\n");
|
||||
CallTo16_word_wwlll((FARPROC16)dwCallBack,hDev,wMsg,dwUser,dwParam1,dwParam2);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
|
@ -715,7 +715,7 @@ DWORD mciOpen(DWORD dwParam, LPMCI_OPEN_PARMS lp16Parms)
|
|||
uDevTyp = LOWORD((DWORD)lpParms->lpstrDeviceType);
|
||||
GetOpenDrv(wDevID)->lpstrDeviceType=lpParms->lpstrDeviceType;
|
||||
} else {
|
||||
if (lpParms->lpstrDeviceType == NULL) return MCIERR_INTERNAL;
|
||||
if (lpParms->lpstrDeviceType == (SEGPTR)NULL) return MCIERR_INTERNAL;
|
||||
dprintf_mmsys(stddeb, "MCI_OPEN // Dev='%s' !\n",
|
||||
(char*)PTR_SEG_TO_LIN(lpParms->lpstrDeviceType));
|
||||
GetOpenDrv(wDevID)->lpstrDeviceType = SEGPTR_GET(
|
||||
|
@ -770,11 +770,14 @@ DWORD mciOpen(DWORD dwParam, LPMCI_OPEN_PARMS lp16Parms)
|
|||
return MCIERR_INVALID_DEVICE_NAME;
|
||||
}
|
||||
|
||||
|
||||
if (dwParam&MCI_NOTIFY)
|
||||
mciDriverNotify(lpParms->dwCallback,wDevID,
|
||||
(dwret==0?MCI_NOTIFY_SUCCESSFUL:MCI_NOTIFY_FAILURE));
|
||||
|
||||
/* only handled devices fall through */
|
||||
dprintf_mmsys(stddeb, "MCI_OPEN // wDevID = %04X wDeviceID = %d dwret = %ld\n",wDevID, lpParms->wDeviceID, dwret);
|
||||
return dwret;
|
||||
|
||||
/* return MCIERR_INTERNAL; */
|
||||
}
|
||||
|
||||
|
||||
|
@ -811,6 +814,11 @@ DWORD mciClose(UINT16 wDevID, DWORD dwParam, LPMCI_GENERIC_PARMS lpParms)
|
|||
dwRet = MCIERR_DEVICE_NOT_INSTALLED;
|
||||
}
|
||||
GetDrv(wDevID)->wType = 0;
|
||||
|
||||
if (dwParam&MCI_NOTIFY)
|
||||
mciDriverNotify(lpParms->dwCallback,wDevID,
|
||||
(dwRet==0?MCI_NOTIFY_SUCCESSFUL:MCI_NOTIFY_FAILURE));
|
||||
|
||||
dprintf_mmsys(stddeb, "mciClose() // returns %ld\n",dwRet);
|
||||
return dwRet;
|
||||
}
|
||||
|
@ -1046,7 +1054,7 @@ UINT16 midiOutGetNumDevs(void)
|
|||
UINT16 midiOutGetDevCaps(UINT16 uDeviceID, MIDIOUTCAPS * lpCaps, UINT16 uSize)
|
||||
{
|
||||
dprintf_mmsys(stddeb, "midiOutGetDevCaps\n");
|
||||
return 0;
|
||||
return modMessage(uDeviceID,MODM_GETDEVCAPS,0,(DWORD)lpCaps,uSize);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -1307,7 +1315,7 @@ UINT16 midiInGetDevCaps(UINT16 uDeviceID,
|
|||
LPMIDIINCAPS lpCaps, UINT16 uSize)
|
||||
{
|
||||
dprintf_mmsys(stddeb, "midiInGetDevCaps\n");
|
||||
return 0;
|
||||
return midMessage(uDeviceID,MIDM_GETDEVCAPS,0,(DWORD)lpCaps,uSize);;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -1592,6 +1600,7 @@ UINT16 waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT16 uDeviceID,
|
|||
lpDesc->lpFormat = lpFormat; /* should the struct be copied iso pointer? */
|
||||
lpDesc->dwCallBack = dwCallback;
|
||||
lpDesc->dwInstance = dwInstance;
|
||||
if (uDeviceID >= MAXWAVEDRIVERS) uDeviceID = 0;
|
||||
while(uDeviceID < MAXWAVEDRIVERS) {
|
||||
dwRet = wodMessage(uDeviceID, WODM_OPEN,
|
||||
lpDesc->dwInstance, (DWORD)lp16Desc, dwFlags);
|
||||
|
@ -1899,7 +1908,7 @@ UINT16 waveInOpen(HWAVEIN16 * lphWaveIn, UINT16 uDeviceID,
|
|||
lpDesc->uDeviceID = uDeviceID;
|
||||
if (dwFlags & WAVE_FORMAT_QUERY) {
|
||||
dprintf_mmsys(stddeb, "waveInOpen // End of WAVE_FORMAT_QUERY !\n");
|
||||
waveInClose(hWaveIn);
|
||||
dwRet = waveInClose(hWaveIn);
|
||||
}
|
||||
return dwRet;
|
||||
}
|
||||
|
@ -1934,7 +1943,7 @@ UINT16 waveInPrepareHeader(HWAVEIN16 hWaveIn,
|
|||
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
|
||||
if (lpWaveInHdr == NULL) return MMSYSERR_INVALHANDLE;
|
||||
lp32WaveInHdr = PTR_SEG_TO_LIN(lpWaveInHdr);
|
||||
lp32WaveInHdr->lpNext = NULL;
|
||||
lp32WaveInHdr->lp16Next = (SEGPTR)NULL;
|
||||
lp32WaveInHdr->dwBytesRecorded = 0;
|
||||
dprintf_mmsys(stddeb, "waveInPrepareHeader // lpData=%p size=%lu \n",
|
||||
lp32WaveInHdr->lpData, lp32WaveInHdr->dwBufferLength);
|
||||
|
@ -1960,7 +1969,7 @@ UINT16 waveInUnprepareHeader(HWAVEIN16 hWaveIn,
|
|||
lp32WaveInHdr = PTR_SEG_TO_LIN(lpWaveInHdr);
|
||||
USER_HEAP_FREE(HIWORD((DWORD)lp32WaveInHdr->lpData));
|
||||
lp32WaveInHdr->lpData = NULL;
|
||||
lp32WaveInHdr->lpNext = NULL;
|
||||
lp32WaveInHdr->lp16Next = (SEGPTR)NULL;
|
||||
return widMessage(lpDesc->uDeviceID, WIDM_UNPREPARE, lpDesc->dwInstance,
|
||||
(DWORD)lpWaveInHdr, uSize);
|
||||
}
|
||||
|
@ -1980,7 +1989,7 @@ UINT16 waveInAddBuffer(HWAVEIN16 hWaveIn,
|
|||
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
|
||||
if (lpWaveInHdr == NULL) return MMSYSERR_INVALHANDLE;
|
||||
lp32WaveInHdr = PTR_SEG_TO_LIN(lpWaveInHdr);
|
||||
lp32WaveInHdr->lpNext = NULL;
|
||||
lp32WaveInHdr->lp16Next = (SEGPTR)NULL;
|
||||
lp32WaveInHdr->dwBytesRecorded = 0;
|
||||
dprintf_mmsys(stddeb, "waveInAddBuffer // lpData=%p size=%lu \n",
|
||||
lp32WaveInHdr->lpData, lp32WaveInHdr->dwBufferLength);
|
||||
|
|
|
@ -305,11 +305,11 @@ BOOL32 DC_SetupGCForPen( DC * dc )
|
|||
switch (dc->w.ROPmode)
|
||||
{
|
||||
case R2_BLACK :
|
||||
val.foreground = BlackPixel(display, DefaultScreen(display));
|
||||
val.foreground = BlackPixelOfScreen( screen );
|
||||
val.function = GXcopy;
|
||||
break;
|
||||
case R2_WHITE :
|
||||
val.foreground = WhitePixel(display, DefaultScreen(display));
|
||||
val.foreground = WhitePixelOfScreen( screen );
|
||||
val.function = GXcopy;
|
||||
break;
|
||||
case R2_XORPEN :
|
||||
|
@ -317,8 +317,8 @@ BOOL32 DC_SetupGCForPen( DC * dc )
|
|||
/* It is very unlikely someone wants to XOR with 0 */
|
||||
/* This fixes the rubber-drawings in paintbrush */
|
||||
if (val.foreground == 0)
|
||||
val.foreground = BlackPixel(display, DefaultScreen(display))
|
||||
^ WhitePixel(display, DefaultScreen(display));
|
||||
val.foreground = BlackPixelOfScreen( screen )
|
||||
^ WhitePixelOfScreen( screen );
|
||||
val.function = GXxor;
|
||||
break;
|
||||
default :
|
||||
|
|
|
@ -797,6 +797,7 @@ BOOL32 GetTextMetrics32A( HDC32 hdc, TEXTMETRIC32A *metrics )
|
|||
Italic = % 3i\t LastChar = %03i\t\t MaxCharWidth = %i
|
||||
UnderLined = %01i\t DefaultChar = %03i\t Overhang = %i
|
||||
StruckOut = %01i\t BreakChar = %03i\t CharSet = %i
|
||||
PitchAndFamily = %02x
|
||||
--------------------
|
||||
InternalLeading = %i
|
||||
Ascent = %i
|
||||
|
@ -806,6 +807,7 @@ BOOL32 GetTextMetrics32A( HDC32 hdc, TEXTMETRIC32A *metrics )
|
|||
metrics->tmItalic, metrics->tmLastChar, metrics->tmMaxCharWidth,
|
||||
metrics->tmUnderlined, metrics->tmDefaultChar, metrics->tmOverhang,
|
||||
metrics->tmStruckOut, metrics->tmBreakChar, metrics->tmCharSet,
|
||||
metrics->tmPitchAndFamily,
|
||||
metrics->tmInternalLeading,
|
||||
metrics->tmAscent,
|
||||
metrics->tmDescent,
|
||||
|
@ -852,11 +854,11 @@ BOOL16 GetCharWidth16( HDC16 hdc, UINT16 firstChar, UINT16 lastChar,
|
|||
HeapFree(SystemHeap, 0, obuf32);
|
||||
}
|
||||
}
|
||||
else
|
||||
else /* happens quite often to warrant a special treatment */
|
||||
{
|
||||
INT32 chWidth;
|
||||
retVal = GetCharWidth32A(hdc, firstChar, lastChar, &chWidth );
|
||||
*buffer = chWidth;
|
||||
*buffer = chWidth;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
@ -868,6 +870,7 @@ BOOL16 GetCharWidth16( HDC16 hdc, UINT16 firstChar, UINT16 lastChar,
|
|||
BOOL32 GetCharWidth32A( HDC32 hdc, UINT32 firstChar, UINT32 lastChar,
|
||||
LPINT32 buffer )
|
||||
{
|
||||
UINT32 i, extra;
|
||||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc)
|
||||
{
|
||||
|
@ -879,6 +882,12 @@ BOOL32 GetCharWidth32A( HDC32 hdc, UINT32 firstChar, UINT32 lastChar,
|
|||
!dc->funcs->pGetCharWidth( dc, firstChar, lastChar, buffer))
|
||||
return FALSE;
|
||||
|
||||
/* convert device units to logical */
|
||||
|
||||
extra = dc->vportExtX >> 1;
|
||||
for( i = firstChar; i <= lastChar; i++, buffer++ )
|
||||
*buffer = (*buffer * dc->wndExtX + extra) / dc->vportExtX;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,19 +37,23 @@ static BRUSHOBJ WhiteBrush =
|
|||
static BRUSHOBJ LtGrayBrush =
|
||||
{
|
||||
{ 0, BRUSH_MAGIC, 1 }, /* header */
|
||||
/* FIXME : this should perhaps be BS_HATCHED, at least for 1 bitperpixel */
|
||||
{ BS_SOLID, RGB(192,192,192), 0 } /* logbrush */
|
||||
};
|
||||
|
||||
static BRUSHOBJ GrayBrush =
|
||||
{
|
||||
{ 0, BRUSH_MAGIC, 1 }, /* header */
|
||||
/* FIXME : this should perhaps be BS_HATCHED, at least for 1 bitperpixel */
|
||||
{ BS_SOLID, RGB(128,128,128), 0 } /* logbrush */
|
||||
};
|
||||
|
||||
static BRUSHOBJ DkGrayBrush =
|
||||
{
|
||||
{ 0, BRUSH_MAGIC, 1 }, /* header */
|
||||
{ BS_SOLID, RGB(64,64,64), 0 } /* logbrush */
|
||||
/* This is BS_HATCHED, for 1 bitperpixel. This makes the spray work in pbrush */
|
||||
/* NB_HATCH_STYLES is an index into HatchBrushes */
|
||||
{ BS_HATCHED, RGB(0,0,0), NB_HATCH_STYLES } /* logbrush */
|
||||
};
|
||||
|
||||
static BRUSHOBJ BlackBrush =
|
||||
|
@ -106,7 +110,7 @@ static FONTOBJ AnsiVarFont =
|
|||
static FONTOBJ SystemFont =
|
||||
{
|
||||
{ 0, FONT_MAGIC, 1 },
|
||||
{ 12, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET,
|
||||
{ 16, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET,
|
||||
0, 0, DEFAULT_QUALITY, VARIABLE_PITCH | FF_SWISS, "System" }
|
||||
};
|
||||
|
||||
|
|
|
@ -601,3 +601,15 @@ DWORD GetTabbedTextExtent32W( HDC32 hdc, LPCWSTR lpstr, INT32 count,
|
|||
HeapFree( GetProcessHeap(), 0, p );
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetTextCharset (USER32.226) (USER.612)
|
||||
*/
|
||||
INT32 GetTextCharset32(HDC32 hdc) {
|
||||
fprintf(stdnimp,"GetTextCharset(0x%x)\n",hdc);
|
||||
return DEFAULT_CHARSET; /* FIXME */
|
||||
}
|
||||
|
||||
INT16 GetTextCharset16(HDC16 hdc) {
|
||||
return GetTextCharset32(hdc);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
Tue Jun 3 07:47:42 1997 Marcel Baur <mbaur@g26.ethz.ch
|
||||
|
||||
* [Va.rc] (new)
|
||||
Added Vallader (Rumantsch Ladin) language support.
|
||||
|
||||
Wed Feb 12 00:58:37 1997 Elker Cavina <elker@mail.asianet.it>
|
||||
|
||||
* [It.rc] (new)
|
||||
|
|
|
@ -7,7 +7,7 @@ PROGRAMS = winhelp hlp2sgml
|
|||
ALL_LIBS = $(WINELIB) $(X_LIBS) $(XPM_LIB) $(XLIB) $(LDLIBS)
|
||||
RCFLAGS = -w32
|
||||
|
||||
LANGUAGES = En De Fr Fi Ko Hu It
|
||||
LANGUAGES = En De Fr Fi Ko Hu It Va
|
||||
|
||||
# Installation infos
|
||||
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Help Viewer
|
||||
*
|
||||
* Copyright 1996 Ulrich Schmid
|
||||
*
|
||||
* Rumantsch Ladin (Vallader) by mbaur@g26.ethz.ch
|
||||
*
|
||||
*/
|
||||
|
||||
/* This file is not yet complete !! */
|
||||
|
||||
#define LANGUAGE_ID Rl
|
||||
#define LANGUAGE_NUMBER C
|
||||
|
||||
/* Menu */
|
||||
|
||||
#define MENU_FILE "&Datoteca"
|
||||
#define MENU_FILE_OPEN "&Rivir"
|
||||
#define MENU_FILE_PRINT "&Stampar tema"
|
||||
#define MENU_FILE_PRINTER_SETUP "&Installaziun dal stampader..."
|
||||
#define MENU_FILE_EXIT "&Finir"
|
||||
|
||||
#define MENU_EDIT "&Lavurar"
|
||||
#define MENU_EDIT_COPY_DIALOG "&Capchar"
|
||||
#define MENU_EDIT_ANNOTATE "&Annotaziun..."
|
||||
|
||||
#define MENU_BOOKMARK "&Marca"
|
||||
#define MENU_BOOKMARK_DEFINE "&Definir..."
|
||||
|
||||
#define MENU_HELP "&Agüd"
|
||||
#define MENU_HELP_ON_HELP "&Douvrar l'agüd"
|
||||
#define MENU_HELP_ON_TOP "Adüna da&vant"
|
||||
#define MENU_HELP_INFO "I&nfuormaziuns"
|
||||
#define MENU_HELP_ABOUT_WINE "Davart &WINE"
|
||||
|
||||
/* Strings */
|
||||
|
||||
#define STRING_WINE_HELP "WINE agüd"
|
||||
#define STRING_ERROR "SBAGL"
|
||||
#define STRING_WARNING "ATTENZIUN"
|
||||
#define STRING_INFO "INFUORMAZIUN"
|
||||
#define STRING_NOT_IMPLEMENTED "Na implementa"
|
||||
#define STRING_HLPFILE_ERROR_s "Sbagl cun leger la datoteca d'agüd `%s'"
|
||||
#define STRING_CONTENTS "&Cuntgnü"
|
||||
#define STRING_SEARCH "&Tscherchar"
|
||||
#define STRING_BACK "&Inavo"
|
||||
#define STRING_HISTORY "&Fin qua"
|
||||
#define STRING_ALL_FILES "Tuot las datotecas (*.*)"
|
||||
#define STRING_HELP_FILES_HLP "Datotecas d'agüd (*.hlp)"
|
||||
|
||||
#include "Xx.rc"
|
|
@ -21,6 +21,7 @@ VOID LIBWINE_Register_Fr(void);
|
|||
VOID LIBWINE_Register_It(void);
|
||||
VOID LIBWINE_Register_Ko(void);
|
||||
VOID LIBWINE_Register_Hu(void);
|
||||
VOID LIBWINE_Register_Va(void);
|
||||
|
||||
static BOOL WINHELP_RegisterWinClasses();
|
||||
static LRESULT WINHELP_MainWndProc(HWND, UINT, WPARAM, LPARAM);
|
||||
|
@ -62,6 +63,7 @@ int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show)
|
|||
LIBWINE_Register_It();
|
||||
LIBWINE_Register_Ko();
|
||||
LIBWINE_Register_Hu();
|
||||
LIBWINE_Register_Va();
|
||||
#endif
|
||||
|
||||
Globals.hInstance = hInstance;
|
||||
|
|
|
@ -67,7 +67,8 @@ int dialog_get_fontsize(gen_res*);
|
|||
gen_res* dialog_caption(char*,gen_res*);
|
||||
gen_res* dialog_font(short,char*,gen_res*);
|
||||
gen_res* dialog_class(char*,gen_res*);
|
||||
gen_res* dialog_menu(char*,gen_res*);
|
||||
gen_res* dialog_menu_id(short,gen_res*);
|
||||
gen_res* dialog_menu_str(char*,gen_res*);
|
||||
gen_res* create_control_desc(int,int,int,int,int,rc_style*);
|
||||
gen_res* label_control_desc(char*,gen_res*);
|
||||
gen_res* create_generic_control(char*,int,char*,rc_style*,int,int,int,int);
|
||||
|
|
|
@ -72,7 +72,7 @@ resource_definition: accelerators {$$=$1;}
|
|||
;
|
||||
|
||||
/* have to use tBEGIN because BEGIN is predefined */
|
||||
accelerators: ACCELERATORS tBEGIN events tEND {$$=$3;$$->type=acc;}
|
||||
accelerators: ACCELERATORS load_and_memoption tBEGIN events tEND {$$=$4;$$->type=acc;}
|
||||
/* the events are collected in a gen_res, as the accelerator resource is just
|
||||
an array of events */
|
||||
events: {$$=new_res();}
|
||||
|
@ -113,7 +113,9 @@ dlg_attributes: {$$=new_dialog();}
|
|||
| CLASS tSTRING dlg_attributes
|
||||
{$$=dialog_class($2,$3);}
|
||||
| MENU tSTRING dlg_attributes
|
||||
{$$=dialog_menu($2,$3);}
|
||||
{$$=dialog_menu_str($2,$3);}
|
||||
| MENU NUMBER dlg_attributes
|
||||
{$$=dialog_menu_id($2,$3);}
|
||||
|
||||
/* the controls are collected into a gen_res, and finally the dialog header
|
||||
is put at the beginning */
|
||||
|
|
49
rc/winerc.c
49
rc/winerc.c
|
@ -354,7 +354,16 @@ gen_res* dialog_class(char* cap, gen_res*attr)
|
|||
return insert_string(attr,cap,dialog_get_class(attr),0);
|
||||
}
|
||||
|
||||
gen_res* dialog_menu(char* cap, gen_res*attr)
|
||||
gen_res* dialog_menu_id(short nr, gen_res*attr)
|
||||
{
|
||||
char c_nr[2];
|
||||
int offs=dialog_get_menu(attr);
|
||||
attr->res[offs] = 0xff;
|
||||
if (win32) attr->res[offs+1] = 0xff;
|
||||
put_WORD(c_nr,nr);
|
||||
return insert_bytes(attr,c_nr,offs+(win32?2:1),2);
|
||||
}
|
||||
gen_res* dialog_menu_str(char* cap, gen_res*attr)
|
||||
{
|
||||
return insert_string(attr,cap,dialog_get_menu(attr),0);
|
||||
}
|
||||
|
@ -415,10 +424,12 @@ gen_res* label_control_desc(char* label,gen_res* cd)
|
|||
gen_res* create_generic_control(char* label,int id,char* class,
|
||||
rc_style*style,int x,int y,int cx,int cy)
|
||||
{ gen_res* ret=new_res();
|
||||
int s=WS_VISIBLE|WS_CHILD; /*default styles for any control*/
|
||||
if(style)s=(s|style->or)&style->and;
|
||||
if(win32)
|
||||
{
|
||||
WORD cl;
|
||||
put_DWORD(ret->res+0,style->or);
|
||||
put_DWORD(ret->res+0,s);
|
||||
/* FIXME */
|
||||
/* put_DWORD(ret->res+4,exstyle->or); */
|
||||
put_WORD(ret->res+8,x);
|
||||
|
@ -430,12 +441,12 @@ gen_res* create_generic_control(char* label,int id,char* class,
|
|||
ret=insert_string(ret,label,20,0);
|
||||
/* is it a predefined class? */
|
||||
cl=0;
|
||||
if(!strcmp(class,"BUTTON"))cl=CT_BUTTON;
|
||||
if(!strcmp(class,"EDIT"))cl=CT_EDIT;
|
||||
if(!strcmp(class,"STATIC"))cl=CT_STATIC;
|
||||
if(!strcmp(class,"LISTBOX"))cl=CT_LISTBOX;
|
||||
if(!strcmp(class,"SCROLLBAR"))cl=CT_SCROLLBAR;
|
||||
if(!strcmp(class,"COMBOBOX"))cl=CT_COMBOBOX;
|
||||
if(!strcasecmp(class,"BUTTON"))cl=CT_BUTTON;
|
||||
if(!strcasecmp(class,"EDIT"))cl=CT_EDIT;
|
||||
if(!strcasecmp(class,"STATIC"))cl=CT_STATIC;
|
||||
if(!strcasecmp(class,"LISTBOX"))cl=CT_LISTBOX;
|
||||
if(!strcasecmp(class,"SCROLLBAR"))cl=CT_SCROLLBAR;
|
||||
if(!strcasecmp(class,"COMBOBOX"))cl=CT_COMBOBOX;
|
||||
if(cl) {
|
||||
char ffff[2]={0xff, 0xff};
|
||||
ret=insert_bytes(ret,ffff,18,2);
|
||||
|
@ -451,17 +462,17 @@ gen_res* create_generic_control(char* label,int id,char* class,
|
|||
put_WORD(ret->res+4,cx);
|
||||
put_WORD(ret->res+6,cy);
|
||||
put_WORD(ret->res+8,id);
|
||||
put_DWORD(ret->res+10,style->or);
|
||||
put_DWORD(ret->res+10,s);
|
||||
ret->size=17;
|
||||
ret=insert_string(ret,label,15,0);
|
||||
/* is it a predefined class? */
|
||||
cl=0;
|
||||
if(!strcmp(class,"BUTTON"))cl=CT_BUTTON;
|
||||
if(!strcmp(class,"EDIT"))cl=CT_EDIT;
|
||||
if(!strcmp(class,"STATIC"))cl=CT_STATIC;
|
||||
if(!strcmp(class,"LISTBOX"))cl=CT_LISTBOX;
|
||||
if(!strcmp(class,"SCROLLBAR"))cl=CT_SCROLLBAR;
|
||||
if(!strcmp(class,"COMBOBOX"))cl=CT_COMBOBOX;
|
||||
if(!strcasecmp(class,"BUTTON"))cl=CT_BUTTON;
|
||||
if(!strcasecmp(class,"EDIT"))cl=CT_EDIT;
|
||||
if(!strcasecmp(class,"STATIC"))cl=CT_STATIC;
|
||||
if(!strcasecmp(class,"LISTBOX"))cl=CT_LISTBOX;
|
||||
if(!strcasecmp(class,"SCROLLBAR"))cl=CT_SCROLLBAR;
|
||||
if(!strcasecmp(class,"COMBOBOX"))cl=CT_COMBOBOX;
|
||||
if(cl)ret->res[14]=cl;
|
||||
else ret=insert_string(ret,class,14,0);
|
||||
}
|
||||
|
@ -583,7 +594,11 @@ gen_res *load_file(char* name)
|
|||
gen_res *res;
|
||||
struct stat st;
|
||||
int f=open(name,O_RDONLY);
|
||||
if(!f)perror(name);
|
||||
if(f<0)
|
||||
{
|
||||
perror(name);
|
||||
exit(1);
|
||||
}
|
||||
fstat(f,&st);
|
||||
res=new_res();
|
||||
while(res->space<st.st_size)res=grow(res);
|
||||
|
@ -656,7 +671,9 @@ void add_str_tbl_elm(int id,char* str)
|
|||
while(*elm && (*elm)->group<group) elm=&(*elm)->next;
|
||||
if(!*elm || (*elm)->group!=group)
|
||||
{
|
||||
int i;
|
||||
str_tbl_elm* new=xmalloc(sizeof(str_tbl_elm));
|
||||
for(i=0; i<16; i++) new->strings[i] = NULL;
|
||||
new->group=group;
|
||||
new->next=*elm;
|
||||
*elm=new;
|
||||
|
|
|
@ -62,12 +62,13 @@ by the ordinal number corresponding to the function.
|
|||
- "word"
|
||||
- "long"
|
||||
- "ptr" (linear pointer)
|
||||
- "str" (linear pointer to a string)
|
||||
- "s_byte" (signed byte)
|
||||
- "s_word" (signed word)
|
||||
- "s_long" (signed long)
|
||||
- "segptr" (segmented pointer).
|
||||
|
||||
Only "ptr" and "long" are valid for Win32 functions.
|
||||
Only "ptr", "str" and "long" are valid for Win32 functions.
|
||||
|
||||
"HANDLERNAME" is the name of the actual Wine function that will
|
||||
process the request in 32-bit mode.
|
||||
|
|
|
@ -370,6 +370,8 @@ static int ParseExportFunction( ORDDEF *odp )
|
|||
odp->u.func.arg_types[i] = 'l';
|
||||
else if (!strcmp(token, "ptr"))
|
||||
odp->u.func.arg_types[i] = 'p';
|
||||
else if (!strcmp(token, "str"))
|
||||
odp->u.func.arg_types[i] = 't';
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "%d: Unknown variable type '%s'\n", Line, token);
|
||||
|
@ -1442,6 +1444,7 @@ static int TransferArgs16To32( FILE *outfile, char *args )
|
|||
break;
|
||||
|
||||
case 'p': /* ptr */
|
||||
case 't': /* string */
|
||||
/* Get the selector */
|
||||
fprintf( outfile, "\tmovw %d(%%ebp),%%ax\n", pos16 + 2 );
|
||||
/* Get the selector base */
|
||||
|
@ -1574,7 +1577,7 @@ static void RestoreContext16( FILE *outfile )
|
|||
* Build a 16-bit-to-Wine callback function. The syntax of the function
|
||||
* profile is: type_xxxxx, where 'type' is one of 'regs', 'word' or
|
||||
* 'long' and each 'x' is an argument ('w'=word, 's'=signed word,
|
||||
* 'l'=long, 'p'=pointer).
|
||||
* 'l'=long, 'p'=pointer, 't'=string).
|
||||
* For register functions, the arguments are ignored, but they are still
|
||||
* removed from the stack upon return.
|
||||
*
|
||||
|
@ -1736,6 +1739,7 @@ static void BuildCallFrom16Func( FILE *outfile, char *profile )
|
|||
argsize += 2;
|
||||
break;
|
||||
case 'p':
|
||||
case 't':
|
||||
case 'l':
|
||||
argsize += 4;
|
||||
break;
|
||||
|
|
|
@ -26,10 +26,10 @@ QueryPerformanceCounter(LPLARGE_INTEGER counter) {
|
|||
|
||||
/****************************************************************************
|
||||
* DisableThreadLibraryCalls (KERNEL32.74)
|
||||
* Don't call DllEntryPoint for DLL_THREAD_{ATTACH,DETACH} if set.
|
||||
*/
|
||||
BOOL32
|
||||
DisableThreadLibraryCalls(HMODULE32 hModule) {
|
||||
/* FIXME: stub for now */
|
||||
fprintf(stdnimp, "DisableThreadLibraryCalls Stub called!\n");
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -461,27 +461,25 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
|
|||
}
|
||||
|
||||
if( flags & DCX_NOCLIPCHILDREN )
|
||||
{
|
||||
{
|
||||
flags |= DCX_CACHE;
|
||||
flags &= ~(DCX_PARENTCLIP | DCX_CLIPCHILDREN);
|
||||
}
|
||||
|
||||
if (hwnd == GetDesktopWindow32() || !(wndPtr->dwStyle & WS_CHILD))
|
||||
flags &= ~DCX_PARENTCLIP;
|
||||
}
|
||||
|
||||
if (flags & DCX_WINDOW) flags = (flags & ~DCX_CLIPCHILDREN) | DCX_CACHE;
|
||||
|
||||
if( flags & DCX_PARENTCLIP )
|
||||
{
|
||||
if (!(wndPtr->dwStyle & WS_CHILD) || !wndPtr->parent ) flags &= ~DCX_PARENTCLIP;
|
||||
else if( flags & DCX_PARENTCLIP )
|
||||
{
|
||||
flags |= DCX_CACHE;
|
||||
if( !(flags & (DCX_CLIPSIBLINGS | DCX_CLIPCHILDREN)) )
|
||||
if( (wndPtr->dwStyle & WS_VISIBLE) && (wndPtr->parent->dwStyle & WS_VISIBLE) )
|
||||
{
|
||||
{
|
||||
flags &= ~DCX_CLIPCHILDREN;
|
||||
if( wndPtr->parent->dwStyle & WS_CLIPSIBLINGS )
|
||||
flags |= DCX_CLIPSIBLINGS;
|
||||
}
|
||||
}
|
||||
flags |= DCX_CLIPSIBLINGS;
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & DCX_CACHE)
|
||||
{
|
||||
|
@ -494,17 +492,17 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
|
|||
{
|
||||
dce = (wndPtr->class->style & CS_OWNDC)?wndPtr->dce:wndPtr->class->dce;
|
||||
if( dce->hwndCurrent == hwnd )
|
||||
{
|
||||
{
|
||||
dprintf_dc(stddeb,"\tskipping hVisRgn update\n");
|
||||
need_update = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if( hrgnClip && dce->hClipRgn && !(dce->DCXflags & DCX_KEEPCLIPRGN))
|
||||
{
|
||||
{
|
||||
fprintf(stdnimp,"GetDCEx: hClipRgn collision!\n");
|
||||
DeleteObject32( dce->hClipRgn );
|
||||
need_update = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dcx_flags = flags & ( DCX_CLIPSIBLINGS | DCX_CLIPCHILDREN | DCX_CACHE | DCX_WINDOW | DCX_WINDOWPAINT);
|
||||
|
@ -561,7 +559,7 @@ HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags )
|
|||
}
|
||||
else hrgnVisible = CreateRectRgn32( 0, 0, 0, 0 );
|
||||
|
||||
if ((flags & DCX_INTERSECTRGN) || (flags & DCX_EXCLUDERGN))
|
||||
if( flags & (DCX_EXCLUDERGN | DCX_INTERSECTRGN) )
|
||||
{
|
||||
dce->DCXflags |= flags & (DCX_KEEPCLIPRGN | DCX_INTERSECTRGN | DCX_EXCLUDERGN);
|
||||
dce->hClipRgn = hrgnClip;
|
||||
|
|
|
@ -451,7 +451,7 @@ static BOOL32 EVENT_QueryZOrder( WND* pWndCheck )
|
|||
|
||||
parent = __get_common_ancestor( pWndZ->window, pWnd->window,
|
||||
&children, &total );
|
||||
if( parent )
|
||||
if( parent && children )
|
||||
{
|
||||
w = __get_top_decoration( pWndCheck->window, parent );
|
||||
if( w != children[total - 1] )
|
||||
|
|
|
@ -105,6 +105,44 @@ static const int modifier_key[] =
|
|||
VK_MENU, VK_MENU, VK_MENU, VK_MENU /* FFE7 */
|
||||
};
|
||||
|
||||
/*
|
||||
* Table for vkey to scancode translation - 5/29/97 chrisf@america.com
|
||||
*/
|
||||
static BYTE vkey2scode[512] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0e,0x0f,0x00,0x00,0x00,0x1c,0x00,0x00,
|
||||
0x2a,0x1d,0x38,0x00,0x3a,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
|
||||
0x39,0x49,0x51,0x4f,0x47,0x4b,0x48,0x4d, 0x50,0x00,0x00,0x00,0x00,0x52,0x53,0x00,
|
||||
0x0b,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x1e,0x30,0x2e,0x20,0x12,0x21,0x22, 0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18,
|
||||
0x19,0x10,0x13,0x1f,0x14,0x16,0x2f,0x11, 0x2d,0x15,0x2c,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0b,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x37,0x4e,0x00,0x4a,0x34,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x46,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x29,0x0c,0x0d,0x1a,0x1b,0x2b,
|
||||
0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x28,0x33,0x34,0x35,0x4c,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
/* 256 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,
|
||||
0x00,0x1d,0x38,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x49,0x51,0x4f,0x47,0x4b,0x48,0x4d, 0x50,0x00,0x00,0x00,0x00,0x52,0x53,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x35,
|
||||
0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42, 0x43,0x44,0x57,0x58,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
};
|
||||
|
||||
static WORD EVENT_event_to_vkey( XKeyEvent *e)
|
||||
{
|
||||
|
@ -367,7 +405,7 @@ void KEYBOARD_HandleEvent( XKeyEvent *event )
|
|||
if (vkey)
|
||||
{
|
||||
keylp.lp1.count = 1;
|
||||
keylp.lp1.code = LOBYTE(event->keycode) - 8;
|
||||
keylp.lp1.code = vkey2scode[vkey]; /* 5/29/97 chrisf@america.com */
|
||||
keylp.lp1.extended = (vkey & 0x100 ? 1 : 0);
|
||||
keylp.lp1.win_internal = 0; /* this has something to do with dialogs,
|
||||
* don't remember where I read it - AK */
|
||||
|
|
|
@ -1012,8 +1012,9 @@ LRESULT SendMessage16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam)
|
|||
|
||||
if (hwnd == HWND_BROADCAST)
|
||||
{
|
||||
if (!(list = WIN_BuildWinArray( WIN_GetDesktop(), 0, NULL )))
|
||||
return TRUE;
|
||||
dprintf_msg(stddeb,"SendMessage // HWND_BROADCAST !\n");
|
||||
list = WIN_BuildWinArray( WIN_GetDesktop(), 0, NULL );
|
||||
for (ppWnd = list; *ppWnd; ppWnd++)
|
||||
{
|
||||
wndPtr = *ppWnd;
|
||||
|
@ -1023,9 +1024,9 @@ LRESULT SendMessage16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam)
|
|||
dprintf_msg(stddeb,"BROADCAST Message to hWnd=%04x m=%04X w=%04lX l=%08lX !\n",
|
||||
wndPtr->hwndSelf, msg, (DWORD)wParam, lParam);
|
||||
SendMessage16( wndPtr->hwndSelf, msg, wParam, lParam );
|
||||
}
|
||||
}
|
||||
}
|
||||
HeapFree( SystemHeap, 0, list );
|
||||
HeapFree( SystemHeap, 0, list );
|
||||
dprintf_msg(stddeb,"SendMessage // End of HWND_BROADCAST !\n");
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1099,7 +1100,8 @@ LRESULT SendMessage32A(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
|
|||
|
||||
if (hwnd == HWND_BROADCAST)
|
||||
{
|
||||
list = WIN_BuildWinArray( WIN_GetDesktop(), 0, NULL );
|
||||
if (!(list = WIN_BuildWinArray( WIN_GetDesktop(), 0, NULL )))
|
||||
return TRUE;
|
||||
for (ppWnd = list; *ppWnd; ppWnd++)
|
||||
{
|
||||
wndPtr = *ppWnd;
|
||||
|
@ -1148,7 +1150,8 @@ LRESULT SendMessage32W(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
|
|||
|
||||
if (hwnd == HWND_BROADCAST)
|
||||
{
|
||||
list = WIN_BuildWinArray( WIN_GetDesktop(), 0, NULL );
|
||||
if (!(list = WIN_BuildWinArray( WIN_GetDesktop(), 0, NULL )))
|
||||
return TRUE;
|
||||
for (ppWnd = list; *ppWnd; ppWnd++)
|
||||
{
|
||||
wndPtr = *ppWnd;
|
||||
|
|
10
wine.ini
10
wine.ini
|
@ -48,11 +48,11 @@ SymbolTableFile=./wine.sym
|
|||
AllocSystemColors=100
|
||||
|
||||
[fonts]
|
||||
; see documentation/fonts
|
||||
;Alias0 = System, --international-
|
||||
;Alias1 = MS Sans Serif, -adobe-helvetica-
|
||||
;Alias2 = Arial, -adobe-helvetica-, subst
|
||||
;Alias3 = Times New Roman, -adobe-times-, subst
|
||||
;Read documentation/fonts before changing this
|
||||
Alias0 = MS Sans Serif, -adobe-helvetica-
|
||||
;Alias1 = Arial, -adobe-helvetica-, subst
|
||||
;Alias2 = Times New Roman, -adobe-times-, subst
|
||||
Default = -adobe-times-
|
||||
|
||||
[serialports]
|
||||
Com1=/dev/cua0
|
||||
|
|
Loading…
Reference in New Issue