PATCH - Win16/32 comdlg32 file dialogs

Steven Edwards Steven_Ed4153 at yahoo.com
Sat Jun 14 20:33:24 CDT 2003


Once the split of comdlg32 is done there are still going to be quite a 
few internal functions that need to be rewritten almost totaly due to 
the fact they still import the WIN16 api. If anyone of the comdlg32 
printing Gurus are watching I am going to need your help.

Thanks
Steven

Changelog:
Split Win16/32 Filedialogs
sort C_SRC16 files by spelling
-------------- next part --------------
Index: Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/commdlg/Makefile.in,v
retrieving revision 1.30
diff -u -r1.30 Makefile.in
--- Makefile.in	13 Jun 2003 18:07:45 -0000	1.30
+++ Makefile.in	15 Jun 2003 01:26:59 -0000
@@ -26,8 +26,9 @@
 
 C_SRCS16  = \
 	colordlg16.c \
-	fontdlg16.c \
-	finddlg.c
+	filedlg16.c \
+	finddlg.c \
+	fontdlg16.c
 
 RC_SRCS= rsrc.rc

Index: filedlg.c
===================================================================
RCS file: /home/wine/wine/dlls/commdlg/filedlg.c,v
retrieving revision 1.62
diff -u -r1.62 filedlg.c
--- filedlg.c	13 May 2003 22:06:34 -0000	1.62
+++ filedlg.c	15 Jun 2003 01:26:25 -0000
@@ -37,37 +37,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
 
 #include "cdlg.h"
-
-#define BUFFILE 512
-#define BUFFILEALLOC 512 * sizeof(WCHAR)
-
-struct FSPRIVATE
-{
-    HWND hwnd; /* file dialog window handle */
-    BOOL hook; /* TRUE if the dialog is hooked */
-    UINT lbselchstring; /* registered message id */
-    UINT fileokstring; /* registered message id */
-    LPARAM lParam; /* save original lparam */
-    HANDLE16 hDlgTmpl16; /* handle for resource 16 */
-    HANDLE16 hResource16; /* handle for allocated resource 16 */
-    HANDLE16 hGlobal16; /* 16 bits mem block (resources) */
-    LPCVOID template; /* template for 32 bits resource */
-    BOOL open; /* TRUE if open dialog, FALSE if save dialog */
-    OPENFILENAMEW *ofnW; /* original structure or work struct */
-    OPENFILENAMEA *ofnA; /* original structure if 32bits ansi dialog */
-    OPENFILENAME16 *ofn16; /* original structure if 16 bits dialog */
-};
-
-
-#define LFSPRIVATE struct FSPRIVATE *
-
-#define LFS16 1
-#define LFS32A 2
-#define LFS32W 3
-
-static const WCHAR FILE_star[] = {'*','.','*', 0};
-static const WCHAR FILE_bslash[] = {'\\', 0};
-static const WCHAR FILE_specc[] = {'%','c',':', 0};
+#include "filedlg.h"
 
 static HICON hFolder = 0;
 static HICON hFolder2 = 0;
@@ -75,11 +45,6 @@
 static HICON hHDisk = 0;
 static HICON hCDRom = 0;
 static HICON hNet = 0;
-static const int fldrHeight = 16;
-static const int fldrWidth = 20;
-
-#define OFN_PROP "FILEDLG_OFN"
-
 static char defaultopen[]="Open File";
 static char defaultsave[]="Save as";
 
@@ -100,7 +65,7 @@
 /***********************************************************************
  * 				FileDlg_Init			[internal]
  */
