Made all 16<->32 HWND conversions use explicit functions instead of
implicit type casts.
Moved a lot of 16-bit functions to the new wnd16.c file.
Changed DIALOGINFO structure handling to support 32-bit handles.

diff --git a/windows/mdi.c b/windows/mdi.c
index 6822b41..9ce4d2e 100644
--- a/windows/mdi.c
+++ b/windows/mdi.c
@@ -550,10 +550,10 @@
         cs16->szTitle = SEGPTR_GET(title);
         cs16->szClass = SEGPTR_GET(cls);
 
-	hwnd = CreateWindow16( cs->szClass, cs->szTitle, style, 
-			       cs16->x, cs16->y, cs16->cx, cs16->cy, parent,
-			       (HMENU)wIDmenu, cs16->hOwner,
-                               (LPVOID)SEGPTR_GET(cs16) );
+        hwnd = WIN_Handle32( CreateWindow16( cs->szClass, cs->szTitle, style,
+                                             cs16->x, cs16->y, cs16->cx, cs16->cy,
+                                             WIN_Handle16(parent), (HMENU)wIDmenu,
+                                             cs16->hOwner, (LPVOID)SEGPTR_GET(cs16) ));
         SEGPTR_FREE( title );
         SEGPTR_FREE( cls );
         SEGPTR_FREE( cs16 );
@@ -1287,16 +1287,16 @@
         return MDICascade(hwnd, ci);
 
       case WM_MDICREATE:
-        if (lParam) return MDICreateChild( hwnd, ci,
-                                           (MDICREATESTRUCTA *)lParam, unicode );
-        else return 0;
+        if (lParam)
+            return (LRESULT)MDICreateChild( hwnd, ci, (MDICREATESTRUCTA *)lParam, unicode );
+        return 0;
 
       case WM_MDIDESTROY:
           return MDIDestroyChild( hwnd, ci, WIN_GetFullHandle( (HWND)wParam ), TRUE );
 
       case WM_MDIGETACTIVE:
           if (lParam) *(BOOL *)lParam = (ci->hwndChildMaximized != 0);
-          return ci->hwndActiveChild;
+          return (LRESULT)ci->hwndActiveChild;
 
       case WM_MDIICONARRANGE:
 	ci->mdiFlags |= MDIF_NEEDUPDATE;
@@ -1423,19 +1423,21 @@
     switch (message)
     {
     case WM_SETTEXT:
-        return DefFrameProcA( hwnd, hwndMDIClient, message, wParam, (LPARAM)MapSL(lParam) );
-
+        lParam = (LPARAM)MapSL(lParam);
+        /* fall through */
     case WM_COMMAND:
     case WM_NCACTIVATE:
     case WM_SETFOCUS:
     case WM_SIZE:
-        return DefFrameProcW( hwnd, hwndMDIClient, message, wParam, lParam );
+        return DefFrameProcA( WIN_Handle32(hwnd), WIN_Handle32(hwndMDIClient),
+                              message, wParam, lParam );
 
     case WM_NEXTMENU:
         {
             MDINEXTMENU next_menu;
-            DefFrameProcW( hwnd, hwndMDIClient, message, wParam, (LPARAM)&next_menu );
-            return MAKELONG( next_menu.hmenuNext, next_menu.hwndNext );
+            DefFrameProcW( WIN_Handle32(hwnd), WIN_Handle32(hwndMDIClient),
+                           message, wParam, (LPARAM)&next_menu );
+            return MAKELONG( next_menu.hmenuNext, WIN_Handle16(next_menu.hwndNext) );
         }
     default:
         return DefWindowProc16(hwnd, message, wParam, lParam);
@@ -1600,7 +1602,7 @@
         {
             MDINEXTMENU next_menu;
             DefMDIChildProcW( WIN_Handle32(hwnd), message, wParam, (LPARAM)&next_menu );
-            return MAKELONG( next_menu.hmenuNext, next_menu.hwndNext );
+            return MAKELONG( next_menu.hmenuNext, WIN_Handle16(next_menu.hwndNext) );
         }
     default:
         return DefWindowProc16(hwnd, message, wParam, lParam);
@@ -1875,24 +1877,6 @@
 }
 
 /**********************************************************************
- *		TranslateMDISysAccel (USER.451)
- */
-BOOL16 WINAPI TranslateMDISysAccel16( HWND16 hwndClient, LPMSG16 msg )
-{
-    if (msg->message == WM_KEYDOWN || msg->message == WM_SYSKEYDOWN)
-    {
-        MSG msg32;
-        msg32.hwnd    = msg->hwnd;
-        msg32.message = msg->message;
-        msg32.wParam  = msg->wParam;
-        msg32.lParam  = msg->lParam;
-        /* MDICLIENTINFO is still the same for win32 and win16 ... */
-        return TranslateMDISysAccel(hwndClient, &msg32);
-    }
-    return 0;
-}
-
-/**********************************************************************
  *		TranslateMDISysAccel (USER32.@)
  */
 BOOL WINAPI TranslateMDISysAccel( HWND hwndClient, LPMSG msg )
@@ -1930,14 +1914,6 @@
 }
 
 /***********************************************************************
- *		CalcChildScroll (USER.462)
- */
-void WINAPI CalcChildScroll16( HWND16 hwnd, WORD scroll )
-{
-    return CalcChildScroll( hwnd, scroll );
-}
-
-/***********************************************************************
  *		CalcChildScroll (USER32.@)
  */
 void WINAPI CalcChildScroll( HWND hwnd, INT scroll )
@@ -1998,15 +1974,6 @@
 
 
 /***********************************************************************
- *		ScrollChildren (USER.463)
- */
-void WINAPI ScrollChildren16(HWND16 hWnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam)
-{
-    ScrollChildren( hWnd, uMsg, wParam, lParam );
-}
-
-
-/***********************************************************************
  *		ScrollChildren (USER32.@)
  */
 void WINAPI ScrollChildren(HWND hWnd, UINT uMsg, WPARAM wParam,
@@ -2196,9 +2163,8 @@
                      */
                     HWND hListBox     = GetDlgItem(hDlg, MDI_IDC_LISTBOX);
                     UINT index        = SendMessageW(hListBox, LB_GETCURSEL, 0, 0);
-                    HWND hwnd         = SendMessageW(hListBox, LB_GETITEMDATA, index, 0);
-
-                    EndDialog(hDlg, hwnd);
+                    LRESULT res = SendMessageW(hListBox, LB_GETITEMDATA, index, 0);
+                    EndDialog(hDlg, res);
                     return TRUE;
                 }
                 case IDCANCEL: