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/windows/dialog.c b/windows/dialog.c
index 4e010bc..8d4c82b 100644
--- a/windows/dialog.c
+++ b/windows/dialog.c
@@ -65,7 +65,7 @@
  */
 BOOL DIALOG_Init()
 {
-    TEXTMETRIC tm;
+    TEXTMETRIC16 tm;
     HDC hdc;
     
       /* Calculate the dialog base units */
@@ -154,7 +154,7 @@
         dprintf_dialog(stddeb,"'%s'", info->windowName );
     }
 
-    info->data = (LPVOID)(*p ? p + 1 : NULL);  /* FIXME: is this right? */
+    info->data = (LPVOID)(*p ? p + 1 : NULL);  /* FIXME: should be a segptr */
     p += *p + 1;
 
     dprintf_dialog( stddeb," %d, %d, %d, %d, %d, %08lx, %08lx\n", 
@@ -200,7 +200,7 @@
     else
     {
         info->className = (LPCSTR)p;
-        p += STRING32_lstrlenW( (LPCWSTR)p ) + 1;
+        p += lstrlen32W( (LPCWSTR)p ) + 1;
     }
     dprintf_dialog(stddeb, "   %p ", info->className );
 
@@ -213,7 +213,7 @@
     else
     {
 	info->windowName = (LPCSTR)p;
-        p += STRING32_lstrlenW( (LPCWSTR)p ) + 1;
+        p += lstrlen32W( (LPCWSTR)p ) + 1;
         dprintf_dialog(stddeb,"'%p'", info->windowName );
     }
 
@@ -427,7 +427,7 @@
     default:
         result->menuName = (LPCSTR)p;
         dprintf_dialog( stddeb, " MENU '%p'\n", p );
-        p += STRING32_lstrlenW( (LPCWSTR)p ) + 1;
+        p += lstrlen32W( (LPCWSTR)p ) + 1;
         break;
     }
 
@@ -447,14 +447,14 @@
     default:
         result->className = (LPCSTR)p;
         dprintf_dialog( stddeb, " CLASS '%p'\n", p );
-        p += STRING32_lstrlenW( (LPCWSTR)p ) + 1;
+        p += lstrlen32W( (LPCWSTR)p ) + 1;
         break;
     }
 
     /* Get the window caption */
 
     result->caption = (LPCSTR)p;
-    p += STRING32_lstrlenW( (LPCWSTR)p ) + 1;
+    p += lstrlen32W( (LPCWSTR)p ) + 1;
     dprintf_dialog( stddeb, " CAPTION '%p'\n", result->caption );
 
     /* Get the font name */
@@ -464,7 +464,7 @@
 	result->pointSize = GET_WORD(p);
         p++;
 	result->faceName = (LPCSTR)p;
-        p += STRING32_lstrlenW( (LPCWSTR)p ) + 1;
+        p += lstrlen32W( (LPCWSTR)p ) + 1;
 	dprintf_dialog( stddeb, " FONT %d,'%p'\n",
                         result->pointSize, result->faceName );
     }
@@ -517,7 +517,7 @@
                             template.faceName );  /* FIXME: win32 */
 	if (hFont)
 	{
-	    TEXTMETRIC tm;
+	    TEXTMETRIC16 tm;
 	    HFONT oldFont;
 	    HDC hdc;
 
@@ -577,7 +577,6 @@
       /* Initialise dialog extra data */
 
     dlgInfo = (DIALOGINFO *)wndPtr->wExtra;
-    dlgInfo->dlgProc   = dlgProc;
     dlgInfo->hUserFont = hFont;
     dlgInfo->hMenu     = hMenu;
     dlgInfo->xBaseUnit = xUnit;
@@ -596,6 +595,7 @@
 
     /* Send initialisation messages and set focus */
 
+    dlgInfo->dlgProc   = dlgProc;
     dlgInfo->hwndFocus = DIALOG_GetFirstTabItem( hwnd );
     if (dlgInfo->hUserFont)
 	SendMessage32A( hwnd, WM_SETFONT, (WPARAM)dlgInfo->hUserFont, 0 );
@@ -610,7 +610,7 @@
  *           CreateDialog16   (USER.89)
  */
 HWND16 CreateDialog16( HINSTANCE16 hInst, SEGPTR dlgTemplate,
-                       HWND16 owner, DLGPROC dlgProc )
+                       HWND16 owner, DLGPROC16 dlgProc )
 {
     return CreateDialogParam16( hInst, dlgTemplate, owner, dlgProc, 0 );
 }