-static BOOL FileDlg_Init(void)
+BOOL FileDlg_Init(void)
 {
     static BOOL initialized = 0;
 
@@ -292,7 +257,7 @@
  *
  *      Call the appropriate hook
  */
-static BOOL FILEDLG_CallWindowProc(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam,
+BOOL FILEDLG_CallWindowProc(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam,
                                    LPARAM lParam)
 {
     if (lfs->ofn16)
@@ -399,7 +364,7 @@
 /***********************************************************************
  *                              FILEDLG_WMDrawItem              [internal]
  */
-static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam,
+LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam,
        int savedlg, LPDRAWITEMSTRUCT lpdis)
 {
     WCHAR *str;
@@ -514,22 +479,10 @@
 }
 
 /***********************************************************************
- *                              FILEDLG_WMMeasureItem16         [internal]
- */
-static LONG FILEDLG_WMMeasureItem16(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
-{
-    LPMEASUREITEMSTRUCT16 lpmeasure;
-
-    lpmeasure = MapSL(lParam);
-    lpmeasure->itemHeight = fldrHeight;
-    return TRUE;
-}
-
-/***********************************************************************
  *                              FILEDLG_WMInitDialog            [internal]
  */
 
-static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
+LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
 {
   int i, n;
   WCHAR tmpstr[BUFFILE];
@@ -993,7 +946,7 @@
 /***********************************************************************
  *                              FILEDLG_WMCommand               [internal]
  */
-static LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
+LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
        UINT control, LFSPRIVATE lfs )
 {
     switch (control)
@@ -1334,7 +1287,6 @@
     return bRet;
 }
 
-
 /***********************************************************************
  *           GetFileName31W                                 [internal]
  *
@@ -1364,109 +1316,6 @@
     return bRet;
 }
 
-
-/* ------------------ Dialog procedures ---------------------- */
-
-/***********************************************************************
- *           FileOpenDlgProc   (COMMDLG.6)
- */
-BOOL16 CALLBACK FileOpenDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
-                               LPARAM lParam)
-{
-    HWND hWnd = HWND_32(hWnd16);
-    LFSPRIVATE lfs = (LFSPRIVATE)GetPropA(hWnd,OFN_PROP);
-    DRAWITEMSTRUCT dis;
-
-    TRACE("msg=%x wparam=%x lParam=%lx\n", wMsg, wParam, lParam);
-    if ((wMsg != WM_INITDIALOG) && lfs && lfs->hook)
-        {
-            LRESULT lRet = (BOOL16)FILEDLG_CallWindowProc(lfs, wMsg, wParam, lParam);
-            if (lRet)
-                return lRet;         /* else continue message processing */
-        }
-    switch (wMsg)
-    {
-    case WM_INITDIALOG:
-        return FILEDLG_WMInitDialog(hWnd, wParam, lParam);
-
-    case WM_MEASUREITEM:
-        return FILEDLG_WMMeasureItem16(hWnd16, wParam, lParam);
-
-    case WM_DRAWITEM:
-        FILEDLG_MapDrawItemStruct(MapSL(lParam), &dis);
-        return FILEDLG_WMDrawItem(hWnd, wParam, lParam, FALSE, &dis);
-
-    case WM_COMMAND:
-        return FILEDLG_WMCommand(hWnd, lParam, HIWORD(lParam),wParam, lfs);
-#if 0
-    case WM_CTLCOLOR:
-         SetBkColor((HDC16)wParam, 0x00C0C0C0);
-         switch (HIWORD(lParam))
-         {
-	 case CTLCOLOR_BTN:
-	     SetTextColor((HDC16)wParam, 0x00000000);
-             return hGRAYBrush;
-	case CTLCOLOR_STATIC:
-             SetTextColor((HDC16)wParam, 0x00000000);
-             return hGRAYBrush;
-	}
-      break;
-#endif
-    }
-    return FALSE;
-}
-
-/***********************************************************************
- *           FileSaveDlgProc   (COMMDLG.7)
- */
-BOOL16 CALLBACK FileSaveDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
-                               LPARAM lParam)
-{
- HWND hWnd = HWND_32(hWnd16);
- LFSPRIVATE lfs = (LFSPRIVATE)GetPropA(hWnd,OFN_PROP);
- DRAWITEMSTRUCT dis;
-
- TRACE("msg=%x wparam=%x lParam=%lx\n", wMsg, wParam, lParam);
- if ((wMsg != WM_INITDIALOG) && lfs && lfs->hook)
-  {
-   LRESULT  lRet;
-   lRet = (BOOL16)FILEDLG_CallWindowProc(lfs, wMsg, wParam, lParam);
-   if (lRet)
-    return lRet;         /* else continue message processing */
-  }
-  switch (wMsg) {
-   case WM_INITDIALOG:
-      return FILEDLG_WMInitDialog(hWnd, wParam, lParam);
-
-   case WM_MEASUREITEM:
-      return FILEDLG_WMMeasureItem16(hWnd16, wParam, lParam);
-
-   case WM_DRAWITEM:
-      FILEDLG_MapDrawItemStruct(MapSL(lParam), &dis);
-      return FILEDLG_WMDrawItem(hWnd, wParam, lParam, TRUE, &dis);
-
-   case WM_COMMAND:
-      return FILEDLG_WMCommand(hWnd, lParam, HIWORD(lParam), wParam, lfs);
-  }
-
-  /*
-  case WM_CTLCOLOR:
-   SetBkColor((HDC16)wParam, 0x00C0C0C0);
-   switch (HIWORD(lParam))
-   {
-    case CTLCOLOR_BTN:
-     SetTextColor((HDC16)wParam, 0x00000000);
-     return hGRAYBrush;
-    case CTLCOLOR_STATIC:
-     SetTextColor((HDC16)wParam, 0x00000000);
-     return hGRAYBrush;
-   }
-   return FALSE;
-
-   */
-  return FALSE;
-}
-
 /***********************************************************************
  *           FileOpenDlgProc                                    [internal]
  *      Used for open and save, in fact.
@@ -1516,82 +1365,6 @@
 }
 
 /* ------------------ APIs ---------------------- */
-
-/***********************************************************************
- *           GetOpenFileName   (COMMDLG.1)
- *
- * Creates a dialog box for the user to select a file to open.
- *
- * RETURNS
- *    TRUE on success: user selected a valid file
- *    FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
- *
- * BUGS
- *    unknown, there are some FIXME's left.
- */
-BOOL16 WINAPI GetOpenFileName16(
-				SEGPTR ofn /* [in/out] address of structure with data*/
-				)
-{
-    HINSTANCE16 hInst;
-    BOOL bRet = FALSE;
-    LPOPENFILENAME16 lpofn = MapSL(ofn);
-    LFSPRIVATE lfs;
-    FARPROC16 ptr;
-
-    if (!lpofn || !FileDlg_Init()) return FALSE;
-
-    lfs = FILEDLG_AllocPrivate((LPARAM) ofn, LFS16, OPEN_DIALOG);
-    if (lfs)
-    {
-        hInst = GetWindowWord( HWND_32(lpofn->hwndOwner), GWL_HINSTANCE );
-        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 6);
-        bRet = DialogBoxIndirectParam16( hInst, lfs->hDlgTmpl16, lpofn->hwndOwner,
-                                         (DLGPROC16) ptr, (LPARAM) lfs);
-        FILEDLG_DestroyPrivate(lfs);
-    }
-
-    TRACE("return lpstrFile='%s' !\n", (char *)MapSL(lpofn->lpstrFile));
-    return bRet;
-}
-
-/***********************************************************************
- *           GetSaveFileName   (COMMDLG.2)
- *
- * Creates a dialog box for the user to select a file to save.
- *
- * RETURNS
- *    TRUE on success: user enters a valid file
- *    FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
- *
- * BUGS
- *    unknown. There are some FIXME's left.
- */
-BOOL16 WINAPI GetSaveFileName16(
-				SEGPTR ofn /* [in/out] addess of structure with data*/
-				)
-{
-    HINSTANCE16 hInst;
-    BOOL bRet = FALSE;
-    LPOPENFILENAME16 lpofn = MapSL(ofn);
-    LFSPRIVATE lfs;
-    FARPROC16 ptr;
-
-    if (!lpofn || !FileDlg_Init()) return FALSE;
-
-    lfs = FILEDLG_AllocPrivate((LPARAM) ofn, LFS16, SAVE_DIALOG);
-    if (lfs)
-    {
-        hInst = GetWindowWord( HWND_32(lpofn->hwndOwner), GWL_HINSTANCE );
-        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 7);
-        bRet = DialogBoxIndirectParam16( hInst, lfs->hDlgTmpl16, lpofn->hwndOwner,
-                                         (DLGPROC16) ptr, (LPARAM) lfs);
-        FILEDLG_DestroyPrivate(lfs);
-    }
-
-    TRACE("return lpstrFile='%s' !\n", (char *)MapSL(lpofn->lpstrFile));
-    return bRet;
-}
 
 /***********************************************************************
  *            GetOpenFileNameA  (COMDLG32.@)


--- /dev/null	Sat Jun 14 21:26:29 2003
+++ filedlg16.c	Sat Jun 14 20:33:00 2003
@@ -0,0 +1,232 @@
+/*
+ * COMMDLG - File Dialogs
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "windef.h"
+#include "winnls.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
+#include "wine/unicode.h"
+#include "commdlg.h"
+#include "wine/debug.h"
+#include "cderr.h"
+#include "winternl.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+#include "filedlg.h"
+
+/***********************************************************************
+ *                              FILEDLG_WMMeasureItem16         [internal]
+ */
+static LONG FILEDLG_WMMeasureItem16(HWND16 hWnd, WPARAM16 wParam, LPARAM lParam)
+{
+    LPMEASUREITEMSTRUCT16 lpmeasure;
+
+    lpmeasure = MapSL(lParam);
+    lpmeasure->itemHeight = fldrHeight;
+    return TRUE;
+}
+
+/* ------------------ Dialog procedures ---------------------- */
+
+/***********************************************************************
+ *           FileOpenDlgProc   (COMMDLG.6)
+ */
+BOOL16 CALLBACK FileOpenDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
+                               LPARAM lParam)
+{
+    HWND hWnd = HWND_32(hWnd16);
+    LFSPRIVATE lfs = (LFSPRIVATE)GetPropA(hWnd,OFN_PROP);
+    DRAWITEMSTRUCT dis;
+
+    TRACE("msg=%x wparam=%x lParam=%lx\n", wMsg, wParam, lParam);
+    if ((wMsg != WM_INITDIALOG) && lfs && lfs->hook)
+        {
+            LRESULT lRet = (BOOL16)FILEDLG_CallWindowProc(lfs, wMsg, wParam, lParam);
+            if (lRet)
+                return lRet;         /* else continue message processing */
+        }
+    switch (wMsg)
+    {
+    case WM_INITDIALOG:
+        return FILEDLG_WMInitDialog(hWnd, wParam, lParam);
+
+    case WM_MEASUREITEM:
+        return FILEDLG_WMMeasureItem16(hWnd16, wParam, lParam);
+
+    case WM_DRAWITEM:
+        FILEDLG_MapDrawItemStruct(MapSL(lParam), &dis);
+        return FILEDLG_WMDrawItem(hWnd, wParam, lParam, FALSE, &dis);
+
+    case WM_COMMAND:
+        return FILEDLG_WMCommand(hWnd, lParam, HIWORD(lParam),wParam, lfs);
+#if 0
+    case WM_CTLCOLOR:
+         SetBkColor((HDC16)wParam, 0x00C0C0C0);
+         switch (HIWORD(lParam))
+         {
+	 case CTLCOLOR_BTN:
+	     SetTextColor((HDC16)wParam, 0x00000000);
+             return hGRAYBrush;
+	case CTLCOLOR_STATIC:
+             SetTextColor((HDC16)wParam, 0x00000000);
+             return hGRAYBrush;
+	}
+      break;
+#endif
+    }
+    return FALSE;
+}
+
+/***********************************************************************
+ *           FileSaveDlgProc   (COMMDLG.7)
+ */
+BOOL16 CALLBACK FileSaveDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
+                               LPARAM lParam)
+{
+ HWND hWnd = HWND_32(hWnd16);
+ LFSPRIVATE lfs = (LFSPRIVATE)GetPropA(hWnd,OFN_PROP);
+ DRAWITEMSTRUCT dis;
+
+ TRACE("msg=%x wparam=%x lParam=%lx\n", wMsg, wParam, lParam);
+ if ((wMsg != WM_INITDIALOG) && lfs && lfs->hook)
+  {
+   LRESULT  lRet;
+   lRet = (BOOL16)FILEDLG_CallWindowProc(lfs, wMsg, wParam, lParam);
+   if (lRet)
+    return lRet;         /* else continue message processing */
+  }
+  switch (wMsg) {
+   case WM_INITDIALOG:
+      return FILEDLG_WMInitDialog(hWnd, wParam, lParam);
+
+   case WM_MEASUREITEM:
+      return FILEDLG_WMMeasureItem16(hWnd16, wParam, lParam);
+
+   case WM_DRAWITEM:
+      FILEDLG_MapDrawItemStruct(MapSL(lParam), &dis);
+      return FILEDLG_WMDrawItem(hWnd, wParam, lParam, TRUE, &dis);
+
+   case WM_COMMAND:
+      return FILEDLG_WMCommand(hWnd, lParam, HIWORD(lParam), wParam, lfs);
+  }
+
+  /*
+  case WM_CTLCOLOR:
+   SetBkColor((HDC16)wParam, 0x00C0C0C0);
+   switch (HIWORD(lParam))
+   {
+    case CTLCOLOR_BTN:
+     SetTextColor((HDC16)wParam, 0x00000000);
+     return hGRAYBrush;
+    case CTLCOLOR_STATIC:
+     SetTextColor((HDC16)wParam, 0x00000000);
+     return hGRAYBrush;
+   }
+   return FALSE;
+
+   */
+  return FALSE;
+}
+
+/* ------------------ APIs ---------------------- */
+
+/***********************************************************************
+ *           GetOpenFileName   (COMMDLG.1)
+ *
+ * Creates a dialog box for the user to select a file to open.
+ *
+ * RETURNS
+ *    TRUE on success: user selected a valid file
+ *    FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
+ *
+ * BUGS
+ *    unknown, there are some FIXME's left.
+ */
+BOOL16 WINAPI GetOpenFileName16(
+				SEGPTR ofn /* [in/out] address of structure with data*/
+				)
+{
+    HINSTANCE16 hInst;
+    BOOL bRet = FALSE;
+    LPOPENFILENAME16 lpofn = MapSL(ofn);
+    LFSPRIVATE lfs;
+    FARPROC16 ptr;
+
+    if (!lpofn || !FileDlg_Init()) return FALSE;
+
+    lfs = FILEDLG_AllocPrivate((LPARAM) ofn, LFS16, OPEN_DIALOG);
+    if (lfs)
+    {
+        hInst = GetWindowWord( HWND_32(lpofn->hwndOwner), GWL_HINSTANCE );
+        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 6);
+        bRet = DialogBoxIndirectParam16( hInst, lfs->hDlgTmpl16, lpofn->hwndOwner,
+                                         (DLGPROC16) ptr, (LPARAM) lfs);
+        FILEDLG_DestroyPrivate(lfs);
+    }
+
+    TRACE("return lpstrFile='%s' !\n", (char *)MapSL(lpofn->lpstrFile));
+    return bRet;
+}
+
+/***********************************************************************
+ *           GetSaveFileName   (COMMDLG.2)
+ *
+ * Creates a dialog box for the user to select a file to save.
+ *
+ * RETURNS
+ *    TRUE on success: user enters a valid file
+ *    FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
+ *
+ * BUGS
+ *    unknown. There are some FIXME's left.
+ */
+BOOL16 WINAPI GetSaveFileName16(
+				SEGPTR ofn /* [in/out] addess of structure with data*/
+				)
+{
+    HINSTANCE16 hInst;
+    BOOL bRet = FALSE;
+    LPOPENFILENAME16 lpofn = MapSL(ofn);
+    LFSPRIVATE lfs;
+    FARPROC16 ptr;
+
+    if (!lpofn || !FileDlg_Init()) return FALSE;
+
+    lfs = FILEDLG_AllocPrivate((LPARAM) ofn, LFS16, SAVE_DIALOG);
+    if (lfs)
+    {
+        hInst = GetWindowWord( HWND_32(lpofn->hwndOwner), GWL_HINSTANCE );
+        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 7);
+        bRet = DialogBoxIndirectParam16( hInst, lfs->hDlgTmpl16, lpofn->hwndOwner,
+                                         (DLGPROC16) ptr, (LPARAM) lfs);
+        FILEDLG_DestroyPrivate(lfs);
+    }
+
+    TRACE("return lpstrFile='%s' !\n", (char *)MapSL(lpofn->lpstrFile));
+    return bRet;
+}


