Release 971116

Sun Nov 16 07:42:44 1997  Alex Korobka <alex@trantor.pharm.sunysb.edu>

	* [windows/dce.c] [windows/clipboard.c] [windows/nonclient.c]
	Bug fixes.

	* [misc/shell.c] [resources/*]
	New "About" dialog.

Sat Nov 15 17:30:18 1997  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [configure.in] [Makefile.in]
	Replaced --with-library option by --disable-emulator. The default
 	is now to build both the library and the emulator.
	Renamed --with options to --enable to follow autoconf guidelines.

	* [loader/main.c] [miscemu/main.c] (New file)
	Split initialization in WinelibInit/EmulatorInit.

	* [loader/*.c]
	Removed all remaining #ifdef's WINELIB.

	* [controls/widgets.c] [windows/mdi.c]
	Converted MDIClientWndProc to 32-bit.

	* [debugger/break.c] [if1632/signal.c] [include/selectors.h]
	  [scheduler/thread.c]
	Code and data selector values are now computed at run-time.

	* [library/libres.c]
	Moved to loader/ directory.

	* [misc/main.c] [misc/version.c] (New file)
	Moved all version stuff to version.c. Cleaned up a bit.

	* [msdos/dpmi.c]
	Update the REALMODECALL structure on return from real-mode
	interrupt.

	* [windows/event.c] [windows/keyboard.c]
	Changed the way event coordinates are determined. Don't rely on
	the ConfigureNotify event values. This should fix all problems
	with cursor position in -desktop and -managed modes.

Sat Nov 15 16:09:36 1997  Slaven Rezic  <eserte@cs.tu-berlin.de>

	* [controls/button.c]
	(BUTTON_CheckAutoRadioButton): Prevent possible endless loop.

Wed Nov 12 03:42:45 1997  Chris Faherty <chrisf@america.com>

	* [misc/ver.c]
	Changed VerInstall32A to assume srcdir as destination if destdir
	is blank.  This was causing alot of DLL installation into SYSTEM
	directory to fail.

	* [loader/ne_image.c]
	NE_LoadSegment buffer[100] was too small and getting overruns.
	Changed it to buffer[200].

Sat Nov  8 06:09:57 1997  Len White <phreak@cgocable.net>

	* [misc/ddeml.c] [include/ddeml.h] [if1632/ddeml.spec]
	Added stub functions DdeConnectList(), DdeQueryNextServer(),
	DdeDisconnectList(), DdeSetUserHandle(), DdeAbandonTransaction(),
	DdePostAdvise(), DdeCreateDataHandle(), DdeAddData(), DdeGetData(),
	DdeAccessData(), DdeUnaccessData(), DdeEnableCallback(),
	DdeCmpStringHandles().

Fri Nov  7 19:44:26 1997  Olaf Flebbe  <o.flebbe@science-computing.de>

	* [files/directory.c]
	Fix typo in directory.c [broke loading of cdplayer on nt40]

	* [misc/main.c]
	Implemented -winver nt40.

	* [loader/resource.c] [user32.spec]
	Stubs for CopyAcceleratorTable, Destroy AcceleratorTable.

Thu Nov  6 22:37:04 1997  Morten Welinder  <welinder@rentec.com>

	* [files/drive.c]
	(GetDiskFreeSpace32A): Cap at 2GB.

	* [include/windows.h]
	Prototype DrawIconEx and CreateDIBSection32.
	Define OBM_RADIOCHECK.
	Add DI_* macros.

	* [objects/dib.c] [if1632/gdi.spec]
	CreateDIBSection is a WINAPI.  Renamed to CreateDIBSection32.
	Implement CreateDIBSection16.

	* [if1632/user.spec] [if1632/user32.spec]
	Add DrawIconEx.

	* [objects/cursoricon.c]
	(CopyIcon32): Fix bogus implementation.

	* [objects/bitmap.c]
	(CopyBitmap32): New function.
	(CopyImage32): Do bitmaps.

	* [graphics/x11drv/text.c]
	(X11DRV_ExtTextOut): Change ascent and descent default to avoid
	zero-thinkness overstrike line.

	* [include/debugstr.h] [misc/debugstr.c]
	New files.

	* [msdos/dpmi.c]
	Don't prototype do_mscdex. In INT_Int31Handler, handle real-mode
	int 0x21, ah=0x52.

	* [msdos/int2f.c]
	Add dummys for 0x1681 and 0x1682.

	* [misc/registry.c]
	Fix memory leaks in RegDeleteKey32W.

	* [objects/text.c]
	In TEXT_NextLine, fix another off-by-one bug.

	* [include/bitmaps/obm_radiocheck]
	New file.  (It a small circle used to radio-button menu items
	when selected.)
	
	* [objects/oembitmap.c]
	Add obm_radiocheck.

	* [include/windows.h] [if1632/user32.spec] [controls/menu.c]
	  [if1632/user.spec]
	Define CheckMenuRadioItem{16,32}.  Define GetMenuItemRect{16,32}.

Wed Nov  5 11:30:14 1997  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
	* [misc/main.c]
	Auto adjust versions depending on binary.

Tue Nov  4 15:21:00 1997  Kristian Nielsen  <kristian.nielsen@risoe.dk>

	* [controls/listbox.c]
	Paint full background in listbox items with tab stops enabled.

	* [if1632/thunk.c]
	Copy some more message parameter structures (DRAWITEMSTRUCT16,
	COMPAREITEMSTRUCT16) to the stack segment to fix broken programs
	that need this.

	* [windows/dce.c]
	Only clip sibling windows when the parent has the WS_CLIPSIBLINGS
	style set.

	* [windows/focus.c]
	Make order of events in FOCUS_SwitchFocus() reflect API docs.

	* [windows/defdlg.c]
	Fix problem with loss of focus in some dialogs.

	* [win32/code_page.c]
	Fix return value for MultiByteToWideChar().

	* [BUGS]
	BCW now works.
diff --git a/objects/cursoricon.c b/objects/cursoricon.c
index 2a7cc6d..569b6ab 100644
--- a/objects/cursoricon.c
+++ b/objects/cursoricon.c
@@ -818,8 +818,10 @@
  */
 HICON32 WINAPI CopyIcon32( HICON32 hIcon )
 {
+  HTASK16 hTask = GetCurrentTask ();
+  TDB* pTask = (TDB *) GlobalLock16 (hTask);
     dprintf_icon( stddeb, "CopyIcon32: %04x\n", hIcon );
-    return CURSORICON_Copy( 0, hIcon );
+  return CURSORICON_Copy( pTask->hInstance, hIcon );
 }
 
 
@@ -1497,3 +1499,80 @@
     }
     return hObj;
 }