@@ -620,7 +620,7 @@
  *           CreateDialogParam16   (USER.241)
  */
 HWND16 CreateDialogParam16( HINSTANCE16 hInst, SEGPTR dlgTemplate,
-                            HWND16 owner, DLGPROC dlgProc, LPARAM param )
+                            HWND16 owner, DLGPROC16 dlgProc, LPARAM param )
 {
     HWND16 hwnd = 0;
     HRSRC hRsrc;
@@ -644,7 +644,7 @@
  *           CreateDialogParam32A   (USER32.72)
  */
 HWND32 CreateDialogParam32A( HINSTANCE32 hInst, LPCSTR name,
-                             HWND32 owner, DLGPROC dlgProc, LPARAM param )
+                             HWND32 owner, DLGPROC32 dlgProc, LPARAM param )
 {
     if (HIWORD(name))
     {
@@ -661,7 +661,7 @@
  *           CreateDialogParam32W   (USER32.73)
  */
 HWND32 CreateDialogParam32W( HINSTANCE32 hInst, LPCWSTR name,
-                             HWND32 owner, DLGPROC dlgProc, LPARAM param )
+                             HWND32 owner, DLGPROC32 dlgProc, LPARAM param )
 {
     HANDLE32 hrsrc = FindResource32( hInst, name, (LPWSTR)RT_DIALOG );
     if (!hrsrc) return 0;
@@ -674,7 +674,7 @@
  *           CreateDialogIndirect16   (USER.219)
  */
 HWND16 CreateDialogIndirect16( HINSTANCE16 hInst, LPCVOID dlgTemplate,
-                               HWND16 owner, DLGPROC dlgProc )
+                               HWND16 owner, DLGPROC16 dlgProc )
 {
     return CreateDialogIndirectParam16( hInst, dlgTemplate, owner, dlgProc, 0);
 }
@@ -684,7 +684,7 @@
  *           CreateDialogIndirectParam16   (USER.242)
  */
 HWND16 CreateDialogIndirectParam16( HINSTANCE16 hInst, LPCVOID dlgTemplate,
-                                    HWND16 owner, DLGPROC dlgProc,
+                                    HWND16 owner, DLGPROC16 dlgProc,
                                     LPARAM param )
 {
     HANDLE32 proc = WINPROC_AllocWinProc( (UINT32)dlgProc, WIN_PROC_16 );
@@ -697,7 +697,7 @@
  *           CreateDialogIndirectParam32A   (USER32.69)
  */
 HWND32 CreateDialogIndirectParam32A( HINSTANCE32 hInst, LPCVOID dlgTemplate,
-                                     HWND32 owner, DLGPROC dlgProc,
+                                     HWND32 owner, DLGPROC32 dlgProc,
                                      LPARAM param )
 {
     HANDLE32 proc = WINPROC_AllocWinProc( (UINT32)dlgProc, WIN_PROC_32A );
@@ -710,7 +710,7 @@
  *           CreateDialogIndirectParam32W   (USER32.71)
  */
 HWND32 CreateDialogIndirectParam32W( HINSTANCE32 hInst, LPCVOID dlgTemplate,
-                                     HWND32 owner, DLGPROC dlgProc,
+                                     HWND32 owner, DLGPROC32 dlgProc,
                                      LPARAM param )
 {
     HANDLE32 proc = WINPROC_AllocWinProc( (UINT32)dlgProc, WIN_PROC_32W );
@@ -727,14 +727,14 @@
     WND * wndPtr;
     DIALOGINFO * dlgInfo;
     HANDLE msgHandle;
-    MSG* lpmsg;
+    MSG16* lpmsg;
     INT32 retval;
 
       /* Owner must be a top-level window */
     owner = WIN_GetTopParent( owner );
     if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return -1;
-    if (!(msgHandle = USER_HEAP_ALLOC( sizeof(MSG) ))) return -1;
-    lpmsg = (MSG *) USER_HEAP_LIN_ADDR( msgHandle );
+    if (!(msgHandle = USER_HEAP_ALLOC( sizeof(MSG16) ))) return -1;
+    lpmsg = (MSG16 *) USER_HEAP_LIN_ADDR( msgHandle );
     dlgInfo = (DIALOGINFO *)wndPtr->wExtra;
     EnableWindow( owner, FALSE );
     ShowWindow( hwnd, SW_SHOW );
@@ -762,7 +762,7 @@
  *           DialogBox16   (USER.87)
  */
 INT16 DialogBox16( HINSTANCE16 hInst, SEGPTR dlgTemplate,
-                   HWND16 owner, DLGPROC dlgProc )
+                   HWND16 owner, DLGPROC16 dlgProc )
 {
     return DialogBoxParam16( hInst, dlgTemplate, owner, dlgProc, 0 );
 }
@@ -772,7 +772,7 @@
  *           DialogBoxParam16   (USER.239)
  */
 INT16 DialogBoxParam16( HINSTANCE16 hInst, SEGPTR template,
-                        HWND16 owner, DLGPROC dlgProc, LPARAM param )
+                        HWND16 owner, DLGPROC16 dlgProc, LPARAM param )
 {
     HWND16 hwnd = CreateDialogParam16( hInst, template, owner, dlgProc, param);
     if (hwnd) return (INT16)DIALOG_DoDialogBox( hwnd, owner );
@@ -784,7 +784,7 @@
  *           DialogBoxParam32A   (USER32.138)
  */
 INT32 DialogBoxParam32A( HINSTANCE32 hInst, LPCSTR name,
-                         HWND32 owner, DLGPROC dlgProc, LPARAM param )
+                         HWND32 owner, DLGPROC32 dlgProc, LPARAM param )
 {
     HWND32 hwnd = CreateDialogParam32A( hInst, name, owner, dlgProc, param );
     if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
@@ -796,7 +796,7 @@
  *           DialogBoxParam32W   (USER32.139)
  */
 INT32 DialogBoxParam32W( HINSTANCE32 hInst, LPCWSTR name,
-                         HWND32 owner, DLGPROC dlgProc, LPARAM param )
+                         HWND32 owner, DLGPROC32 dlgProc, LPARAM param )
 {
     HWND32 hwnd = CreateDialogParam32W( hInst, name, owner, dlgProc, param );
     if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
@@ -808,7 +808,7 @@
  *           DialogBoxIndirect16   (USER.218)
  */
 INT16 DialogBoxIndirect16( HINSTANCE16 hInst, HANDLE16 dlgTemplate,
-                           HWND16 owner, DLGPROC dlgProc )
+                           HWND16 owner, DLGPROC16 dlgProc )
 {
     return DialogBoxIndirectParam16( hInst, dlgTemplate, owner, dlgProc, 0 );
 }
@@ -818,7 +818,7 @@
  *           DialogBoxIndirectParam16   (USER.240)
  */
 INT16 DialogBoxIndirectParam16( HINSTANCE16 hInst, HANDLE16 dlgTemplate,
-                                HWND16 owner, DLGPROC dlgProc, LPARAM param )
+                                HWND16 owner, DLGPROC16 dlgProc, LPARAM param )
 {
     HWND16 hwnd;
     LPCVOID ptr;
@@ -835,7 +835,7 @@
  *           DialogBoxIndirectParam32A   (USER32.135)
  */
 INT32 DialogBoxIndirectParam32A( HINSTANCE32 hInstance, LPCVOID template,
-                                 HWND32 owner, DLGPROC dlgProc ,LPARAM param )
+                                 HWND32 owner, DLGPROC32 dlgProc ,LPARAM param)
 {
     HWND32 hwnd = CreateDialogIndirectParam32A( hInstance, template,
                                                 owner, dlgProc, param );
@@ -848,7 +848,7 @@
  *           DialogBoxIndirectParam32W   (USER32.137)
  */
 INT32 DialogBoxIndirectParam32W( HINSTANCE32 hInstance, LPCVOID template,
-                                 HWND32 owner, DLGPROC dlgProc ,LPARAM param )
+                                 HWND32 owner, DLGPROC32 dlgProc ,LPARAM param)
 {
     HWND32 hwnd = CreateDialogIndirectParam32W( hInstance, template,
                                                 owner, dlgProc, param );
@@ -874,7 +874,7 @@
 /***********************************************************************
  *           IsDialogMessage   (USER.90)
  */
-BOOL IsDialogMessage( HWND hwndDlg, LPMSG msg )
+BOOL IsDialogMessage( HWND hwndDlg, LPMSG16 msg )
 {
     WND * wndPtr;
     int dlgCode;