--- /dev/null	Sat Jun 14 21:26:23 2003
+++ filedlg.h	Sat Jun 14 21:25:04 2003
@@ -0,0 +1,73 @@
+/*
+ * COMMDLG - File Dialogs
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _WINE_FINDDLG_H
+#define _WINE_FINDDLG_H
+
+#define BUFFILE 512
+#define BUFFILEALLOC 512 * sizeof(WCHAR)
+
+struct FSPRIVATE
+{
+    HWND hwnd; /* file dialog window handle */
+    BOOL hook; /* TRUE if the dialog is hooked */
+    UINT lbselchstring; /* registered message id */
+    UINT fileokstring; /* registered message id */
+    LPARAM lParam; /* save original lparam */
+    HANDLE16 hDlgTmpl16; /* handle for resource 16 */
+    HANDLE16 hResource16; /* handle for allocated resource 16 */
+    HANDLE16 hGlobal16; /* 16 bits mem block (resources) */
+    LPCVOID template; /* template for 32 bits resource */
+    BOOL open; /* TRUE if open dialog, FALSE if save dialog */
+    OPENFILENAMEW *ofnW; /* original structure or work struct */
+    OPENFILENAMEA *ofnA; /* original structure if 32bits ansi dialog */
+    OPENFILENAME16 *ofn16; /* original structure if 16 bits dialog */
+};
+
+#define LFSPRIVATE struct FSPRIVATE *
+#define LFS16 1
+#define LFS32A 2
+#define LFS32W 3
+#define OFN_PROP "FILEDLG_OFN"
+
+static const WCHAR FILE_star[] = {'*','.','*', 0};
+static const WCHAR FILE_bslash[] = {'\\', 0};
+static const WCHAR FILE_specc[] = {'%','c',':', 0};
+static const int fldrHeight = 16;
+static const int fldrWidth = 20;
+
+/* Internal Functions
+ * Do not Export to other applications or dlls
+ */
+
+BOOL FILEDLG_CallWindowProc(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam,
+                                   LPARAM lParam);
+LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam);
+void FILEDLG_MapDrawItemStruct(LPDRAWITEMSTRUCT16 lpdis16, LPDRAWITEMSTRUCT lpdis);
+LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam,
+       int savedlg, LPDRAWITEMSTRUCT lpdis);
+LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
+       UINT control, LFSPRIVATE lfs );
+BOOL FileDlg_Init(void);
+void FILEDLG_DestroyPrivate(LFSPRIVATE lfs);
+LFSPRIVATE FILEDLG_AllocPrivate(LPARAM lParam, int type, UINT dlgType);
+
+#endif /* _WINE_FINDDLG_H */


More information about the wine-patches mailing list