Release 961013

Sun Oct 13 15:32:32 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [Make.rules.in] [*/Makefile.in]
	Made it possible to compile from a directory other than the source
	directory.

	* [graphics/metafiledrv/init.c] [include/metafiledrv.h]
	  [objects/metafile.c] [objects/dc.c]
	New graphics driver for metafiles.

	* [if1632/thunk.c]
	Added thunks for SetWindowsHook and SetDCHook.

	* [windows/dialog.c]
	Fixed GetNextDlgGroupItem and GetNextDlgTabItem to skip disabled
	items.

	* [*/*]
	Removed non Win32-clean types HANDLE, HBITMAP, HBRUSH, HFONT,
 	HINSTANCE, HMENU, HRGN and HTASK.

Wed Oct  9 14:59:45 1996  Frans van Dorsselaer  <dorssel@rulhm1.LeidenUniv.nl>

	* [controls/edit.c]
	Fixed EditWndProc() to fall back to DefWndProc() when the
	edit state structure is not available.

Wed Oct  2 14:00:34 1996  Huw D. M. Davies  <h.davies1@physics.oxford.ac.uk>

	* [windows/nonclient.c] [windows/mdi.c]
	AdjustWindowRectEx16() should only take notice of the styles
 	WS_DLGFRAME, WS_BORDER, WS_THICKFRAME and
 	WS_EX_DLGMODALFRAME. Thanks to Alex Korobka.

	* [controls/scroll.c]
	Fixed typo in ShowScrollBar32().

Sun Aug 25 20:18:56 1996  Jukka Iivonen <iivonen@cc.helsinki.fi>

	* [if1632/user32.spec] [if1632/winmm.spec]
	Added SetParent and sndPlaySoundA.
diff --git a/loader/task.c b/loader/task.c
index 0983041..87b1e37 100644
--- a/loader/task.c
+++ b/loader/task.c
@@ -54,8 +54,8 @@
 static HTASK16 hCurrentTask = 0;
 static HTASK16 hTaskToKill = 0;
 static HTASK16 hLockedTask = 0;
-static WORD nTaskCount = 0;
-static HANDLE hDOSEnvironment = 0;
+static UINT16 nTaskCount = 0;
+static HGLOBAL16 hDOSEnvironment = 0;
 
   /* TASK_Reschedule() 16-bit entry point */
 static FARPROC16 TASK_RescheduleProc;
@@ -66,7 +66,7 @@
 #define TASK_SCHEDULE()  CallTo16_word_(TASK_RescheduleProc)
 #endif
 
-static HANDLE TASK_CreateDOSEnvironment(void);
+static HGLOBAL16 TASK_CreateDOSEnvironment(void);
 
 /***********************************************************************
  *           TASK_Init
@@ -83,7 +83,7 @@
 /***********************************************************************
  *	     TASK_GetNextTask
  */
-HTASK TASK_GetNextTask( HTASK hTask )
+HTASK16 TASK_GetNextTask( HTASK16 hTask )
 {
     TDB* pTask = (TDB*)GlobalLock16(hTask);
 
@@ -97,12 +97,12 @@
  *
  * Create the original DOS environment.
  */
-static HANDLE TASK_CreateDOSEnvironment(void)
+static HGLOBAL16 TASK_CreateDOSEnvironment(void)
 {
     static const char program_name[] = "KRNL386.EXE";
     char **e, *p;
     int initial_size, size, i, winpathlen, sysdirlen;
-    HANDLE handle;
+    HGLOBAL16 handle;
 
     extern char **environ;
 
@@ -279,7 +279,7 @@
  * Allocate a thunk for MakeProcInstance().
  */
 #ifndef WINELIB32
-static SEGPTR TASK_AllocThunk( HTASK hTask )
+static SEGPTR TASK_AllocThunk( HTASK16 hTask )
 {
     TDB *pTask;
     THUNKS *pThunk;
@@ -316,7 +316,7 @@
  * Free a MakeProcInstance() thunk.
  */
 #ifndef WINELIB32
-static BOOL TASK_FreeThunk( HTASK hTask, SEGPTR thunk )
+static BOOL TASK_FreeThunk( HTASK16 hTask, SEGPTR thunk )
 {
     TDB *pTask;
     THUNKS *pThunk;
@@ -396,9 +396,9 @@
                          HINSTANCE16 hPrevInstance, HANDLE16 hEnvironment,
                          LPCSTR cmdLine, UINT16 cmdShow )
 {
-    HTASK hTask;
+    HTASK16 hTask;
     TDB *pTask;
-    HANDLE hParentEnv;
+    HGLOBAL16 hParentEnv;
     NE_MODULE *pModule;
     SEGTABLEENTRY *pSegTable;
     LPSTR name;
@@ -598,10 +598,10 @@
 /***********************************************************************
  *           TASK_DeleteTask
  */
-static void TASK_DeleteTask( HTASK hTask )
+static void TASK_DeleteTask( HTASK16 hTask )
 {
     TDB *pTask;
-    HANDLE hPDB;
+    HGLOBAL16 hPDB;
 
     if (!(pTask = (TDB *)GlobalLock16( hTask ))) return;
     hPDB = pTask->hPDB;
@@ -711,7 +711,7 @@
 void TASK_Reschedule(void)
 {
     TDB *pOldTask = NULL, *pNewTask;
-    HTASK hTask = 0;
+    HTASK16 hTask = 0;
 
 #ifdef CONFIG_IPC
     dde_reschedule();
@@ -862,7 +862,7 @@
 /***********************************************************************
  *           WaitEvent  (KERNEL.30)
  */
-BOOL WaitEvent( HTASK hTask )
+BOOL16 WaitEvent( HTASK16 hTask )
 {
     TDB *pTask;
 
@@ -885,7 +885,7 @@
 /***********************************************************************
  *           PostEvent  (KERNEL.31)
  */
-void PostEvent( HTASK hTask )
+void PostEvent( HTASK16 hTask )
 {
     TDB *pTask;
 
@@ -898,10 +898,10 @@
 /***********************************************************************
  *           SetPriority  (KERNEL.32)
  */
-void SetPriority( HTASK hTask, int delta )
+void SetPriority( HTASK16 hTask, INT16 delta )
 {
     TDB *pTask;
-    int newpriority;
+    INT16 newpriority;
 
     if (!hTask) hTask = hCurrentTask;
     if (!(pTask = (TDB *)GlobalLock16( hTask ))) return;
@@ -919,7 +919,7 @@
 /***********************************************************************
  *           LockCurrentTask  (KERNEL.33)
  */
-HTASK LockCurrentTask( BOOL bLock )
+HTASK16 LockCurrentTask( BOOL16 bLock )
 {
     if (bLock) hLockedTask = hCurrentTask;
     else hLockedTask = 0;
@@ -930,7 +930,7 @@
 /***********************************************************************
  *           IsTaskLocked  (KERNEL.122)
  */
-HTASK IsTaskLocked(void)
+HTASK16 IsTaskLocked(void)
 {
     return hLockedTask;
 }
@@ -953,7 +953,7 @@
 /***********************************************************************
  *           DirectedYield  (KERNEL.150)
  */
-void DirectedYield( HTASK hTask )
+void DirectedYield( HTASK16 hTask )
 {
     TDB *pCurTask = (TDB *)GlobalLock16( hCurrentTask );
     pCurTask->hYieldTo = hTask;
@@ -1035,10 +1035,10 @@
 /**********************************************************************
  *	    GetCodeHandle    (KERNEL.93)
  */
-HANDLE GetCodeHandle( FARPROC16 proc )
+HANDLE16 GetCodeHandle( FARPROC16 proc )
 {
 #ifndef WINELIB32
-    HANDLE handle;
+    HANDLE16 handle;
     BYTE *thunk = (BYTE *)PTR_SEG_TO_LIN( proc );
 
     /* Return the code segment containing 'proc'. */
@@ -1052,7 +1052,7 @@
 
     return handle;
 #else
-    return (HANDLE)proc;
+    return (HANDLE16)proc;
 #endif
 }
 
@@ -1224,7 +1224,7 @@
 /***********************************************************************
  *           GetInstanceData   (KERNEL.54)
  */
-int GetInstanceData( HANDLE instance, WORD buffer, int len )
+INT16 GetInstanceData( HINSTANCE16 instance, WORD buffer, INT16 len )
 {
     char *ptr = (char *)GlobalLock16( instance );
     if (!ptr || !len) return 0;
@@ -1276,7 +1276,7 @@
 /***********************************************************************
  *           GetNumTasks   (KERNEL.152)
  */
-WORD GetNumTasks(void)
+UINT16 GetNumTasks(void)
 {
     return nTaskCount;
 }
@@ -1300,7 +1300,7 @@
 /***********************************************************************
  *           IsTask   (KERNEL.320)
  */
-BOOL IsTask( HTASK hTask )
+BOOL16 IsTask( HTASK16 hTask )
 {
     TDB *pTask;
 
@@ -1352,6 +1352,18 @@
 
 
 /***********************************************************************
+ *           GlobalNotify   (KERNEL.154)
+ */
+VOID GlobalNotify( FARPROC16 proc )
+{
+    TDB *pTask;
+
+    if (!(pTask = (TDB *)GlobalLock16( hCurrentTask ))) return;
+    pTask->discardhandler = proc;
+}
+
+
+/***********************************************************************
  *           GetExePtr   (KERNEL.133)
  */
 HMODULE16 GetExePtr( HANDLE16 handle )