Release 960611

Tue Jun 11 15:20:43 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [debugger/break.c] [loader/signal.c]
	Fixed breakpoints in 32-bit code.

	* [include/windows.h]
	Added many more Win32 versions of standard structures.

	* [include/winreg.h] [misc/registry.c]
	Moved private types into registry.c.

	* [memory/string.c] (New file)
	Moved most string functions from misc/lstr.c; added Win32 version
	of all functions.

	* [misc/wsprintf.c]
	Implemented Win32 wsprintf functions.

	* [objects/bitmap.c]
	Implemented Win32 bitmap functions.

	* [windows/dialog.c]
	Don't set dialog procedure before the controls are created. This
	avoids a crash in Winhelp.

Tue Jun 11 14:10:06 1996 Martin von Loewis <loewis@informatik.hu-berlin.de>

	* [controls/menu.c] [if1632/user.spec] [windows/message.c]
	Replace PeekMessage with PeekMessage16.

	* [if1632/kernel32.spec][misc/main.c]
	GetVersion32,GetVersionEx32A,GetVersionEx32W: new functions.
	MAIN_ParseVersion: new function, new command line option -winver.
	GetVersion: modified to take command line argument into account.

	* [if1632/kernel32.spec] [win32/process.c]
	FreeLibrary32: new function.
	TlsAlloc: initialize Tls to zero.
	InterlockedIncrement,InterlockedDecrement,InterlockedExchange: new
	functions.

	* [if1632/kernel32.spec]
	SetErrorMode,GetActiveWindow: new relays to existing functions.

	* [if1632/kernel32.spec][win32/user32.c]
	PeekMessage32A,PeekMessage32W: new functions.

	* [include/struct32.h][include/windows.h]
	Moved MSG32 to windows.h.
	Renamed MSG to MSG16.
	Modified prototypes to use MSG16

	* [include/winbase.h]
	OSVERSIONINFO32A,OSVERSIONINFO32W: new structures.

Sun Jun  9 20:53:30 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [if1632/Makefile.in] [loader/builtin.c]
	version.dll,lz32.dll added.

	* [include/lzexpand.h] [if1632/lz32.spec] [if1632/lzexpand.spec]
	  [misc/lzexpand.c]
	lz32.dll added.
	Modified to new function naming standard.

	* [include/ver.h] [if1632/ver.spec] [if1632/version.spec] [misc/ver.c]
	version.dll added (win32 version of ver.dll).
	Modified to new function naming standard.
	Use registry to look up a LOCALE langids too.
	(VerInstallFile,VerFindFile still stubs)

Fri Jun  7 20:40:20 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [files/file.c]
	Added a warning if GetTempFileName() gets a bad drive parameter.

	* [misc/commdlg.c]
	Changed file listbox color to gray in SaveFile dialog 
	(just like Windows does this).
diff --git a/objects/gdiobj.c b/objects/gdiobj.c
index 81c1c16..ddf0a21 100644
--- a/objects/gdiobj.c
+++ b/objects/gdiobj.c
@@ -299,12 +299,12 @@
 
 
 /***********************************************************************
- *           GetObject    (GDI.82)
+ *           GetObject16    (GDI.82)
  */
-int GetObject( HANDLE handle, int count, LPSTR buffer )
+INT16 GetObject16( HANDLE16 handle, INT16 count, LPVOID buffer )
 {
     GDIOBJHDR * ptr = NULL;
-    dprintf_gdi(stddeb, "GetObject: %04x %d %p\n", handle, count, buffer );
+    dprintf_gdi(stddeb, "GetObject16: %04x %d %p\n", handle, count, buffer );
     if (!count) return 0;
 
     if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE))
@@ -320,7 +320,7 @@
       case BRUSH_MAGIC: 
 	  return BRUSH_GetObject( (BRUSHOBJ *)ptr, count, buffer );
       case BITMAP_MAGIC: 
-	  return BITMAP_GetObject( (BITMAPOBJ *)ptr, count, buffer );
+	  return BITMAP_GetObject16( (BITMAPOBJ *)ptr, count, buffer );
       case FONT_MAGIC:
 	  return FONT_GetObject( (FONTOBJ *)ptr, count, buffer );
       case PALETTE_MAGIC:
@@ -331,6 +331,46 @@
 
 
 /***********************************************************************
+ *           GetObject32A    (GDI32.204)
+ */
+INT32 GetObject32A( HANDLE32 handle, INT32 count, LPVOID buffer )
+{
+    GDIOBJHDR * ptr = NULL;
+    dprintf_gdi(stddeb, "GetObject32A: %08x %d %p\n", handle, count, buffer );
+    if (!count) return 0;
+
+    if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE))
+      ptr = StockObjects[handle - FIRST_STOCK_HANDLE];
+    else
+      ptr = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
+    if (!ptr) return 0;
+    
+    switch(ptr->wMagic)
+    {
+      case BITMAP_MAGIC: 
+	  return BITMAP_GetObject32( (BITMAPOBJ *)ptr, count, buffer );
+      case PEN_MAGIC:
+      case BRUSH_MAGIC: 
+      case FONT_MAGIC:
+      case PALETTE_MAGIC:
+          fprintf( stderr, "GetObject32: magic %04x not implemented\n",
+                   ptr->wMagic );
+          break;
+    }
+    return 0;
+}
+
+
+/***********************************************************************
+ *           GetObject32W    (GDI32.206)
+ */
+INT32 GetObject32W( HANDLE32 handle, INT32 count, LPVOID buffer )
+{
+    return GetObject32A( handle, count, buffer );
+}
+
+
+/***********************************************************************
  *           SelectObject    (GDI.45)
  */
 HANDLE SelectObject( HDC hdc, HANDLE handle )
@@ -397,8 +437,8 @@
     };
     
     int i, retval = 0;
-    LOGPEN *pen;
-    LOGBRUSH *brush = NULL;
+    LOGPEN16 *pen;
+    LOGBRUSH16 *brush = NULL;
 
     dprintf_gdi( stddeb, "EnumObjects: %04x %d %08lx %08lx\n",
                  hdc, nObjType, (DWORD)lpEnumFunc, lParam );
@@ -406,7 +446,7 @@
     {
     case OBJ_PEN:
         /* Enumerate solid pens */
-        if (!(pen = SEGPTR_NEW(LOGPEN))) break;
+        if (!(pen = SEGPTR_NEW(LOGPEN16))) break;
         for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++)
         {
             pen->lopnStyle   = PS_SOLID;
@@ -424,7 +464,7 @@
 
     case OBJ_BRUSH:
         /* Enumerate solid brushes */
-        if (!(brush = SEGPTR_NEW(LOGBRUSH))) break;
+        if (!(brush = SEGPTR_NEW(LOGBRUSH16))) break;
         for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++)
         {
             brush->lbStyle = BS_SOLID;