Skip to content
Snippets Groups Projects
Commit 7e6ae4ba authored by Alexandre Julliard's avatar Alexandre Julliard
Browse files

Release 961208

Sun Dec  8 14:51:57 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [configure.in]
	Added check to see if the compiler supports building a DLL when
	the --with-dll option is used.

	* [controls/listbox.c]
	Don't send LBN_SELCHANGE too often.
	Added WM_CHARTOITEM support.

	* [Make.rules.in] [library/Makefile.in]
	Build winestub.o and link it with Winelib programs.

	* [objects/text.c]
	Added support for '&&' in DrawText().

	* [tools/build.c]
	Added -o option.

Sat Dec 7 12:07:07 1996  Andrew Lewycky <plewycky@oise.utoronto.ca>

	* [win32/thread.c]
	GetCurrentThread(): return -2 (current thread pseudo-handle).
	GetCurrentThreadId(): return GetCurrentTask().

	* [objects/font.c] [if1632/gdi32.spec]
	GetTextExtentPoint32{A,W}Buggy(): for future bug-compatibility.

	* [win32/findfile.c]
	FindClose(): ignore INVALID_HANDLE_VALUE (like Win95).

	* [windows/hook.c] [include/hook.h] [if1632/user.spec]
	  [if1632/user32.spec] [windows/focus.c] [windows/message.c]
	  [windows/nonclient.c] [windows/win.c] [windows/winpos.c]
	Hooks rewritten to support Win32.

	* [misc/winsock.c]
	WINSOCK_select(): need to put sockets with errors into exceptfds.
	WINSOCK_socket(): fix error return.

	* [windows/win.c]
	SetWindowWord(): call SetParent on GWW_HWNDPARENT.

Wed Dec  4 22:03:05 1996  Andrew Taylor <andrew@riscan.com>

	* [files/dos_fs.c]
	Check if buf is NULL before copying string in GetFullPathName32A().

Wed Dec  4 21:40:59 1996  Robert Pouliot <krynos@clic.net>

        * [graphics/wing.c] [if1632/wing.spec]
	Implemented many WinG functions, but some don't seem to
	work correctly (probably due to the one not done).
	
Wed Dec  4 03:38:25 1996  Lee Jaekil <juria@puma.kaitech.re.kr>

	* [misc/main.c]
	Implemented a few more of the SystemParametersInfo() cases.

Sun Dec  1 22:30:00 1996  Alex Korobka <alex@trantor.pharm.sunysb.edu> 

	* [controls/button.c]
	Improved focus rectangle painting.

	* [windows/dialog.c] [windows/defdlg.c]
	Fixed IE3.0 problems with DWL_MSGRESULT.

Sun Dec  1 20:49:32 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [files/profile.c]
	Changed error handling in PROFILE_SetString().