+
+/**********************************************************************
+ *          DrawIconEx16		(USER.394)
+ */
+
+BOOL16 WINAPI DrawIconEx16 (HDC16 hdc, INT16 xLeft, INT16 yTop, HICON16 hIcon,
+			    INT16 cxWidth, INT16 cyWidth, UINT16 istep,
+			    HBRUSH16 hbr, UINT16 flags)
+{
+  return DrawIconEx32 (hdc, xLeft, yTop, hIcon, cxWidth, cyWidth,
+		       istep, hbr, flags);
+}
+
+/**********************************************************************
+ *          DrawIconEx32		(USER32.160)
+ */
+
+BOOL32 WINAPI DrawIconEx32 (HDC32 hdc, INT32 x0, INT32 y0, HICON32 hIcon,
+			    INT32 cxWidth, INT32 cyWidth, UINT32 istep,
+			    HBRUSH32 hbr, UINT32 flags)
+{
+    CURSORICONINFO *ptr = (CURSORICONINFO *)GlobalLock16 (hIcon);
+    HDC32 hMemDC = CreateCompatibleDC32 (hdc);
+    BOOL32 result = FALSE;
+
+    dprintf_icon (stddeb, "DrawIconEx32: part stub.\n");
+
+    if (hMemDC && ptr)
+    {
+	HBITMAP32 hXorBits, hAndBits;
+	COLORREF oldFg, oldBg;
+
+	/* Calculate the size of the destination image.  */
+	if (cxWidth == 0)
+	    if (flags & DI_DEFAULTSIZE)
+		cxWidth = GetSystemMetrics32 (SM_CXICON);
+	    else
+		cxWidth = ptr->nWidth;
+	if (cyWidth == 0)
+	    if (flags & DI_DEFAULTSIZE)
+		cyWidth = GetSystemMetrics32 (SM_CYICON);
+	    else
+		cyWidth = ptr->nHeight;
+
+	hXorBits = CreateBitmap32 ( ptr->nWidth, ptr->nHeight,
+				    ptr->bPlanes, ptr->bBitsPerPixel,
+				    (char *)(ptr + 1)
+				    + ptr->nHeight *
+				    BITMAP_WIDTH_BYTES(ptr->nWidth,1) );
+	hAndBits = CreateBitmap32 ( cxWidth, cyWidth,
+				    1, 1, (char *)(ptr+1) );
+	oldFg = SetTextColor32( hdc, RGB(0,0,0) );
+	oldBg = SetBkColor32( hdc, RGB(255,255,255) );
+
+	if (hXorBits && hAndBits)
+	{
+	    HBITMAP32 hBitTemp = SelectObject32( hMemDC, hAndBits );
+	    if (flags & DI_MASK)
+		BitBlt32 (hdc, x0, y0, cxWidth, cyWidth,
+			  hMemDC, 0, 0, SRCAND);
+	    SelectObject32( hMemDC, hXorBits );
+	    if (flags & DI_IMAGE)
+		BitBlt32 (hdc, x0, y0, cxWidth, cyWidth,
+			  hMemDC, 0, 0, SRCPAINT);
+	    SelectObject32( hMemDC, hBitTemp );
+	    result = TRUE;
+	}
+
+	SetTextColor32( hdc, oldFg );
+	SetBkColor32( hdc, oldBg );
+	if (hXorBits) DeleteObject32( hXorBits );
+	if (hAndBits) DeleteObject32( hAndBits );
+    }
+    if (hMemDC) DeleteDC32( hMemDC );
+    GlobalUnlock16( hIcon );
+    return result;
+}