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().
diff --git a/graphics/wing.c b/graphics/wing.c
index 4f3b29d..3bae489 100644
--- a/graphics/wing.c
+++ b/graphics/wing.c
@@ -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 @@
  */
 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 @@
  */
 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;*/
+}
+