parent da0cfb36
No related branches found
Tags wine-961208
No related merge requests found
This is release 961201 of Wine, the MS Windows emulator. This is still a
This is release 961208 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-961201: (see ChangeLog for details)
- Better Winsock.
- Rewritten listboxes.
- Windows 3.1 registry loader.
- Improved keyboard support.
WHAT'S NEW with Wine-961208: (see ChangeLog for details)
- Win32 hooks.
- fnt2bdf font conversion tool.
- Lots of bug fixes.
See the README file in the distribution for installation instructions.
......@@ -18,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-961201.tar.gz
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-961201.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-961201.tar.gz
ftp://aris.com/pub/linux/ALPHA/Wine/development/Wine-961201.tar.gz
ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-961208.tar.gz
ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-961208.tar.gz
ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-961208.tar.gz
ftp://aris.com/pub/linux/ALPHA/Wine/development/Wine-961208.tar.gz
It should also be available from any site that mirrors tsx-11 or sunsite.
......
......@@ -5,18 +5,13 @@ done something for one of the problems. You are encouraged to
add new entries and, more importantly, remove those for the
bugs you fixed ;-)
------------------------------------------------------------
As of Nov 8 1996 -
As of Dec 1 1996 -
General:
* Combobox code is very inadequate (no notification messages,
dropdown listboxes often stay visible, etc... ).
* Multicolumn and/or LBS_EXTENDEDSEL style listboxes are still
screwed up. [julliard@lrc.epfl.ch]
* Winsock asynchronous functions do not work.
* Font mapping is too generic. No soft font loading, no rotated
text support. [alex@amadeus.pharm.sunysb.edu]
......@@ -31,12 +26,16 @@ General:
Miscellaneous:
* Simple OLE actions were working in October release, got
broken in November (in Winword "Insert Object" now results in
segfault right after the call to LoadModule()).
* Write and other applications have problems with displaying partially
obscured bitmaps.
* Asynchronous Winsock services sometimes produce zombie processes.
* AllocCSToDSAlias() shouldn't alloc alias for the same segment multiple
times.
* ScrollWindowEx() is outdated.
* HCBT_CLICKSKIPPED/HCBT_KEYSKIPPED hook actions are not implemented.
* Write sometimes segfaults in StretchDIBits() (when inside BITBLT_GetRow)
when only lower part of the resulting image is visible.
Where to look in source files:
......
----------------------------------------------------------------------
Sun Dec 8 14:51:57 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [configure.in]
Added check to see if the compiler supports building a DLL when
the --with-dll option is used.
* [controls/listbox.c]
Don't send LBN_SELCHANGE too often.
Added WM_CHARTOITEM support.
* [Make.rules.in] [library/Makefile.in]
Build winestub.o and link it with Winelib programs.
* [objects/text.c]
Added support for '&&' in DrawText().
* [tools/build.c]
Added -o option.
Sat Dec 7 12:07:07 1996 Andrew Lewycky <plewycky@oise.utoronto.ca>
* [win32/thread.c]
GetCurrentThread(): return -2 (current thread pseudo-handle).
GetCurrentThreadId(): return GetCurrentTask().
* [objects/font.c] [if1632/gdi32.spec]
GetTextExtentPoint32{A,W}Buggy(): for future bug-compatibility.
* [win32/findfile.c]
FindClose(): ignore INVALID_HANDLE_VALUE (like Win95).
* [windows/hook.c] [include/hook.h] [if1632/user.spec]
[if1632/user32.spec] [windows/focus.c] [windows/message.c]
[windows/nonclient.c] [windows/win.c] [windows/winpos.c]
Hooks rewritten to support Win32.
* [misc/winsock.c]
WINSOCK_select(): need to put sockets with errors into exceptfds.
WINSOCK_socket(): fix error return.
* [windows/win.c]
SetWindowWord(): call SetParent on GWW_HWNDPARENT.
Wed Dec 4 22:03:05 1996 Andrew Taylor <andrew@riscan.com>
* [files/dos_fs.c]
Check if buf is NULL before copying string in GetFullPathName32A().
Wed Dec 4 21:40:59 1996 Robert Pouliot <krynos@clic.net>
* [graphics/wing.c] [if1632/wing.spec]
Implemented many WinG functions, but some don't seem to
work correctly (probably due to the one not done).
Wed Dec 4 03:38:25 1996 Lee Jaekil <juria@puma.kaitech.re.kr>
* [misc/main.c]
Implemented a few more of the SystemParametersInfo() cases.
Sun Dec 1 22:30:00 1996 Alex Korobka <alex@trantor.pharm.sunysb.edu>
* [controls/button.c]
Improved focus rectangle painting.
* [windows/dialog.c] [windows/defdlg.c]
Fixed IE3.0 problems with DWL_MSGRESULT.
Sun Dec 1 20:49:32 1996 Albrecht Kleine <kleine@ak.sax.de>
* [files/profile.c]
Changed error handling in PROFILE_SetString().
----------------------------------------------------------------------
Sat Nov 30 19:21:17 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
......
# Global rules shared by all makefiles -*-Makefile-*-
#
# Each individual makefile should define the following variables:
# TOPSRCDIR : top-level source directory
# TOPOBJDIR : top-level object directory
# SRCDIR : source directory for this module
# MODULE : name of the module being built
# C_SRCS : C sources for the module
# GEN_C_SRCS : generated C sources (optional)
# ASM_SRCS : assembly sources (optional)
# EXTRA_OBJS : extra object files (optional)
# TOPSRCDIR : top-level source directory
# TOPOBJDIR : top-level object directory
# SRCDIR : source directory for this module
# MODULE : name of the module being built
# C_SRCS : C sources for the module
# GEN_C_SRCS : generated C sources (optional)
# ASM_SRCS : assembly sources (optional)
# GEN_ASM_SRCS : generated assembly sources (optional)
# EXTRA_OBJS : extra object files (optional)
# First some useful definitions
......@@ -21,7 +22,7 @@ X_CFLAGS = @X_CFLAGS@
X_LIBS = @X_LIBS@
XPM_LIB = -lXpm
XLIB = @X_PRE_LIBS@ -lXext -lX11 @X_EXTRA_LIBS@
WINELIB = -L$(TOPOBJDIR) -lwine
WINELIB = $(WINESTUB) $(TOPOBJDIR)/@MAIN_TARGET@
LDLIBS = @LDLIBS@
YACC = @YACC@
LEX = @LEX@
......@@ -33,10 +34,12 @@ RM = rm -f
BUILD = $(TOPOBJDIR)/tools/build
MAKEDEP = $(TOPOBJDIR)/tools/makedep
WINERC = $(TOPOBJDIR)/rc/winerc
WINESTUB = $(TOPOBJDIR)/library/winestub.o
SUBMAKE = $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'OPTIONS=$(OPTIONS)'
@SET_MAKE@
OBJS = $(GEN_C_SRCS:.c=.o) $(C_SRCS:.c=.o) $(ASM_SRCS:.S=.o) $(EXTRA_OBJS)
OBJS = $(GEN_C_SRCS:.c=.o) $(C_SRCS:.c=.o) \
$(GEN_ASM_SRCS:.s=.o) $(ASM_SRCS:.S=.o) $(EXTRA_OBJS)
# Implicit rules
......@@ -45,6 +48,9 @@ OBJS = $(GEN_C_SRCS:.c=.o) $(C_SRCS:.c=.o) $(ASM_SRCS:.S=.o) $(EXTRA_OBJS)
.c.o:
$(CC) -c $(ALLCFLAGS) -o $*.o $<
.s.o:
$(CC) -c -o $*.o $<
.S.o:
$(CC) -c -o $*.o $<
......@@ -85,7 +91,7 @@ depend:: $(MAKEDEP) $(C_SRCS) $(GEN_C_SRCS)
$(MAKEDEP) $(DIVINCL) -C. $(GEN_C_SRCS) -C$(SRCDIR) $(C_SRCS)
clean::
$(RM) *.o \#*\# *~ *.bak *.orig *.rej *.flc winerctmp.c $(GEN_C_SRCS) $(GEN_C_SRCS:.c=.h) $(PROGRAMS)
$(RM) *.o \#*\# *~ *.bak *.orig *.rej *.flc winerctmp.c $(GEN_C_SRCS) $(GEN_C_SRCS:.c=.h) $(GEN_ASM_SRCS) $(PROGRAMS)
dummy:
......
This diff is collapsed.
......@@ -18,7 +18,7 @@ AC_ARG_WITH(library,
AC_ARG_WITH(dll,
[ --with-dll build Wine as a DLL instead of an emulator],
[OPTIONS="-DWINELIB -DWINELIBDLL" MAIN_TARGET="libwine.so.1.0" CFLAGS="$CFLAGS -fPIC"])
[OPTIONS="-DWINELIB" MAIN_TARGET="libwine.so.1.0"])
AC_ARG_WITH(ipc,
[ --with-ipc use inter-process communication for DDE],
......@@ -45,7 +45,6 @@ dnl **** Check for gcc strength-reduce bug ****
if test "x${GCC}" = "xyes"
then
CFLAGS="$CFLAGS -Wall"
AC_C_CROSS
AC_CACHE_CHECK( "for gcc strength-reduce bug", ac_cv_c_gcc_strength_bug,
AC_TRY_RUN([
int main(void) {
......@@ -83,6 +82,25 @@ then
AC_DEFINE(NEED_UNDERSCORE_PREFIX)
fi
dnl **** Check for working dll ****
if test "$MAIN_TARGET" = "libwine.so.1.0"
then
AC_CACHE_CHECK("whether we can build a dll",
ac_cv_c_dll,
[saved_cflags=$CFLAGS
CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0"
AC_TRY_LINK(,[return 1],ac_cv_c_dll="yes",ac_cv_c_dll="no")
CFLAGS=$saved_cflags
])
if test "$ac_cv_c_dll" = "yes"
then
CFLAGS="$CFLAGS -fPIC"
else
MAIN_TARGET="libwine.a"
fi
fi
dnl **** Check for functions and header files ****
AC_CHECK_FUNCS(memmove tcgetattr usleep)
......
......@@ -427,11 +427,15 @@ static void CB_Paint( WND *wndPtr, HDC32 hDC, WORD action )
{
/* again, this is what CTL3D expects */
DWORD tm = (textlen) ? GetTextExtent( hDC, wndPtr->text, textlen) : 0x00020002;
delta = (rtext.bottom - rtext.top - HIWORD(tm) - 1)/2;
rbox.bottom = (rbox.top = rtext.top + delta - 1) + HIWORD(tm) + 2;
rbox.right = (rbox.left = --rtext.left) + LOWORD(tm) + 2;
SetRectEmpty16(&rbox);
if( textlen )
DrawText16( hDC, wndPtr->text, textlen, &rbox,
DT_SINGLELINE | DT_CALCRECT );
textlen = rbox.bottom - rbox.top;
delta = ((rtext.bottom - rtext.top) - textlen)/2;
rbox.bottom = (rbox.top = rtext.top + delta - 1) + textlen + 2;
textlen = rbox.right - rbox.left;
rbox.right = (rbox.left += --rtext.left) + textlen + 2;
IntersectRect16(&rbox, &rbox, &rtext);
DrawFocusRect16( hDC, &rbox );
}
......
......@@ -1130,8 +1130,6 @@ static LRESULT LISTBOX_SelectItemRange( WND *wnd, LB_DESCR *descr, INT32 first,
LISTBOX_RepaintItem( wnd, descr, i, ODA_SELECT );
}
}
if (descr->style & LBS_NOTIFY)
SEND_NOTIFICATION( wnd, descr, LBN_SELCHANGE );
return LB_OKAY;
}
......@@ -1180,7 +1178,6 @@ static LRESULT LISTBOX_SetSelection( WND *wnd, LB_DESCR *descr, INT32 index,
if (oldsel != -1) descr->items[oldsel].selected = FALSE;
if (index != -1) descr->items[index].selected = TRUE;
descr->selected_item = index;
/* FIXME if (index != -1) LISTBOX_MakeItemVisible( wnd, descr, index );*/
if (oldsel != -1) LISTBOX_RepaintItem( wnd, descr, oldsel, ODA_SELECT);
if (index != -1) LISTBOX_RepaintItem( wnd, descr, index, ODA_SELECT );
if (send_notify) SEND_NOTIFICATION( wnd, descr,
......@@ -1214,8 +1211,7 @@ static void LISTBOX_MoveCaret( WND *wnd, LB_DESCR *descr, INT32 index,
else if (!(descr->style & LBS_MULTIPLESEL) && (descr->selected_item != -1))
{
/* Set selection to new caret item */
LISTBOX_SetSelection( wnd, descr, index, TRUE,
(descr->style & LBS_NOTIFY) != 0 );
LISTBOX_SetSelection( wnd, descr, index, TRUE, FALSE );
}
}
......@@ -1683,8 +1679,7 @@ static LRESULT LISTBOX_HandleLButtonDown( WND *wnd, LB_DESCR *descr,
{
LISTBOX_SetCaretIndex( wnd, descr, index, FALSE );
LISTBOX_SetSelection( wnd, descr, index,
!descr->items[index].selected,
(descr->style & LBS_NOTIFY) != 0 );
!descr->items[index].selected, FALSE );
}
else LISTBOX_MoveCaret( wnd, descr, index, FALSE );
}
......@@ -1693,8 +1688,7 @@ static LRESULT LISTBOX_HandleLButtonDown( WND *wnd, LB_DESCR *descr,
LISTBOX_MoveCaret( wnd, descr, index, FALSE );
LISTBOX_SetSelection( wnd, descr, index,
(!(descr->style & LBS_MULTIPLESEL) ||
!descr->items[index].selected),
(descr->style & LBS_NOTIFY) != 0 );
!descr->items[index].selected), FALSE );
}
}
SetFocus32( wnd->hwndSelf );
......@@ -1715,6 +1709,21 @@ static LRESULT LISTBOX_HandleLButtonDown( WND *wnd, LB_DESCR *descr,
}
/***********************************************************************
* LISTBOX_HandleLButtonUp
*/
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 );
return 0;
}
/***********************************************************************
* LISTBOX_HandleTimer
*
......@@ -1883,16 +1892,13 @@ static LRESULT LISTBOX_HandleKeyDown( WND *wnd, LB_DESCR *descr,
caret = descr->nb_items - 1;
break;
case VK_SPACE:
if (descr->style & LBS_EXTENDEDSEL)
{
if (!(GetKeyState(VK_SHIFT) & 0x8000))
descr->anchor_item = descr->focus_item;
LISTBOX_MoveCaret( wnd, descr, descr->focus_item, TRUE );
}
if (descr->style & LBS_EXTENDEDSEL) caret = descr->focus_item;
else if (descr->style & LBS_MULTIPLESEL)
{
LISTBOX_SetSelection( wnd, descr, descr->focus_item,
!descr->items[descr->focus_item].selected,
(descr->style & LBS_NOTIFY) != 0 );
}
break;
}
if (caret >= 0)
......@@ -1901,6 +1907,8 @@ static LRESULT LISTBOX_HandleKeyDown( WND *wnd, LB_DESCR *descr,
!(GetKeyState( VK_SHIFT ) & 0x8000))
descr->anchor_item = caret;
LISTBOX_MoveCaret( wnd, descr, caret, TRUE );
if (descr->style & LBS_NOTIFY)
SEND_NOTIFICATION( wnd, descr, LBN_SELCHANGE );
}
return 0;
}
......@@ -1912,11 +1920,24 @@ static LRESULT LISTBOX_HandleKeyDown( WND *wnd, LB_DESCR *descr,
static LRESULT LISTBOX_HandleChar( WND *wnd, LB_DESCR *descr,
WPARAM32 wParam )
{
INT32 index;
INT32 caret = -1;
char str[2] = { wParam & 0xff, '\0' };
index = LISTBOX_FindString( wnd, descr, descr->focus_item, str, FALSE );
if (index != LB_ERR) LISTBOX_MoveCaret( wnd, descr, index, TRUE );
if (descr->style & LBS_WANTKEYBOARDINPUT)
{
caret = SendMessage32A( descr->owner, WM_CHARTOITEM,
MAKEWPARAM(LOWORD(wParam), descr->focus_item),
wnd->hwndSelf );
if (caret == -2) return 0;
}
if (caret == -1)
caret = LISTBOX_FindString( wnd, descr, descr->focus_item, str, FALSE);
if (caret != -1)
{
LISTBOX_MoveCaret( wnd, descr, caret, TRUE );
if (descr->style & LBS_NOTIFY)
SEND_NOTIFICATION( wnd, descr, LBN_SELCHANGE );
}
return 0;
}
......@@ -2159,8 +2180,7 @@ LRESULT ListBoxWndProc(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
INT32 index = LISTBOX_FindString( wnd, descr, wParam,
(LPCSTR)lParam, FALSE );
if (index == LB_ERR) return LB_ERR;
LISTBOX_SetSelection( wnd, descr, index, TRUE,
(descr->style & LBS_NOTIFY) != 0 );
LISTBOX_SetSelection( wnd, descr, index, TRUE, FALSE );
return index;
}
......@@ -2176,13 +2196,13 @@ LRESULT ListBoxWndProc(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
lParam = (INT32)(INT16)lParam;
/* fall through */
case LB_SETSEL32:
return LISTBOX_SetSelection( wnd, descr, lParam, wParam,
(descr->style & LBS_NOTIFY) != 0 );
return LISTBOX_SetSelection( wnd, descr, lParam, wParam, FALSE );
case LB_SETCURSEL16:
wParam = (INT32)(INT16)wParam;
/* fall through */
case LB_SETCURSEL32:
if (wParam != -1) LISTBOX_MakeItemVisible( wnd, descr, wParam, TRUE );
return LISTBOX_SetSelection( wnd, descr, wParam, TRUE, FALSE );
case LB_GETSELCOUNT16:
......@@ -2344,11 +2364,7 @@ LRESULT ListBoxWndProc(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam)
return 0;
case WM_LBUTTONUP:
if (LISTBOX_Timer != LB_TIMER_NONE)
KillSystemTimer32( hwnd, LB_TIMER_ID );
LISTBOX_Timer = LB_TIMER_NONE;
if (GetCapture32() == hwnd) ReleaseCapture();
return 0;
return LISTBOX_HandleLButtonUp( wnd, descr );
case WM_KEYDOWN:
return LISTBOX_HandleKeyDown( wnd, descr, wParam );
......
......@@ -137,7 +137,9 @@ void DEBUG_SetBreakpoints( BOOL32 set )
{
if (breakpoints[i].in_use && breakpoints[i].enabled)
{
if (DEBUG_IsBadWritePtr( &breakpoints[i].addr, 1 ))
/* Note: we check for read here, because if reading is allowed */
/* writing permission will be forced in DEBUG_SetOpcode. */
if (DEBUG_IsBadReadPtr( &breakpoints[i].addr, 1 ))
{
fprintf( stderr, "Invalid address for breakpoint %d, disabling it\n", i );
breakpoints[i].enabled = FALSE;
......
......@@ -888,12 +888,15 @@ DWORD GetShortPathName32W( LPCWSTR longpath, LPWSTR shortpath, DWORD shortlen )
/***********************************************************************
* GetFullPathNameA (KERNEL32.272)
*/
DWORD GetFullPathName32A( LPCSTR fn, DWORD buflen, LPSTR buf, LPSTR *lastpart) {
DWORD GetFullPathName32A( LPCSTR fn, DWORD buflen, LPSTR buf, LPSTR *lastpart)
{
dprintf_file(stddeb,"GetFullPathNameA(%s)\n",fn);
/* FIXME */
lstrcpyn32A(buf,fn,buflen);
if (lastpart)
*lastpart=strrchr(buf,'\\');
if (buf)
{
lstrcpyn32A(buf,fn,buflen);
if (lastpart) *lastpart = strrchr(buf,'\\');
}
return strlen(fn);
}
......
......@@ -506,22 +506,21 @@ static INT32 PROFILE_GetString( LPCSTR section, LPCSTR key_name,
static BOOL32 PROFILE_SetString( LPCSTR section_name, LPCSTR key_name,
LPCSTR value )
{
BOOL32 ret;
if (!key_name) /* Delete a whole section */
{
dprintf_profile(stddeb, "PROFILE_DeleteSection('%s')\n", section_name);
ret = PROFILE_DeleteSection( &CurProfile.section, section_name );
CurProfile.changed |= ret;
return ret;
CurProfile.changed |= PROFILE_DeleteSection( &CurProfile.section,
section_name );
return TRUE; /* Even if PROFILE_DeleteSection() has failed,
this is not an error on application's level.*/
}
else if (!value) /* Delete a key */
{
dprintf_profile( stddeb, "PROFILE_DeleteKey('%s','%s')\n",
section_name, key_name );
ret = PROFILE_DeleteKey( &CurProfile.section, section_name, key_name );
CurProfile.changed |= ret;
return ret;
CurProfile.changed |= PROFILE_DeleteKey( &CurProfile.section,
section_name, key_name );
return TRUE; /* same error handling as above */
}
else /* Set the key value */
{
......@@ -542,8 +541,8 @@ static BOOL32 PROFILE_SetString( LPCSTR section_name, LPCSTR key_name,
else dprintf_profile( stddeb, "creating key\n" );
key->value = xstrdup( value );
CurProfile.changed = TRUE;
return TRUE;
}
return TRUE;
}
......
......@@ -6,9 +6,9 @@ VPATH = @srcdir@
MODULE = graphics
C_SRCS = \
wing.c \
bitblt.c \
driver.c
driver.c \
wing.c
all: $(MODULE).o
......
......@@ -5,19 +5,10 @@
*/
#include "gdi.h"
#include "windows.h"
#include "stddebug.h"
#include "debug.h"
/* I dunno if this structure can be put here... Maybe copyright, I'm no lawyer... */
typedef enum WING_DITHER_TYPE
{
WING_DISPERSED_4x4,
WING_DISPERSED_8x8,
WING_CLUSTERED_4x4
} WING_DITHER_TYPE;
/***********************************************************************
* WingCreateDC16 (WING.1001)
*/
......@@ -33,8 +24,21 @@ HDC16 WinGCreateDC16(void)
*/
BOOL16 WinGRecommendDIBFormat16(BITMAPINFO *fmt)
{
fprintf(stdnimp,"WinGRecommendDIBFormat: empty stub!\n");
return 0;
HDC16 i=GetDC16(0);
fmt->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
fmt->bmiHeader.biWidth=0;
fmt->bmiHeader.biHeight=1; /* The important part */
fmt->bmiHeader.biPlanes=GetDeviceCaps(i, PLANES);
fmt->bmiHeader.biBitCount=GetDeviceCaps(i, BITSPIXEL);
fmt->bmiHeader.biCompression=BI_RGB;
fmt->bmiHeader.biSizeImage=0;
fmt->bmiHeader.biXPelsPerMeter=1000/25.4*GetDeviceCaps(i,LOGPIXELSX);
fmt->bmiHeader.biYPelsPerMeter=1000/25.4*GetDeviceCaps(i,LOGPIXELSY);
fmt->bmiHeader.biClrUsed=0;
fmt->bmiHeader.biClrImportant=0;
ReleaseDC16(0, i);
return 1;
}
/***********************************************************************
......@@ -42,26 +46,82 @@ BOOL16 WinGRecommendDIBFormat16(BITMAPINFO *fmt)
*/
HBITMAP16 WinGCreateBitmap16(HDC16 winDC, BITMAPINFO *header, void **bits)
{
fprintf(stdnimp,"WinGCreateBitmap: empty stub! (expect failure)\n");
*bits=0;
fprintf(stdnimp,"WinGCreateBitmap: almost empty stub! (expect failure)\n");
/* Assume RGB color */
if(bits==NULL)
return CreateDIBitmap(winDC, header, 0, bits, header, 0);
else
return CreateDIBitmap(winDC, header, 1, bits, header, 0);
return 0;
}
/***********************************************************************
* WinGGetDIBPointer16 (WING.1004)
*/
void* WinGGetDIBPointer16(HBITMAP16 bmap, BITMAPINFO *header)
{
fprintf(stdnimp,"WinGGetDIBPointer16: empty stub!\n");
return NULL;
}
/***********************************************************************
* WinGGetDIBColorTable16 (WING.1005)
*/
UINT16 WinGGetDIBColorTable16(HDC16 winDC, UINT16 start, UINT16 numentry,
RGBQUAD* colors)
{
return GetPaletteEntries(winDC, start, numentry, colors);
}
/***********************************************************************
* WinGSetDIBColorTable16 (WING.1006)
*/
UINT16 WinGSetDIBColorTable16(HDC16 winDC, UINT16 start, UINT16 numentry,
RGBQUAD* colors)
{
return SetPaletteEntries(winDC, start, numentry, colors);
}
/***********************************************************************
* WinGCreateHalfTonePalette16 (WING.1007)
*/
HPALETTE16 WinGCreateHalfTonePalette16(void)
{
fprintf(stdnimp,"WinGCreateHalfTonePalette: empty stub!\n");
fprintf(stdnimp,"WinGCreateHalfTonePalette16: empty stub!\n");
return 0;
}
/***********************************************************************
* WinGCreateHalfToneBrush16 (WING.1008)
*/
HPALETTE16 WinGCreateHalfToneBrush16(HDC16 winDC, COLORREF col, WING_DITHER_TYPE type)
HPALETTE16 WinGCreateHalfToneBrush16(HDC16 winDC, COLORREF col, INT16 dithertype)
{
fprintf(stdnimp,"WinGCreateHalfToneBrush: empty stub!\n");
fprintf(stdnimp,"WinGCreateHalfToneBrush16: empty stub!\n");
return 0;
}
/***********************************************************************
* WinGStretchBlt16 (WING.1009)
*/
BOOL16 WinGStretchBlt16(HDC16 destDC, INT16 xDest, INT16 yDest, INT16 widDest,
INT16 heiDest, HDC16 srcDC, INT16 xSrc, INT16 ySrc,
INT16 widSrc, INT16 heiSrc)
{
return StretchBlt16(destDC, xDest, yDest, widDest, heiDest, srcDC, xSrc, ySrc, widSrc, heiSrc, SRCCOPY);
/* fprintf(stdnimp,"WinGStretchBlt16: empty stub!\n");*/
/* return 0; */
}
/***********************************************************************
* WinGBitBlt16 (WING.1010)
*/
BOOL16 WinGBitBlt16(HDC16 destDC, INT16 xDest, INT16 yDest, INT16 widDest,
INT16 heiDest, HDC16 srcDC, INT16 xSrc, INT16 ySrc)
{
return BitBlt16(destDC, xDest, yDest, widDest, heiDest, srcDC, xSrc, ySrc, SRCCOPY);
/* fprintf(stdnimp,"WinGBitBlt16: empty stub!\n");*/
/* return 0;*/
}
......@@ -11,7 +11,7 @@ DLLS = \
comdlg32.spec \
commdlg.spec \
compobj.spec \
crtdll.spec \
crtdll.spec \
ddeml.spec \
gdi.spec \
gdi32.spec \
......@@ -23,7 +23,7 @@ DLLS = \
mmsystem.spec \
mouse.spec \
mpr.spec \
ntdll.spec \
ntdll.spec \
ole2.spec \
ole2conv.spec \
ole2disp.spec \
......@@ -52,7 +52,7 @@ DLLS = \
wprocs.spec \
wsock32.spec
SPEC_FILES = $(DLLS:.spec=.S)
SPEC_FILES = $(DLLS:.spec=.s)
C_SRCS = \
dummy.c \
......@@ -60,17 +60,19 @@ C_SRCS = \
thunk.c
ASM_SRCS = \
$(SPEC_FILES) \
callfrom16.S \
callfrom32.S \
callto16.S \
callto32.S \
except.S
GEN_ASM_SRCS = \
$(SPEC_FILES) \
callfrom16.s \
callfrom32.s \
callto16.s \
callto32.s \
.SUFFIXES: .spec
.spec.S:
$(BUILD) -spec $< > $*.S
.spec.s:
$(BUILD) -o $@ -spec $<
all: checkbuild $(MODULE).o
......@@ -81,22 +83,19 @@ $(SPEC_FILES): $(BUILD)
$(BUILD) checkbuild:
cd $(TOPOBJDIR)/tools; $(SUBMAKE) build
callfrom16.S: $(SPEC_FILES)
$(BUILD) -callfrom16 `cat $(SPEC_FILES) | grep CallFrom16_ | sed 's/.*CallFrom16_\(.*\)/\1/' | sort | uniq` > callfrom16.S
callfrom16.s: $(SPEC_FILES)
$(BUILD) -o $@ -callfrom16 `cat $(SPEC_FILES) | grep CallFrom16_ | sed 's/.*CallFrom16_\(.*\)/\1/' | sort | uniq`
callfrom32.S: $(SPEC_FILES)
$(BUILD) -callfrom32 `cat $(SPEC_FILES) | grep CallFrom32_ | sed 's/.*CallFrom32_\(.*\)/\1/' | sort | uniq` > callfrom32.S
callfrom32.s: $(SPEC_FILES)
$(BUILD) -o $@ -callfrom32 `cat $(SPEC_FILES) | grep CallFrom32_ | sed 's/.*CallFrom32_\(.*\)/\1/' | sort | uniq`
callto16.S: $(TOPSRCDIR)/include/callback.h $(BUILD)
$(BUILD) -callto16 `cat $(TOPSRCDIR)/include/callback.h | grep "extern.*CallTo16_" | sed 's/.*CallTo16_\(.*\)(.*/\1/' | sort | uniq` > callto16.S
callto16.s: $(TOPSRCDIR)/include/callback.h $(BUILD)
$(BUILD) -o $@ -callto16 `cat $(TOPSRCDIR)/include/callback.h | grep "extern.*CallTo16_" | sed 's/.*CallTo16_\(.*\)(.*/\1/' | sort | uniq`
callto32.S: $(TOPSRCDIR)/include/callback.h $(BUILD)
$(BUILD) -callto32 `cat $(TOPSRCDIR)/include/callback.h | grep "extern.*CallTo32_" | sed 's/.*CallTo32_\(.*\)(.*/\1/' | sort | uniq` > callto32.S
callto32.s: $(TOPSRCDIR)/include/callback.h $(BUILD)
$(BUILD) -o $@ -callto32 `cat $(TOPSRCDIR)/include/callback.h | grep "extern.*CallTo32_" | sed 's/.*CallTo32_\(.*\)(.*/\1/' | sort | uniq`
except.o: except.S $(TOPOBJDIR)/include/config.h
$(CC) -c $(DIVINCL) -o $*.o $(SRCDIR)/except.S
clean::
$(RM) $(SPEC_FILES) callfrom16.S callfrom32.S callto16.S callto32.S
### Dependencies:
......@@ -272,8 +272,8 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
410 pascal16 IsValidMetaFile (word) IsValidMetaFile
411 pascal16 GetCurLogFont(word) GetCurLogFont
412 pascal16 IsDCCurrentPalette(word) IsDCCurrentPalette
439 pascal16 StretchDIBits (word s_word s_word word word word word
word word ptr ptr word long) StretchDIBits
439 pascal16 StretchDIBits (word s_word s_word s_word s_word s_word s_word
s_word s_word ptr ptr word long) StretchDIBits16
440 pascal16 SetDIBits(word word word word ptr ptr word) SetDIBits
441 pascal16 GetDIBits(word word word word ptr ptr word) GetDIBits
442 pascal16 CreateDIBitmap(word ptr long ptr ptr word) CreateDIBitmap
......
......@@ -236,9 +236,9 @@ base 1
0228 stub GetTextExtentExPointA
0229 stub GetTextExtentExPointW
0230 stdcall GetTextExtentPoint32A(long ptr long ptr) GetTextExtentPoint32A
0231 stub GetTextExtentPoint32W
0232 stdcall GetTextExtentPointA(long ptr long ptr) GetTextExtentPoint32A
0233 stdcall GetTextExtentPointW(long ptr long ptr) GetTextExtentPoint32W
0231 stdcall GetTextExtentPoint32W(long ptr long ptr) GetTextExtentPoint32W
0232 stdcall GetTextExtentPointA(long ptr long ptr) GetTextExtentPoint32ABuggy
0233 stdcall GetTextExtentPointW(long ptr long ptr) GetTextExtentPoint32WBuggy
0234 stdcall GetTextFaceA(long long ptr) GetTextFace
0235 stub GetTextFaceW
0236 stdcall GetTextMetricsA(long ptr) GetTextMetrics32A
......@@ -358,8 +358,8 @@ base 1
0349 stub StartPage
0350 stdcall StretchBlt(long long long long long long long long long long long)
StretchBlt32
0351 stdcall StretchDIBits(long long long long long long long
long long long long long long) StretchDIBits
0351 stdcall StretchDIBits(long long long long long long long long long
ptr ptr long long) StretchDIBits32
0352 stub StrokeAndFillPath
0353 stub StrokePath
0354 stub SwapBuffers
......
......@@ -122,7 +122,7 @@ heap 65520
120 pascal GetMessageTime() GetMessageTime
121 pascal SetWindowsHook(s_word segptr) THUNK_SetWindowsHook16
122 pascal CallWindowProc(segptr word word word long) CallWindowProc16
123 pascal16 CallMsgFilter(segptr s_word) CallMsgFilter
123 pascal16 CallMsgFilter(segptr s_word) CallMsgFilter16
124 pascal16 UpdateWindow(word) UpdateWindow
125 pascal16 InvalidateRect(word ptr word) InvalidateRect16
126 pascal16 InvalidateRgn(word word word) InvalidateRgn
......@@ -235,7 +235,7 @@ heap 65520
232 pascal16 SetWindowPos(word word word word word word word) SetWindowPos
233 pascal16 SetParent(word word) SetParent
234 pascal16 UnhookWindowsHook(s_word segptr) THUNK_UnhookWindowsHook16
235 pascal DefHookProc(s_word word long ptr) DefHookProc
235 pascal DefHookProc(s_word word long ptr) DefHookProc16
236 pascal16 GetCapture() GetCapture16
237 pascal16 GetUpdateRgn(word word word) GetUpdateRgn
238 pascal16 ExcludeUpdateRgn(word word) ExcludeUpdateRgn
......@@ -296,7 +296,7 @@ heap 65520
290 pascal16 RedrawWindow(word ptr word word) RedrawWindow16
291 pascal SetWindowsHookEx(s_word segptr word word) THUNK_SetWindowsHookEx16
292 pascal16 UnhookWindowsHookEx(segptr) THUNK_UnhookWindowsHookEx16
293 pascal CallNextHookEx(segptr s_word word long) CallNextHookEx
293 pascal CallNextHookEx(segptr s_word word long) CallNextHookEx16
294 stub LockWindowUpdate
299 register Mouse_Event() Mouse_Event
300 stub UnloadInstalledDrivers
......
......@@ -16,9 +16,9 @@ base 1
0011 stub BroadcastSystemMessage
0012 stub CalcChildScroll
0013 stub CallMsgFilter
0014 stub CallMsgFilterA
0015 stub CallMsgFilterW
0016 stub CallNextHookEx
0014 stdcall CallMsgFilterA(ptr long) CallMsgFilter32A
0015 stdcall CallMsgFilterW(ptr long) CallMsgFilter32W
0016 stdcall CallNextHookEx(long long long long) CallNextHookEx32
0017 stdcall CallWindowProcA(ptr long long long long) CallWindowProc32A
0018 stdcall CallWindowProcW(ptr long long long long) CallWindowProc32W
0019 stub CascadeChildWindows
......@@ -530,8 +530,8 @@ base 1
0523 stdcall SetWindowWord(long long long) SetWindowWord
0524 stdcall SetWindowsHookA(long ptr) SetWindowsHook32A
0525 stdcall SetWindowsHookExA(long long long long) SetWindowsHookEx32A
0526 stub SetWindowsHookExW
0527 stub SetWindowsHookW
0526 stdcall SetWindowsHookExW(long long long long) SetWindowsHookEx32W
0527 stdcall SetWindowsHookW(long long long long) SetWindowsHook32W
0528 stdcall ShowCaret(long) ShowCaret
0529 stdcall ShowCursor(long) ShowCursor
0530 stub ShowOwnedPopups
......@@ -560,7 +560,7 @@ base 1
0553 stub TranslateCharsetInfo
0554 stub TranslateMDISysAccel
0555 stdcall TranslateMessage(ptr) USER32_TranslateMessage
0556 stub UnhookWindowsHook
0556 stdcall UnhookWindowsHook(long ptr) UnhookWindowsHook32
0557 stdcall UnhookWindowsHookEx(long) UnhookWindowsHookEx32
0558 stdcall UnionRect(ptr ptr ptr) UnionRect32
0559 stub UnloadKeyboardLayout
......
name wing
type win16
1001 pascal16 WinGCreateDC() WinGCreateDC16
1002 pascal16 WinGRecommendDIBFormat(ptr) WinGRecommendDIBFormat16
1003 pascal16 WinGCreateBitmap(word ptr ptr) WinGCreateBitmap16
1004 stub WINGGETDIBPOINTER
1005 stub WINGGETDIBCOLORTABLE
1006 stub WINGSETDIBCOLORTABLE
1007 pascal16 WinGCreateHalfTonePalette() WinGCreateHalfTonePalette16
1008 pascal16 WinGCreateHalfToneBrush(word long word) WinGCreateHalfToneBrush16
1009 stub WINGSTRETCHBLT
# Probably much like BitBlt16... but, without the last field (what value?)
1010 stub WINGBITBLT
1001 pascal16 WINGCREATEDC() WinGCreateDC16
1002 pascal16 WINGRECOMMENDDIBFORMAT(ptr) WinGRecommendDIBFormat16
1003 pascal16 WINGCREATEBITMAP(word ptr ptr) WinGCreateBitmap16
1004 pascal WINGGETDIBPOINTER(word ptr) WinGGetDIBPointer16
1005 pascal16 WINGGETDIBCOLORTABLE(word word word ptr) WinGGetDIBColorTable16
1006 pascal16 WINGSETDIBCOLORTABLE(word word word ptr) WinGSetDIBColorTable16
1007 pascal16 WINGCREATEHALFTONEPALETTE() WinGCreateHalfTonePalette16
1008 pascal16 WINGCREATEHALFTONEBRUSH(word word word) WinGCreateHalfToneBrush16
1009 pascal16 WINGSTRETCHBLT(word word word word word word word word word word) WinGStretchBlt16
1010 pascal16 WINGBITBLT(word word word word word word word word) WinGBitBlt16
# Seem that 1299 is the limit... weird...
#1500 stub WINGINITIALIZETHUNK16
......
......@@ -14,20 +14,29 @@
* This structure is stored into the window extra bytes (cbWndExtra).
* sizeof(DIALOGINFO) must be <= DLGWINDOWEXTRA (=30).
*/
#pragma pack(1)
typedef struct
{
INT32 msgResult; /* Result of EndDialog() / Default button id */
HWINDOWPROC dlgProc; /* Dialog procedure */
LONG userInfo; /* User information (for DWL_USER) */
INT32 msgResult; /* +00 Last message result */
HWINDOWPROC dlgProc; /* +04 Dialog procedure */
LONG userInfo; /* +08 User information (for DWL_USER) */
/* implementation-dependent part */
HWND16 hwndFocus; /* Current control with focus */
HFONT16 hUserFont; /* Dialog font */
HMENU16 hMenu; /* Dialog menu */
WORD xBaseUnit; /* Dialog units (depends on the font) */
WORD yBaseUnit;
INT32 idResult; /* EndDialog() result / default pushbutton ID */
WORD fEnd; /* EndDialog() called for this dialog */
HGLOBAL16 hDialogHeap;
} DIALOGINFO;
#pragma pack(4)
extern BOOL32 DIALOG_Init(void);
#endif /* DIALOG_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment