Ported comdlg32.dll from Wine. There are still a few minor bugs with it.
authorSteven Edwards <winehacker@gmail.com>
Fri, 9 Jan 2004 01:58:22 +0000 (01:58 +0000)
committerSteven Edwards <winehacker@gmail.com>
Fri, 9 Jan 2004 01:58:22 +0000 (01:58 +0000)
svn path=/trunk/; revision=7520

51 files changed:
reactos/lib/comdlg32/.cvsignore [new file with mode: 0644]
reactos/lib/comdlg32/Makefile.in [new file with mode: 0644]
reactos/lib/comdlg32/Makefile.ros-template [new file with mode: 0644]
reactos/lib/comdlg32/cdlg.h [new file with mode: 0644]
reactos/lib/comdlg32/cdlg16.h [new file with mode: 0644]
reactos/lib/comdlg32/cdlg32.c [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Ca.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Cn.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Cs.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Da.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_De.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_En.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Eo.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Es.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Fi.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Fr.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Hu.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_It.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Ja.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Ko.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Nl.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_No.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Pl.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Pt.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Ru.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Si.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Sk.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Sv.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Wa.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_Zh.rc [new file with mode: 0644]
reactos/lib/comdlg32/cdlg_xx.rc [new file with mode: 0644]
reactos/lib/comdlg32/colordlg.c [new file with mode: 0644]
reactos/lib/comdlg32/colordlg16.c [new file with mode: 0644]
reactos/lib/comdlg32/comdlg32.spec [new file with mode: 0644]
reactos/lib/comdlg32/commdlg.spec [new file with mode: 0644]
reactos/lib/comdlg32/filedlg.c [new file with mode: 0644]
reactos/lib/comdlg32/filedlg16.c [new file with mode: 0644]
reactos/lib/comdlg32/filedlgbrowser.c [new file with mode: 0644]
reactos/lib/comdlg32/filedlgbrowser.h [new file with mode: 0644]
reactos/lib/comdlg32/filetitle.c [new file with mode: 0644]
reactos/lib/comdlg32/finddlg.c [new file with mode: 0644]
reactos/lib/comdlg32/finddlg32.c [new file with mode: 0644]
reactos/lib/comdlg32/fontdlg.c [new file with mode: 0644]
reactos/lib/comdlg32/fontdlg16.c [new file with mode: 0644]
reactos/lib/comdlg32/generic.c [new file with mode: 0644]
reactos/lib/comdlg32/makefile [new file with mode: 0644]
reactos/lib/comdlg32/printdlg.c [new file with mode: 0644]
reactos/lib/comdlg32/printdlg.h [new file with mode: 0644]
reactos/lib/comdlg32/printdlg16.c [new file with mode: 0644]
reactos/lib/comdlg32/ros.h [new file with mode: 0644]
reactos/lib/comdlg32/rsrc.rc [new file with mode: 0644]

diff --git a/reactos/lib/comdlg32/.cvsignore b/reactos/lib/comdlg32/.cvsignore
new file mode 100644 (file)
index 0000000..9edd5cb
--- /dev/null
@@ -0,0 +1,20 @@
+*.coff
+*.dll
+*.d
+*.a
+*.o
+*.sym
+*.map
+*.tmp
+Makefile.ros
+idb_hist_large.bmp
+idb_hist_small.bmp
+idb_std_small.bmp
+idb_std_large.bmp
+idb_view_large.bmp
+idb_view_small.bmp
+idc_divider.cur
+idc_divideropen.cur
+idi_dragarrow.ico
+idt_check.bmp
+comctl32.spec.def
diff --git a/reactos/lib/comdlg32/Makefile.in b/reactos/lib/comdlg32/Makefile.in
new file mode 100644 (file)
index 0000000..f3d024d
--- /dev/null
@@ -0,0 +1,48 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = comdlg32.dll
+IMPORTS   = shell32 shlwapi comctl32 winspool user32 gdi32 kernel32 ntdll
+ALTNAMES  = commdlg.dll
+EXTRALIBS = $(LIBUUID)
+
+SPEC_SRCS16 = $(ALTNAMES:.dll=.spec)
+
+C_SRCS = \
+       cdlg32.c \
+       colordlg.c \
+       filedlg.c \
+       filedlgbrowser.c \
+       finddlg32.c \
+       filetitle.c \
+       fontdlg.c \
+       printdlg.c
+
+C_SRCS16 = \
+       colordlg16.c \
+       filedlg16.c \
+       finddlg.c \
+       fontdlg16.c \
+       generic.c \
+       printdlg16.c
+
+RC_SRCS = rsrc.rc
+RC_BINSRC = cdlg_xx.rc
+RC_BINARIES = \
+       800.bmp \
+       cdrom.ico \
+       floppy.ico \
+       folder.ico \
+       folder2.ico \
+       fontpics.bmp \
+       hdisk.ico \
+       network.ico \
+       pd32_collate.ico \
+       pd32_landscape.ico \
+       pd32_nocollate.ico \
+       pd32_portrait.ico 
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
diff --git a/reactos/lib/comdlg32/Makefile.ros-template b/reactos/lib/comdlg32/Makefile.ros-template
new file mode 100644 (file)
index 0000000..4b025ec
--- /dev/null
@@ -0,0 +1,20 @@
+
+TARGET_NAME = comdlg32
+
+TARGET_OBJECTS = @C_SRCS@
+
+TARGET_CFLAGS = -D__REACTOS__ @EXTRADEFS@
+
+TARGET_SDKLIBS = @IMPORTS@ libwine.a libwine_unicode.a wine_uuid.a ntdll.a winspool.a
+
+TARGET_BASE = 0x77a50000
+
+TARGET_RC_SRCS = @RC_SRCS@
+TARGET_RC_BINSRC = @RC_BINSRC@
+TARGET_RC_BINARIES = @RC_BINARIES@
+
+default: all
+
+DEP_OBJECTS = $(TARGET_OBJECTS)
+
+include $(TOOLS_PATH)/depend.mk
diff --git a/reactos/lib/comdlg32/cdlg.h b/reactos/lib/comdlg32/cdlg.h
new file mode 100644 (file)
index 0000000..5345266
--- /dev/null
@@ -0,0 +1,224 @@
+/*
+ *  Common Dialog Boxes interface (32 bit)
+ *
+ * Copyright 1998 Bertho A. Stultiens
+ *
+ * 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_DLL_CDLG_H
+#define _WINE_DLL_CDLG_H
+
+#define COM_NO_WINDOWS_H
+#include "dlgs.h"
+#include "wownt32.h"
+
+/* Common dialogs implementation globals */
+#define COMDLG32_Atom  ((ATOM)0xa000)  /* MS uses this one to identify props */
+
+extern HINSTANCE       COMDLG32_hInstance;
+
+void   COMDLG32_SetCommDlgExtendedError(DWORD err);
+LPVOID COMDLG32_AllocMem(int size);
+
+/* handle<-handle16 conversion */
+#define HINSTANCE_32(h16)           ((HINSTANCE)(ULONG_PTR)(h16))
+
+/* Find/Replace local definitions */
+
+#define FR_WINE_UNICODE                0x80000000
+#define FR_WINE_REPLACE                0x40000000
+
+typedef struct {
+       FINDREPLACEA    fr;     /* Internally used structure */
+        union {
+               FINDREPLACEA    *fra;   /* Reference to the user supplied structure */
+               FINDREPLACEW    *frw;
+        } user_fr;
+} COMDLG32_FR_Data;
+
+#define PD32_PRINT_TITLE        7000
+
+#define PD32_VALUE_UREADABLE                  1104
+#define PD32_INVALID_PAGE_RANGE               1105
+#define PD32_FROM_NOT_ABOVE_TO                1106
+#define PD32_MARGINS_OVERLAP                  1107
+#define PD32_NR_OF_COPIES_EMPTY               1108
+#define PD32_TOO_LARGE_COPIES                 1109
+#define PD32_PRINT_ERROR                      1110
+#define PD32_NO_DEFAULT_PRINTER               1111
+#define PD32_CANT_FIND_PRINTER                1112
+#define PD32_OUT_OF_MEMORY                    1113
+#define PD32_GENERIC_ERROR                    1114
+#define PD32_DRIVER_UNKNOWN                   1115
+
+#define PD32_PRINTER_STATUS_READY             1536
+#define PD32_PRINTER_STATUS_PAUSED            1537
+#define PD32_PRINTER_STATUS_ERROR             1538
+#define PD32_PRINTER_STATUS_PENDING_DELETION  1539
+#define PD32_PRINTER_STATUS_PAPER_JAM         1540
+#define PD32_PRINTER_STATUS_PAPER_OUT         1541
+#define PD32_PRINTER_STATUS_MANUAL_FEED       1542
+#define PD32_PRINTER_STATUS_PAPER_PROBLEM     1543
+#define PD32_PRINTER_STATUS_OFFLINE           1544
+#define PD32_PRINTER_STATUS_IO_ACTIVE         1545
+#define PD32_PRINTER_STATUS_BUSY              1546
+#define PD32_PRINTER_STATUS_PRINTING          1547
+#define PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   1548
+#define PD32_PRINTER_STATUS_NOT_AVAILABLE     1549
+#define PD32_PRINTER_STATUS_WAITING           1550
+#define PD32_PRINTER_STATUS_PROCESSING        1551
+#define PD32_PRINTER_STATUS_INITIALIZING      1552
+#define PD32_PRINTER_STATUS_WARMING_UP        1553
+#define PD32_PRINTER_STATUS_TONER_LOW         1554
+#define PD32_PRINTER_STATUS_NO_TONER          1555
+#define PD32_PRINTER_STATUS_PAGE_PUNT         1556
+#define PD32_PRINTER_STATUS_USER_INTERVENTION 1557
+#define PD32_PRINTER_STATUS_OUT_OF_MEMORY     1558
+#define PD32_PRINTER_STATUS_DOOR_OPEN         1559
+#define PD32_PRINTER_STATUS_SERVER_UNKNOWN    1560
+#define PD32_PRINTER_STATUS_POWER_SAVE        1561
+
+#define PD32_DEFAULT_PRINTER                  1582
+#define PD32_NR_OF_DOCUMENTS_IN_QUEUE         1583
+#define PD32_PRINT_ALL_X_PAGES                1584
+#define PD32_MARGINS_IN_INCHES                1585
+#define PD32_MARGINS_IN_MILIMETERS            1586
+#define PD32_MILIMETERS                       1587
+
+/* Charset names string IDs */
+
+#define IDS_CHARSET_ANSI        200
+#define IDS_CHARSET_SYMBOL      201
+#define IDS_CHARSET_JIS         202
+#define IDS_CHARSET_HANGUL      203
+#define IDS_CHARSET_GB2312      204
+#define IDS_CHARSET_BIG5        205
+#define IDS_CHARSET_GREEK       206
+#define IDS_CHARSET_TURKISH     207
+#define IDS_CHARSET_HEBREW      208
+#define IDS_CHARSET_ARABIC      209
+#define IDS_CHARSET_BALTIC      210
+#define IDS_CHARSET_VIETNAMESE  211
+#define IDS_CHARSET_RUSSIAN     212
+#define IDS_CHARSET_EE          213
+#define IDS_CHARSET_THAI        214
+#define IDS_CHARSET_JOHAB       215
+#define IDS_CHARSET_MAC         216
+#define IDS_CHARSET_OEM         217
+#define IDS_CHARSET_VISCII      218
+#define IDS_CHARSET_TCVN        219
+#define IDS_CHARSET_KOI8        220
+#define IDS_CHARSET_ISO3        221
+#define IDS_CHARSET_ISO4        222
+#define IDS_CHARSET_ISO10       223
+#define IDS_CHARSET_CELTIC      224
+
+/* Color names string IDs */
+
+#define IDS_COLOR_BLACK                 1040
+#define IDS_COLOR_MAROON                1041
+#define IDS_COLOR_GREEN                 1042
+#define IDS_COLOR_OLIVE                 1043
+#define IDS_COLOR_NAVY                  1044
+#define IDS_COLOR_PURPLE                1045
+#define IDS_COLOR_TEAL                  1046
+#define IDS_COLOR_GRAY                  1047
+#define IDS_COLOR_SILVER                1048
+#define IDS_COLOR_RED                   1049
+#define IDS_COLOR_LIME                  1050
+#define IDS_COLOR_YELLOW                1051
+#define IDS_COLOR_BLUE                  1052
+#define IDS_COLOR_FUCHSIA               1053
+#define IDS_COLOR_AQUA                  1054
+#define IDS_COLOR_WHITE                 1055
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winnls.h"
+#include "commctrl.h"
+#include "shlobj.h"
+#include "shellapi.h"
+
+/* ITEMIDLIST */
+
+extern LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST);
+extern LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILCombine)(LPCITEMIDLIST,LPCITEMIDLIST);
+extern LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILGetNext)(LPITEMIDLIST);
+extern BOOL (WINAPI *COMDLG32_PIDL_ILRemoveLastID)(LPCITEMIDLIST);
+extern BOOL (WINAPI *COMDLG32_PIDL_ILIsEqual)(LPCITEMIDLIST, LPCITEMIDLIST);
+
+/* SHELL */
+extern LPVOID (WINAPI *COMDLG32_SHAlloc)(DWORD);
+extern DWORD (WINAPI *COMDLG32_SHFree)(LPVOID);
+extern BOOL (WINAPI *COMDLG32_SHGetFolderPathA)(HWND,int,HANDLE,DWORD,LPSTR);
+extern BOOL (WINAPI *COMDLG32_SHGetFolderPathW)(HWND,int,HANDLE,DWORD,LPWSTR);
+
+extern BOOL  WINAPI GetFileDialog95A(LPOPENFILENAMEA ofn,UINT iDlgType);
+extern BOOL  WINAPI GetFileDialog95W(LPOPENFILENAMEW ofn,UINT iDlgType);
+
+/*
+ * Internal Functions
+ * Do NOT Export to other programs and dlls
+ */
+
+BOOL CC_HookCallChk( LPCHOOSECOLORW lpcc );
+int CC_MouseCheckResultWindow( HWND hDlg, LPARAM lParam );
+LRESULT CC_WMLButtonDown( HWND hDlg, WPARAM wParam, LPARAM lParam );
+LRESULT CC_WMLButtonUp( HWND hDlg, WPARAM wParam, LPARAM lParam );
+LRESULT CC_WMCommand( HWND hDlg, WPARAM wParam, LPARAM lParam, WORD 
+                                               notifyCode, HWND hwndCtl );
+LRESULT CC_WMMouseMove( HWND hDlg, LPARAM lParam );
+LRESULT CC_WMPaint( HWND hDlg, WPARAM wParam, LPARAM lParam );
+void CC_SwitchToFullSize( HWND hDlg, COLORREF result, LPRECT lprect );
+void CC_PaintSelectedColor( HWND hDlg, COLORREF cr );
+int CC_RGBtoHSL(char c, int r, int g, int b);
+void CC_PaintCross( HWND hDlg, int x, int y);
+void CC_PaintTriangle( HWND hDlg, int y);
+int CC_CheckDigitsInEdit( HWND hwnd, int maxval );
+void CC_EditSetHSL( HWND hDlg, int h, int s, int l );
+int CC_HSLtoRGB(char c, int hue, int sat, int lum);
+void CC_EditSetRGB( HWND hDlg, COLORREF cr );
+void CC_PaintUserColorArray( HWND hDlg, int rows, int cols, COLORREF* lpcr );
+
+typedef struct
+{
+  HWND hWnd1;
+  HWND hWnd2;
+  LPCHOOSEFONTA lpcf32a;
+  int  added;
+} CFn_ENUMSTRUCT, *LPCFn_ENUMSTRUCT;
+
+INT AddFontFamily(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM,
+                  UINT nFontType, LPCHOOSEFONTA lpcf, HWND hwnd,
+                  LPCFn_ENUMSTRUCT e);
+INT AddFontStyle(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *metrics,
+                 UINT nFontType, LPCHOOSEFONTA lpcf, HWND hcmb2, HWND hcmb3,
+                 HWND hDlg, BOOL iswin16);
+void _dump_cf_flags(DWORD cflags);
+
+LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
+                         LPCHOOSEFONTA lpcf);
+LRESULT CFn_WMMeasureItem(HWND hDlg, WPARAM wParam, LPARAM lParam);
+LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam);
+LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam,
+                      LPCHOOSEFONTA lpcf);
+LRESULT CFn_WMPaint(HWND hDlg, WPARAM wParam, LPARAM lParam,
+                      LPCHOOSEFONTA lpcf);
+LRESULT CFn_WMDestroy(HWND hwnd, WPARAM wParam, LPARAM lParam);
+
+#endif /* _WINE_DLL_CDLG_H */
diff --git a/reactos/lib/comdlg32/cdlg16.h b/reactos/lib/comdlg32/cdlg16.h
new file mode 100644 (file)
index 0000000..76b05f5
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Common Dialog Boxes interface (16 bit implementation)
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ * Copyright 1998 Bertho A. Stultiens
+ *
+ * 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_DLL_CDLG16_H
+#define _WINE_DLL_CDLG16_H
+
+#define COM_NO_WINDOWS_H
+#include "dlgs.h"
+#include "wine/windef16.h"
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
+#include "wownt32.h"
+
+/* 16 bit api */
+
+#include "pshpack1.h"
+
+typedef UINT16 (CALLBACK *LPOFNHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
+
+typedef struct {
+       DWORD           lStructSize;
+       HWND16          hwndOwner;
+       HINSTANCE16     hInstance;
+       SEGPTR          lpstrFilter;
+       SEGPTR          lpstrCustomFilter;
+       DWORD           nMaxCustFilter;
+       DWORD           nFilterIndex;
+       SEGPTR          lpstrFile;
+       DWORD           nMaxFile;
+       SEGPTR          lpstrFileTitle;
+       DWORD           nMaxFileTitle;
+       SEGPTR          lpstrInitialDir;
+       SEGPTR          lpstrTitle;
+       DWORD           Flags;
+       UINT16          nFileOffset;
+       UINT16          nFileExtension;
+       SEGPTR          lpstrDefExt;
+       LPARAM          lCustData;
+       LPOFNHOOKPROC16 lpfnHook;
+       SEGPTR          lpTemplateName;
+}   OPENFILENAME16,*LPOPENFILENAME16;
+
+typedef UINT16 (CALLBACK *LPCCHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);
+
+typedef struct {
+       DWORD           lStructSize;
+       HWND16          hwndOwner;
+       HWND16          hInstance;
+       COLORREF        rgbResult;
+       SEGPTR          lpCustColors;
+       DWORD           Flags;
+       LPARAM          lCustData;
+        LPCCHOOKPROC16  lpfnHook;
+       SEGPTR          lpTemplateName;
+} CHOOSECOLOR16;
+typedef CHOOSECOLOR16 *LPCHOOSECOLOR16;
+
+typedef UINT16 (CALLBACK *LPFRHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
+typedef struct {
+       DWORD           lStructSize;            /* size of this struct 0x20 */
+       HWND16          hwndOwner;              /* handle to owner's window */
+       HINSTANCE16     hInstance;              /* instance handle of.EXE that  */
+                                               /* contains cust. dlg. template */
+       DWORD           Flags;                  /* one or more of the FR_?? */
+       SEGPTR          lpstrFindWhat;          /* ptr. to search string    */
+       SEGPTR          lpstrReplaceWith;       /* ptr. to replace string   */
+       UINT16          wFindWhatLen;           /* size of find buffer      */
+       UINT16          wReplaceWithLen;        /* size of replace buffer   */
+       LPARAM          lCustData;              /* data passed to hook fn.  */
+        LPFRHOOKPROC16  lpfnHook;
+       SEGPTR          lpTemplateName;         /* custom template name     */
+} FINDREPLACE16, *LPFINDREPLACE16;
+
+typedef UINT16 (CALLBACK *LPCFHOOKPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
+typedef struct
+{
+       DWORD                   lStructSize;
+       HWND16                  hwndOwner;          /* caller's window handle   */
+       HDC16                   hDC;                /* printer DC/IC or NULL    */
+       SEGPTR                  lpLogFont;          /* ptr. to a LOGFONT struct */
+       short                   iPointSize;         /* 10 * size in points of selected font */
+       DWORD                   Flags;              /* enum. type flags         */
+       COLORREF                rgbColors;          /* returned text color      */
+       LPARAM                  lCustData;          /* data passed to hook fn.  */
+       LPCFHOOKPROC16          lpfnHook;
+       SEGPTR                  lpTemplateName;     /* custom template name     */
+       HINSTANCE16             hInstance;          /* instance handle of.EXE that   */
+                                       /* contains cust. dlg. template  */
+       SEGPTR                  lpszStyle;          /* return the style field here   */
+                                       /* must be LF_FACESIZE or bigger */
+       UINT16                  nFontType;          /* same value reported to the    */
+                                                   /* EnumFonts callback with the   */
+                                                   /* extra FONTTYPE_ bits added    */
+       short                   nSizeMin;           /* minimum pt size allowed & */
+       short                   nSizeMax;           /* max pt size allowed if    */
+                                       /* CF_LIMITSIZE is used      */
+} CHOOSEFONT16, *LPCHOOSEFONT16;
+
+
+typedef UINT16 (CALLBACK *LPPRINTHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);
+typedef UINT16 (CALLBACK *LPSETUPHOOKPROC16) (HWND16, UINT16, WPARAM16, LPARAM);
+typedef struct
+{
+    DWORD            lStructSize;
+    HWND16           hwndOwner;
+    HGLOBAL16        hDevMode;
+    HGLOBAL16        hDevNames;
+    HDC16            hDC;
+    DWORD            Flags;
+    WORD             nFromPage;
+    WORD             nToPage;
+    WORD             nMinPage;
+    WORD             nMaxPage;
+    WORD             nCopies;
+    HINSTANCE16      hInstance;
+    LPARAM           lCustData;
+    LPPRINTHOOKPROC16 lpfnPrintHook;
+    LPSETUPHOOKPROC16 lpfnSetupHook;
+    SEGPTR           lpPrintTemplateName;
+    SEGPTR           lpSetupTemplateName;
+    HGLOBAL16        hPrintTemplate;
+    HGLOBAL16        hSetupTemplate;
+} PRINTDLG16, *LPPRINTDLG16;
+
+BOOL16  WINAPI ChooseColor16(LPCHOOSECOLOR16 lpChCol);
+HWND16  WINAPI FindText16( SEGPTR find);
+INT16   WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf);
+BOOL16  WINAPI GetOpenFileName16(SEGPTR ofn);
+BOOL16  WINAPI GetSaveFileName16(SEGPTR ofn);
+BOOL16  WINAPI PrintDlg16( LPPRINTDLG16 print);
+HWND16  WINAPI ReplaceText16( SEGPTR find);
+BOOL16  WINAPI ChooseFont16(LPCHOOSEFONT16);
+
+#include "poppack.h"
+
+#endif /* _WINE_DLL_CDLG16_H */
diff --git a/reactos/lib/comdlg32/cdlg32.c b/reactos/lib/comdlg32/cdlg32.c
new file mode 100644 (file)
index 0000000..fc94238
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ *  Common Dialog Boxes interface (32 bit)
+ *  Find/Replace
+ *
+ * Copyright 1999 Bertho A. Stultiens
+ *
+ * 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 <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "cderr.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+
+
+HINSTANCE      COMDLG32_hInstance = 0;
+
+static DWORD COMDLG32_TlsIndex = TLS_OUT_OF_INDEXES;
+
+HINSTANCE      SHELL32_hInstance = 0;
+HINSTANCE      SHFOLDER_hInstance = 0;
+
+/* ITEMIDLIST */
+LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILClone) (LPCITEMIDLIST);
+LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILCombine)(LPCITEMIDLIST,LPCITEMIDLIST);
+LPITEMIDLIST (WINAPI *COMDLG32_PIDL_ILGetNext)(LPITEMIDLIST);
+BOOL (WINAPI *COMDLG32_PIDL_ILRemoveLastID)(LPCITEMIDLIST);
+BOOL (WINAPI *COMDLG32_PIDL_ILIsEqual)(LPCITEMIDLIST, LPCITEMIDLIST);
+
+/* SHELL */
+LPVOID (WINAPI *COMDLG32_SHAlloc)(DWORD);
+DWORD (WINAPI *COMDLG32_SHFree)(LPVOID);
+BOOL (WINAPI *COMDLG32_SHGetFolderPathA)(HWND,int,HANDLE,DWORD,LPSTR);
+BOOL (WINAPI *COMDLG32_SHGetFolderPathW)(HWND,int,HANDLE,DWORD,LPWSTR);
+
+/***********************************************************************
+ *     DllMain  (COMDLG32.init)
+ *
+ *    Initialization code for the COMDLG32 DLL
+ *
+ * RETURNS:
+ *     FALSE if sibling could not be loaded or instantiated twice, TRUE
+ *     otherwise.
+ */
+static char * GPA_string = "Failed to get entry point %s for hinst = 0x%08x\n";
+#define GPA(dest, hinst, name) \
+       if(!(dest = (void*)GetProcAddress(hinst,name)))\
+       { \
+         ERR(GPA_string, debugstr_a(name), hinst); \
+         return FALSE; \
+       }
+
+BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved)
+{
+       TRACE("(%p, %08lx, %p)\n", hInstance, Reason, Reserved);
+
+       switch(Reason)
+       {
+       case DLL_PROCESS_ATTACH:
+               COMDLG32_hInstance = hInstance;
+               DisableThreadLibraryCalls(hInstance);
+
+               SHELL32_hInstance = GetModuleHandleA("SHELL32.DLL");
+
+               if (!SHELL32_hInstance)
+               {
+                       ERR("loading of shell32 failed\n");
+                       return FALSE;
+               }
+
+               /* ITEMIDLIST */
+               GPA(COMDLG32_PIDL_ILIsEqual, SHELL32_hInstance, (LPCSTR)21L);
+               GPA(COMDLG32_PIDL_ILCombine, SHELL32_hInstance, (LPCSTR)25L);
+               GPA(COMDLG32_PIDL_ILGetNext, SHELL32_hInstance, (LPCSTR)153L);
+               GPA(COMDLG32_PIDL_ILClone, SHELL32_hInstance, (LPCSTR)18L);
+               GPA(COMDLG32_PIDL_ILRemoveLastID, SHELL32_hInstance, (LPCSTR)17L);
+
+               /* SHELL */
+
+               GPA(COMDLG32_SHAlloc, SHELL32_hInstance, (LPCSTR)196L);
+               GPA(COMDLG32_SHFree, SHELL32_hInstance, (LPCSTR)195L);
+               /* for the first versions of shell32 SHGetFolderPathA is in SHFOLDER.DLL */
+               COMDLG32_SHGetFolderPathA = (void*)GetProcAddress(SHELL32_hInstance,"SHGetFolderPathA");
+               if (!COMDLG32_SHGetFolderPathA)
+               {
+                 SHFOLDER_hInstance = LoadLibraryA("SHFOLDER.DLL");
+                 GPA(COMDLG32_SHGetFolderPathA, SHFOLDER_hInstance,"SHGetFolderPathA");
+               }
+
+               /* for the first versions of shell32 SHGetFolderPathW is in SHFOLDER.DLL */
+               COMDLG32_SHGetFolderPathW = (void*)GetProcAddress(SHELL32_hInstance,"SHGetFolderPathW");
+               if (!COMDLG32_SHGetFolderPathW)
+               {
+                 SHFOLDER_hInstance = LoadLibraryA("SHFOLDER.DLL");
+                 GPA(COMDLG32_SHGetFolderPathW, SHFOLDER_hInstance,"SHGetFolderPathW");
+               }
+
+               break;
+
+       case DLL_PROCESS_DETACH:
+            if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES) TlsFree(COMDLG32_TlsIndex);
+            if(SHFOLDER_hInstance) FreeLibrary(SHFOLDER_hInstance);
+            break;
+       }
+       return TRUE;
+}
+#undef GPA
+
+/***********************************************************************
+ *     COMDLG32_AllocMem                       (internal)
+ * Get memory for internal datastructure plus stringspace etc.
+ *     RETURNS
+ *             Pointer to a heap block: Succes
+ *             NULL: Failure
+ */
+LPVOID COMDLG32_AllocMem(
+       int size        /* [in] Block size to allocate */
+) {
+        LPVOID ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
+        if(!ptr)
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE);
+                return NULL;
+        }
+        return ptr;
+}
+
+
+/***********************************************************************
+ *     COMDLG32_SetCommDlgExtendedError        (internal)
+ *
+ * Used to set the thread's local error value if a comdlg32 function fails.
+ */
+void COMDLG32_SetCommDlgExtendedError(DWORD err)
+{
+       TRACE("(%08lx)\n", err);
+        if (COMDLG32_TlsIndex == TLS_OUT_OF_INDEXES)
+         COMDLG32_TlsIndex = TlsAlloc();
+       if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES)
+         TlsSetValue(COMDLG32_TlsIndex, (void *)err);
+       else
+         FIXME("No Tls Space\n");
+}
+
+
+/***********************************************************************
+ *     CommDlgExtendedError                    (COMMDLG.26)
+ *     CommDlgExtendedError                    (COMDLG32.@)
+ *
+ * Get the thread's local error value if a comdlg32 function fails.
+ *     RETURNS
+ *             Current error value which might not be valid
+ *             if a previous call succeeded.
+ */
+DWORD WINAPI CommDlgExtendedError(void)
+{
+        if (COMDLG32_TlsIndex != TLS_OUT_OF_INDEXES)
+         return (DWORD)TlsGetValue(COMDLG32_TlsIndex);
+       else
+         return 0; /* we never set an error, so there isn't one */
+}
diff --git a/reactos/lib/comdlg32/cdlg_Ca.rc b/reactos/lib/comdlg32/cdlg_Ca.rc
new file mode 100644 (file)
index 0000000..4f4da80
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * Copyright 1998 Marc Huguet Puig
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Obrir"
+FONT 8, "Helv"
+{
+ LTEXT "&Nom:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Directoris:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Tipus de fitxers:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Unitats:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "D'acord", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Anul·lació", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&juda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Només &lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Anomenar i desar..."
+FONT 8, "Helv"
+{
+ LTEXT "&Nom:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Directoris:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Desar fitxer en f&ormat:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Unitats:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "D'acord", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Anul·lació", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&juda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Fer-ne còpia", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Impressió"
+FONT 8, "Helv"
+{
+ LTEXT "Impressora:", 1088, 6, 6, 40, 9
+ LTEXT "Impressió del document", 1089, 60, 6, 150, 9
+ GROUPBOX "", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Sencer", 1056, 16, 45, 60, 12
+ RADIOBUTTON "&Part seleccionada", 1057, 16, 60, 60, 12
+ RADIOBUTTON "Pà&gines", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "D'acord", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Anul·lació", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Configuració", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "P&rimera:", 1090, 60, 80, 30, 9
+ LTEXT "Ú&ltima:", 1091, 120, 80, 30, 9
+ LTEXT "&Qualitat:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Imprimir en un &fitxer", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "S&eparar les còpies", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Configuració de la impressió"
+FONT 8, "Helv"
+{
+ GROUPBOX "Impressora:", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "Impressora per &defecte", 1056, 16, 20, 80, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Impressora &especificada:", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "D'acord", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Anul·lació", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Opcions", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientació", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Vertical", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Horitzontal", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Paper", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Mida", 1089, 130, 95, 30, 9
+ LTEXT "A&limentació:", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tipus de lletra"
+FONT 8, "Helv"
+{
+    LTEXT           "&Tipus de lletra:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Estil del tipus de lletra:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Grandària:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "D'acord",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Anul·lació",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "A&plicar", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "A&juda" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "Efectes",1072,6,72,84,34,WS_GROUP
+    CHECKBOX        "&Barrar-lo", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX        "&Subratllar-lo", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Color:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                    CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Exemple",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Color"
+FONT 8, "Helv"
+{
+ LTEXT "Colors &básics:", 1088, 4, 4, 140, 10
+ LTEXT "Colors person&alitzats:", 1089, 4, 106, 140, 10
+ LTEXT "Color Sòl&id", 1090, 150, 151, 48, 10
+ LTEXT   "&Roig:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Verd:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "Bla&u:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Tint:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat.:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Llum.:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "D'acord",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Anul·lació", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&juda", 1038,100,166, 44, 14
+ PUSHBUTTON "Afegir als &colors personalitzats", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Definir colors personalitzats >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i in "sol&id" */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Cerca"
+FONT 8, "Helv"
+{
+ LTEXT "&Cercar:",  -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "C&ercar mots sencers", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Distingir majúscules de minúscules", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Direcció", 1072, 107, 26, 68, 28
+ CONTROL "&Amunt", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "A&vall", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+ DEFPUSHBUTTON "&Continuació", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Anul·lació", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&juda", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Substitució"
+FONT 8, "Helv"
+{
+ LTEXT "&Cercar:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "&Substituir per:", 1090, -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Cercar &mots sencers", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Distingir majúscules de minúscules", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "C&ontinucació", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "S&ubstitució", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Substitució &automàtica", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Tancar", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&juda", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_Cn.rc b/reactos/lib/comdlg32/cdlg_Cn.rc
new file mode 100644 (file)
index 0000000..fc0b783
--- /dev/null
@@ -0,0 +1,444 @@
+/*
+ * Copyright 2002 Tisheng Chen
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "´ò¿ª"
+FONT 8, "Helv"
+{
+ LTEXT "ÎļþÃû(&N):", 1090, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Îļþ¼Ð(&D):", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "ÎļþÀàÐÍ(&T):", 1089, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Çý¶¯Æ÷(&v):", 1091, 110, 104, 92, 9
+ COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "´ò¿ª", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "°ïÖú(&H)", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Ö»¶Á(&R)", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Áí´æΪ ..."
+FONT 8, "Helv"
+{
+ LTEXT "ÎļþÃû(&N):", 1090, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Ŀ¼(&D):", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "ÎļþÀàÐÍ(&T):", 1089, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Çý¶¯Æ÷(&v):", 1091, 110, 104, 92, 9
+ COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "±£´æ", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "°ïÖú(&H)", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Ö»¶Á(&R)", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "´òÓ¡"
+FONT 8, "Helv"
+{
+ LTEXT "´òÓ¡»ú:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "´òÓ¡·¶Î§", grp1, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "È«²¿(&A)", rad1, 16, 45, 60, 12
+ RADIOBUTTON "Ñ¡ÔñµÄ·¶Î§(&e)", rad2, 16, 60, 60, 12
+ RADIOBUTTON "Ò³Êý(&G)", rad3, 16, 75, 60, 12
+ DEFPUSHBUTTON "È·¶¨", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÉèÖÃ(&S)", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "´Ó(&F):", 1090, 60, 80, 30, 9
+ LTEXT "µ½(&T):", 1091, 120, 80, 30, 9
+ LTEXT "´òÓ¡ÖÊÁ¿(&Q):", 1092, 6, 100, 76, 9
+ COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "´òÓ¡µ½Îļþ(&l):", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Condensed", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "´òÓ¡ÉèÖÃ"
+FONT 8, "Helv"
+{
+ GROUPBOX "´òÓ¡»ú", grp1, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "ĬÈÏ´òÓ¡»ú(&D)", rad1, 16, 20, 80, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Ö¸¶¨µÄ´òÓ¡»ú(&P)", rad2, 16, 50, 80, 12
+ COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "È·¶¨", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÉèÖÃ(&S)", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "·½Ïò(&O)", grp2, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "×ÝÏò(&P)", rad3, 50, 100, 40, 12
+ RADIOBUTTON "ºáÏò(&L)", rad4, 50, 115, 40, 12
+ ICON "LANDSCAP", stc10, 10, 95, 32, 32
+ ICON "PORTRAIT", stc11, 10, 95, 32, 32
+ GROUPBOX "Ö½ÕÅ", grp3, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "Ö½ÕÅ´óС(&Z)", 1089, 130, 95, 30, 9
+ LTEXT "Ö½ÕÅÀ´Ô´(&S)", 1090, 130, 110, 30, 9
+ COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "×ÖÌå"
+FONT 8, "Helv"
+{
+    LTEXT           "×ÖÌå(&F):",1088 ,6,3,40,9
+    COMBOBOX        cmb1, 6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "×ÖÌåÑùʽ(&y):",1089 ,108,3,44,9
+    COMBOBOX        cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "´óС(&S):",1090,179,3,30,9
+    COMBOBOX        cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "È·¶¨",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "Ó¦ÓÃ(&A)", psh3,218,40,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "°ïÖú(&H)" , pshHelp,218,57,40,14,WS_GROUP | WS_TABSTOP
+    GROUPBOX        "Ч¹û",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "ɾ³ýÏß(&k)", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "Ï»®Ïß(&U)", chx2, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "ÑÕÉ«(&C):", 1091 ,6,110,30,9
+    COMBOBOX        cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "ʾÀý",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "ÖÐÎÄ×ÖÌåAaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ÑÕÉ«"
+FONT 8, "Helv"
+{
+ LTEXT "»ù±¾ÑÕÉ«(&B):",   1088, 4,    4,  140, 10
+ LTEXT "×Ô¶¨ÖÆÑÕÉ«(&C):",  1089, 4,   106, 140, 10
+ LTEXT "ÑÕÉ«|´¿É«(&O)",  1090, 150, 151,  48, 10
+ LTEXT   "ºì(&R):", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "ÂÌ(&G):",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "À¶(&B):",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "É«µ÷(&E):" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "±¥ºÍ¶È(&S):" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "ÁÁ¶È(&L)" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "È·¶¨",  1,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "°ïÖú", pshHelp,100,166, 44, 14
+ PUSHBUTTON "Ìí¼Óµ½×Ô¶¨ÖÆÑÕÉ«(&A)",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "¹æ¶¨×Ô¶¨ÒåÑÕÉ«(&D)>>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "²éÕÒ"
+FONT 8, "Helv"
+{
+ LTEXT "²éÕÒ(&n):", -1, 4, 8, 42, 8
+ EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "È«×ÖÆ¥Åä(&W)", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Çø·Ö´óСд(&C)", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "·½Ïò", grp1, 107, 26, 68, 28
+ CONTROL "ÏòÉÏ(&U)", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "ÏòÏÂ(&D)", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "²éÕÒÏÂÒ»¸ö(&F)", IDOK, 182,  5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "È¡Ïû", IDCANCEL    , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "°ïÖú(&H)", pshHelp         , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ìæ»»"
+FONT 8, "Helv"
+{
+ LTEXT "²éÕÒÄÚÈÝ(&n):", -1, 4, 9, 48, 8
+ EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Ì滻Ϊ(&p):", -1, 4, 26, 48, 8
+ EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "È«×ÖÆ¥Åä(&W)", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Çø·Ö´óСд(&C)", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "²éÕÒÏÂÒ»¸ö(&F)", IDOK, 174,  4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "Ìæ»»(&R)", psh1    , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È«²¿Ìæ»»(&A)", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", IDCANCEL    , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "°ïÖú(&H)", pshHelp         , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "´òÓ¡"
+FONT 8, "Helv"
+{
+    DEFPUSHBUTTON   "È·¶¨",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "È¡Ïû", IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "°ïÖú(&H)",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "´òÓ¡»ú",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "´òÓ¡µ½Îļþ(&l)", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "ÊôÐÔ(&P)",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "Ãû³Æ(&N):",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "״̬:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "ÐͺÅ:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "λÖÃ:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "±¸×¢:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "·ÝÊý",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "·ÝÊý(&C):",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "C&ollate",       chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "´òÓ¡·¶Î§",    grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "È«²¿(&A)",           rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "Ò³Êý(&G)",         rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "Ñ¡ÔñµÄ·¶Î§(&S)",     rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "´Ó(&f):",         stc2,  52,124,  20,8
+    RTEXT           "µ½(&t):",           stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "´òÓ¡ÉèÖÃ"
+FONT 8, "Helv"
+BEGIN
+    DEFPUSHBUTTON   "È·¶¨",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Network...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "´òÓ¡»ú",        grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "ÊôÐÔ(&P)",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "Ãû³Æ(&N):",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "״̬:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "ÐͺÅ:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "λÖÃ:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "±¸×¢:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Ö½ÕÅ",          grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "Ö½ÕÅ´óС(&z):",         stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Ö½ÕÅÀ´Ô´(&S):",       stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "·½Ïò",    grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "×ÝÏò(&P)",      rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "ºáÏò(&L)",     rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Ò³ÃæÉèÖÃ"
+FONT 8, "Helv"
+BEGIN
+  CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80,  SS_WHITERECT
+  CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT
+  CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4,  SS_GRAYRECT
+  GROUPBOX "Ö½ÕÅ", grp2, 8, 96, 224, 56, BS_GROUPBOX
+  LTEXT "´óС(&S):", stc2, 16, 112, 36, 8
+  COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  LTEXT "À´Ô´(&S):", stc3, 16, 132, 36, 8
+  COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  GROUPBOX "·½Ïò(&O)", grp1, 8, 156, 64, 56, BS_GROUPBOX
+  AUTORADIOBUTTON "×ÝÏò(&P)", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON
+  AUTORADIOBUTTON "ºáÏò(&L)", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON
+  GROUPBOX "±ß¾à", grp4, 80, 156, 152, 56, BS_GROUPBOX
+  LTEXT "×ó(&e):", stc15, 88, 172, 21, 8
+  EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "ÓÒ(&R):", stc16, 159, 172, 27, 8
+  EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "ÉÏ(&o):", stc17, 88, 192, 21, 8
+  EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "ÏÂ(&B):", stc18, 159, 192, 23, 8
+  EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  DEFPUSHBUTTON "È·¶¨", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON
+  PUSHBUTTON "È¡Ïû", IDCANCEL, 126, 220, 50, 14
+  PUSHBUTTON "´òÓ¡»ú(&P)...", psh3, 184, 220, 48, 14
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "´ò¿ª"
+FONT 8, "Helv"
+{
+    LTEXT      "ËÑÑ°(&I)",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "ÎļþÃû(&N):",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "ÎļþÀàÐÍ(&t)",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "Ö»¶Á(&r)",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON      "´ò¿ª(&O)",              IDOK,222,110,50,14
+    PUSHBUTTON         "È¡Ïû",          IDCANCEL,222,128,50,14
+    PUSHBUTTON         "°ïÖú(&H)",              pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "&About FolderPicker Test"
+    IDS_DOCUMENTFOLDERS     "ÎĵµÄ¿Â¼"
+    IDS_PERSONAL            "ÎÒµÄÎĵµ"
+    IDS_FAVORITES           "ÊղؼÐ"
+    IDS_PATH                "ϵͳ·¾¶"
+    IDS_DESKTOP             "×ÀÃæ"
+    IDS_FONTS               "×ÖÌå"
+    IDS_MYCOMPUTER          "ÎҵĵçÄÔ"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "ϵͳÎļþ¼Ð"
+    IDS_LOCALHARDRIVES      "±¾µØÓ²ÅÌÇý¶¯Æ÷"
+    IDS_FILENOTFOUND        "ÕÒ²»µ½Îļþ"
+    IDS_VERIFYFILE          "Çë¼ìÑéÊÇ·ñ¸øÓèÕýÈ·µÄÎļþÃû³Æ¡£"
+    IDS_CREATEFILE          "ÕÒ²»µ½Îļþ\nÊÇ·ñ´´½¨ÐÂÎļþ?"
+    IDS_OVERWRITEFILE       "ÎļþÒѾ­´æÔÚ¡£\nÒªÌæ»»Âð?"
+    IDS_INVALID_FILENAME_TITLE "ÎļþÃûÖдæÔÚÎÞЧµÄ×Ö·û"
+    IDS_INVALID_FILENAME    "ÎļþÃûÖв»ÄÜ°üº¬ÈκÎÒ»ÏÂ×Ö·û:: \n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Îļþ¼Ð²»´æÔÚ"
+    IDS_FILENOTEXISTING     "Îļþ²»´æÔÚ"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "ÏòÉÏÒÆÒ»²ã"
+    IDS_NEWFOLDER        "н¨Îļþ¼Ð"
+    IDS_LISTVIEW         "Áбí"
+    IDS_REPORTVIEW       "Ïêϸ×ÊÁÏ"
+    IDS_TODESKTOP        "²é¿´×ÀÃæ"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE       "´òÓ¡"
+
+    PD32_VALUE_UREADABLE                  "Unreadable Entry"
+    PD32_INVALID_PAGE_RANGE "This value does not lie within the page range.\n\
+Please enter a value between %d and %d."
+    PD32_FROM_NOT_ABOVE_TO                "The 'from' entry cannot exceed the \
+'to' entry."
+    PD32_MARGINS_OVERLAP                  "Margins overlap or fall outside \
+Paper boundaries.\nPlease reenter margins."
+    PD32_NR_OF_COPIES_EMPTY               "The number of 'Number of copies' \
+value cannot be empty."
+    PD32_TOO_LARGE_COPIES                 "This large nmuber of copies is not \
+supported by your printer.\nPlease enter a value between 1 and %d."
+    PD32_PRINT_ERROR                      "A printer error occurred."
+    PD32_NO_DEFAULT_PRINTER               "There is not default printer."
+    PD32_CANT_FIND_PRINTER                "Cannot find the printer."
+    PD32_OUT_OF_MEMORY                    "Out of memory."
+    PD32_GENERIC_ERROR                    "Some error occurred."
+    PD32_DRIVER_UNKNOWN                   "Unknown printer driver."
+
+    PD32_DEFAULT_PRINTER                  "Default Printer; "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE         "There are %d documents in the queue"
+    PD32_PRINT_ALL_X_PAGES                "&All %d pages"
+    PD32_MARGINS_IN_INCHES                "Margins [inches]"
+    PD32_MARGINS_IN_MILIMETERS            "Margins [mm]"
+    PD32_MILIMETERS                       "mm"
+
+    PD32_PRINTER_STATUS_READY             "Ready"
+    PD32_PRINTER_STATUS_PAUSED            "Paused; "
+    PD32_PRINTER_STATUS_ERROR             "Error; "
+    PD32_PRINTER_STATUS_PENDING_DELETION  "Pending deletion; "
+    PD32_PRINTER_STATUS_PAPER_JAM         "Paper jam; "
+    PD32_PRINTER_STATUS_PAPER_OUT         "Out of paper; "
+    PD32_PRINTER_STATUS_MANUAL_FEED       "Feed paper manual; "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM     "Paper problem; "
+    PD32_PRINTER_STATUS_OFFLINE           "Printer offline; "
+    PD32_PRINTER_STATUS_IO_ACTIVE         "I/O Active; "
+    PD32_PRINTER_STATUS_BUSY              "Busy; "
+    PD32_PRINTER_STATUS_PRINTING          "Printing; "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "Output tray is full; "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE     "Not available; "
+    PD32_PRINTER_STATUS_WAITING           "Waiting; "
+    PD32_PRINTER_STATUS_PROCESSING        "Processing; "
+    PD32_PRINTER_STATUS_INITIALIZING      "Initialising; "
+    PD32_PRINTER_STATUS_WARMING_UP        "Warming up; "
+    PD32_PRINTER_STATUS_TONER_LOW         "Toner low; "
+    PD32_PRINTER_STATUS_NO_TONER          "No toner; "
+    PD32_PRINTER_STATUS_PAGE_PUNT         "Page punt; "
+    PD32_PRINTER_STATUS_USER_INTERVENTION "Interrupted by user; "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Out of memory; "
+    PD32_PRINTER_STATUS_DOOR_OPEN         "The printer door is open; "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Print server unknown; "
+    PD32_PRINTER_STATUS_POWER_SAVE        "Power safe mode; "
+}
+
+#pragma code_page(default)
diff --git a/reactos/lib/comdlg32/cdlg_Cs.rc b/reactos/lib/comdlg32/cdlg_Cs.rc
new file mode 100644 (file)
index 0000000..db74a23
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * Copyright 1996 Roman Dolejsi
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Otevøení souboru"
+FONT 8, "Helv"
+{
+ LTEXT "&jméno souboru:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Adresáøe:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Typ zobrazených souborù:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Diskové jednotky:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Otevøít", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Storno", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Nápovìda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Pouze pro ètení", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ulo\9e pod jménem..."
+FONT 8, "Helv"
+{
+ LTEXT "&Jméno souboru:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Adresáøe:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Typ zobrazených souborù:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Diskové jednotky:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ulo\9e pod jménem", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Storno", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Nápovìda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Pouze pro ètení", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tisk"
+FONT 8, "Helv"
+{
+ LTEXT "Tiskárna:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Rozsah tisku", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "Vytiskni v\9a&e", 1056, 16, 45, 60, 12
+ RADIOBUTTON "Vytiskni &výbìr", 1057, 16, 60, 60, 12
+ RADIOBUTTON "Vytiskni &zadané stránky", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Tiskni", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Storno", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Nastavit...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Od:", 1090, 60, 80, 30, 9
+ LTEXT "&Do:", 1091, 120, 80, 30, 9
+ LTEXT "Kvalita &tisku:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Tisk do so&uboru", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Kondenzované", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Nastavení zpùsobu tisku"
+FONT 8, "Helv"
+{
+ GROUPBOX "Tiskárna", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Pøedvolená tiskárna", 1056, 16, 20, 80, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Specifická &tiskárna", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Storno", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Dal\9aí volby...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientace", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "Na &vý\9aku", 1058, 50, 100, 40, 12
+ RADIOBUTTON "Na \9aíø&ku", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papír", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Formát", 1089, 130, 95, 30, 9
+ LTEXT "&Odkud", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Písmo"
+FONT 8, "Helv"
+{
+ LTEXT "Písmo:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Storno", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Barvy"
+FONT 8, "Helv"
+{
+ LTEXT "&Základní barvy:", 1088, 6, 6, 40, 9
+ LTEXT "&Barvy na zakázku:", 1089, 6, 126, 40, 9
+ LTEXT "Barva|Spoj&itá", 1090, 100, 146, 40, 9
+ LTEXT "&Odstín:", 1091, 150, 126, 40, 9
+ LTEXT "&Sytost:", 1092, 150, 146, 40, 9
+ LTEXT "&Jas:", 1093, 150, 166, 40, 9
+ LTEXT "Èe&rvená:", 1094, 150, 126, 40, 9
+ LTEXT "&Zelená:", 1095, 150, 146, 40, 9
+ LTEXT "&Modrá:", 1096, 150, 166, 40, 9
+ DEFPUSHBUTTON "Ok", IDOK, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pøidat barvu", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Vyøadit barvu", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Storno", IDCANCEL, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Hledání"
+FONT 8, "Helv"
+{
+ LTEXT "&Vyhledat:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Pouze &celá slova", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Rozli\9aovat malá a velká písmena", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Smìr", 1072, 107, 26, 68, 28
+ CONTROL "N&ahoru", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Dolu", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+ DEFPUSHBUTTON "Vyhledat d&al\9aí", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zavøít", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Nápovìda", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Zámìna"
+FONT 8, "Helv"
+{
+ LTEXT "&Vyhledat:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "&Zamìnit za:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Pouze &celá slova", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Rozli\9aovat malá a velká písmena", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "Vyhledat d&al\9aí", 1, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Za&mìnit", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zamìnit ve vý&bìru", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zavøít", 2, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Nápovìda", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_Da.rc b/reactos/lib/comdlg32/cdlg_Da.rc
new file mode 100644 (file)
index 0000000..075e8bb
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * Copyright 1995 Morten Welinder
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Åbn"
+FONT 8, "Helv"
+{
+ LTEXT "&Filnavn:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Kataloger:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Oversigt over filer af type:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Drev:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Å&bn", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuller", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjælp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Gem som ..."
+FONT 8, "Helv"
+{
+ LTEXT "&Filnavn:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Kataloger:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Oversigt over filer af type:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Drev:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "&Gem som", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuller", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjælp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Udskriv"
+FONT 8, "Helv"
+{
+ LTEXT "Printer:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Udskriv område", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Alt", 1056, 16, 45, 60, 12
+ RADIOBUTTON "&Markeret", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Sider", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Udskriv", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuller", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Indstilling", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Fra:", 1090, 60, 80, 30, 9
+ LTEXT "&Til:", 1091, 120, 80, 30, 9
+ LTEXT "Udskrifts&kvalitet:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Udskriv til fi&l", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Sammentrykket", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Udskriftsindstilling"
+FONT 8, "Helv"
+{
+ GROUPBOX "Printer", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Standardprinter", 1056, 16, 20, 80, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Specifik &printer", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuller", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Indstilling", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientering", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "Po&rtræt", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Landskab", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papir", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "Størrelse", 1089, 130, 95, 30, 9
+ LTEXT "&Kilde", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Skrifttyper"
+FONT 8, "Helv"
+{
+    LTEXT           "Skrifttype&navn:", 1088, 6, 6, 40, 9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Typografi:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Størrelse:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Annuller",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "&Anvend", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "&Hjælp" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "Effekter",1072,6,72,84,34,WS_GROUP
+    CHECKBOX        "&Gennemstreget", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX        "&Understreget", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Farve:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                    CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Eksempel",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Farve"
+FONT 8, "Helv"
+{
+ LTEXT "&Grundlæggende farver:",   1088, 4,    4,  140, 10
+ LTEXT "&Selvvalgte farver:",  1089, 4,   106, 140, 10
+ LTEXT "&Ensfarvet",  1090, 150, 151,  48, 10
+ LTEXT   "&Rød:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Grøn:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Blå:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Intensitet:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Farvemætning:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lysstyrke:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Ok",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuller", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Hjælp", 1038,100,166, 44, 14
+ PUSHBUTTON "&Tilføj til selvvalgte farver",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Definer selvvalgt farve >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Find"
+FONT 8, "Helv"
+{
+ LTEXT "&Find hvad:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Kun hele ord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Forskel på store/små &bogstaver", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Retning", 1072, 107, 26, 68, 28
+ CONTROL "&Op", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Ned", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "&Find næste", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuller", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjælp", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Erstat"
+FONT 8, "Helv"
+{
+ LTEXT "&Find hvad:",  -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "&Erstat med:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Kun hele ord", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ CHECKBOX "Forskel på store/små &bogstaver", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "&Find næste", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Erstat", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Erstat &alle", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuller", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjælp", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_De.rc b/reactos/lib/comdlg32/cdlg_De.rc
new file mode 100644 (file)
index 0000000..de45566
--- /dev/null
@@ -0,0 +1,436 @@
+/*
+ * Copyright 1994 Martin von Loewis
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Öffnen"
+FONT 8, "Helv"
+{
+ LTEXT "Datei&name:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Verzeichnisse:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Liste der Datei&typen:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Laufwerke:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Öffnen", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Abbrechen", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hilfe", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Schreibgeschützt", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Speichern als ..."
+FONT 8, "Helv"
+{
+ LTEXT "Datei&name:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Verzeichnisse:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Liste der Datei&typen:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Laufwerke:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Speichern als", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Abbrechen", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hilfe", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Schreibgeschützt", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Drucken"
+FONT 8, "Helv"
+{
+ LTEXT "Drucker:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Druckbereicht", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Alles", rad1, 16, 45, 60, 12
+ RADIOBUTTON "A&uswahl", rad2, 16, 60, 60, 12
+ RADIOBUTTON "&Seiten", rad3, 16, 75, 60, 12
+ DEFPUSHBUTTON "Drucken", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Abbrechen", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Einrichten", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Von:", 1090, 60, 80, 30, 9
+ LTEXT "&Bis:", 1091, 120, 80, 30, 9
+ LTEXT "Druck&qualität:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "In &Datei drucken", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Verdichtet", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Druckereinrichtung"
+FONT 8, "Helv"
+{
+ GROUPBOX "Drucker", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Standarddrucker", rad1, 16, 20, 80, 12
+ LTEXT "[keiner]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Bestimmter &Drucker", rad2, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Abbrechen", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Einrichten", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientierung", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Hochformat", rad3, 50, 100, 40, 12
+ RADIOBUTTON "&Querformat", rad4, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Paper", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Größe", 1089, 130, 95, 30, 9
+ LTEXT "P&apierquelle", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Seite einrichten"
+FONT 8, "Helv"
+BEGIN
+  CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80,  SS_WHITERECT
+  CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT
+  CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4,  SS_GRAYRECT
+  GROUPBOX "Papier", grp2, 8, 96, 224, 56, BS_GROUPBOX
+  LTEXT "&Größe:", stc2, 16, 112, 36, 8
+  COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  LTEXT "&Zufuhr:", stc3, 16, 132, 36, 8
+  COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  GROUPBOX "Format", grp1, 8, 156, 64, 56, BS_GROUPBOX
+  AUTORADIOBUTTON "&Hochformat", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON
+  AUTORADIOBUTTON "&Querformat", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON
+  GROUPBOX "Ränder", grp4, 80, 156, 152, 56, BS_GROUPBOX
+  LTEXT "&Links:", stc15, 88, 172, 21, 8
+  EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Rechts:", stc16, 159, 172, 27, 8
+  EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Oben:", stc17, 88, 192, 21, 8
+  EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Unten:", stc18, 159, 192, 23, 8
+  EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON
+  PUSHBUTTON "Abbrechen", IDCANCEL, 126, 220, 50, 14
+  PUSHBUTTON "&Drucker...", psh3, 184, 220, 48, 14
+END
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Font"
+FONT 8, "Helv"
+{
+    LTEXT           "Schrift&art:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Schrift&stil:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Schrift&größe:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Abbrechen",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "&Zuweisen", psh3,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "&Hilfe" , pshHelp,218,57,40,14,WS_GROUP
+    GROUPBOX        "Darstellung",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "&Durchgestrichen", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "&Unterstrichen", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Farbe:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Muster",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Farbe"
+FONT 8, "Helv"
+{
+ LTEXT "Gr&undfarben:",   1088, 4,    4,  140, 10
+ LTEXT "Selbs&tdefinierte Farben:",  1089, 4,   106, 140, 10
+ LTEXT "Farbe |  B&asis",  1090, 150, 151,  48, 10
+ LTEXT   "&Rot:", 726 ,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Grün:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Blau:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Farbe:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sätt:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "H&ell:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Ok",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Abbrechen", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hilfe", pshHelp,100,166, 44, 14
+ PUSHBUTTON "Farbe hin&zufügen",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Farben &definieren >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&a",713,300,200,4,14   /* just a dummy:  'a' is  like  &a  in "B&asis"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Suchen"
+FONT 8, "Helv"
+{
+ LTEXT "S&uchen nach:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Nur ganze &Worte", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Beachte Groß/Kleinschreibung", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Richtung", 1072, 107, 26, 68, 28
+ CONTROL "H&och", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Runter", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+ DEFPUSHBUTTON "&Nächsten finden", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Abbrechen", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hilfe", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ersetzen"
+FONT 8, "Helv"
+{
+ LTEXT "S&uchen nach:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Ersetzen &durch:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Nur ganze &Worte", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Beachte Groß/Kleinschreibung", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "&Nächsten finden", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ersetzen", psh1, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Alle ersetzen", psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Abbrechen", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hilfe", pshHelp, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "Öffnen"
+FONT 8, "Helv"
+{
+    LTEXT      "&Suche in",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 181, 2, 122, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,292,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "Datei&name:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "Datei&typen",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "&Schreibgeschützt",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+
+    DEFPUSHBUTTON      "Ö&ffnen",               IDOK,242,110,50,14
+    PUSHBUTTON         "Abbrechen",             IDCANCEL,242,128,50,14
+    PUSHBUTTON         "&Hilfe",                pshHelp,242,145,50,14
+}
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Drucken"
+FONT 8, "Helv"
+{
+    DEFPUSHBUTTON   "OK",             IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Abbrechen",      IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "&Hilfe",         pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "Drucker",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "In Fi&le drucken", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "&Eigenschaften", psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Name:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Typ:",           stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Ort:",           stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Kommentar:",     stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Kopien",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "Anzahl &Kopien:",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "C&ollate",       chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Druck Bereich",  grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "&Alles",         rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "&Seiten",        rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "Aus&wahl",       rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&von:",         stc2,  52,124,  20,8
+    RTEXT           "&bis:",           stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Print Setup"
+FONT 8, "Helv"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "Abbrechen",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Netzwerk...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "Drucker",        grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "&Eigenschaften", psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Name:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "[keiner]",       stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Typ:",           stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "[keiner]",       stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Ort:",           stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "[keiner]",       stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Kommentar:",     stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "[keiner]",       stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Papier",         grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "&Größe:",        stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "&Zufuhr:",       stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "Orientierung",   grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "&Hochformat",    rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "&Querformat",    rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "Ü&ber den Folderpicker"
+    IDS_DOCUMENTFOLDERS     "Dokumenten Ordner"
+    IDS_PERSONAL            "Meine Dokumente"
+    IDS_FAVORITES           "Meine Favoriten"
+    IDS_PATH                "System Ordner"
+    IDS_DESKTOP             "Desktop"
+    IDS_FONTS               "Schriftarten"
+    IDS_MYCOMPUTER          "Mein Computer"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "System Ordner"
+    IDS_LOCALHARDRIVES      "Lokale Festplatten"
+    IDS_FILENOTFOUND        "Datei nicht gefunden"
+    IDS_VERIFYFILE          "Bitte überprüfen sie, ob der korrekte Dateiname angegeben wurde"
+    IDS_CREATEFILE          "Die Datei existiert nicht.\nWollen Sie sie neu anlegen?"
+    IDS_OVERWRITEFILE       "Die Datei existiert bereits.\nWollen Sie sie überschreiben?"
+    IDS_INVALID_FILENAME_TITLE "Unzulässige Zeichen im Pfad"
+    IDS_INVALID_FILENAME    "Ein Dateiname darf folgende Zeichen nicht enthalten:\n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Der Pfad existiert nicht"
+    IDS_FILENOTEXISTING     "Die Datei existiert nicht"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "Eine Verzeichnisebene höher"
+    IDS_NEWFOLDER        "Neuen Ordner anlegen"
+    IDS_LISTVIEW         "Liste"
+    IDS_REPORTVIEW       "Details"
+    IDS_TODESKTOP        "Desktopordner anzeigen"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE       "Drucken"
+
+    PD32_VALUE_UREADABLE                  "Unlesbarer Eintrag"
+    PD32_INVALID_PAGE_RANGE "Dieser Wert liegt nicht auf der Seite.\n\
+Bitte geben sie einen Wert zwischen %d und %d an."
+    PD32_FROM_NOT_ABOVE_TO                "Der 'von' Eintrag kann nicht größer sein als der 'bis' Eintrag."
+    PD32_MARGINS_OVERLAP                  "Die Ränder überlappen oder sind außerhalb des Papiers.\nBitte die Ränder neu eingeben."
+    PD32_NR_OF_COPIES_EMPTY               "Es muss ein Wert bei der Anzahl der Kopien angegeben werden."
+    PD32_TOO_LARGE_COPIES                 "Ihr Drucker unterstützt so viele Kopien nicht.\nBitte verwenden Sie eine Kopienzahl zwischen 1 und %d."
+    PD32_PRINT_ERROR                      "Ein Druckerfehler ist aufgetreten."
+    PD32_NO_DEFAULT_PRINTER               "Es ist kein Standarddrucker eingestellt."
+    PD32_CANT_FIND_PRINTER                "Kann den Drucker nicht finden."
+    PD32_OUT_OF_MEMORY                    "Kein freier Speicher mehr."
+    PD32_GENERIC_ERROR                    "Ein unbekannter Fehler ist aufgetreten."
+    PD32_DRIVER_UNKNOWN                   "Unbekannter Druckertreiber."
+
+    PD32_DEFAULT_PRINTER                  "Standard Drucker; "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE         "Es sind %d Dokumente in der Queue"
+    PD32_PRINT_ALL_X_PAGES                "&Alle %d Seiten"
+    PD32_MARGINS_IN_INCHES                "Ränder [inches/zoll]"
+    PD32_MARGINS_IN_MILIMETERS            "Ränder [mm]"
+    PD32_MILIMETERS                       "mm"
+
+    PD32_PRINTER_STATUS_READY             "Bereit; "
+    PD32_PRINTER_STATUS_PAUSED            "Gestoppt; "
+    PD32_PRINTER_STATUS_ERROR             "Fehler; "
+    PD32_PRINTER_STATUS_PENDING_DELETION  "Wartet auf Löschung; "
+    PD32_PRINTER_STATUS_PAPER_JAM         "Papierstau; "
+    PD32_PRINTER_STATUS_PAPER_OUT         "Papierfach leer; "
+    PD32_PRINTER_STATUS_MANUAL_FEED       "Papier manuell zuführen; "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM     "Papierproblem; "
+    PD32_PRINTER_STATUS_OFFLINE           "Printer ist offline; "
+    PD32_PRINTER_STATUS_IO_ACTIVE         "Datenübertragung; "
+    PD32_PRINTER_STATUS_BUSY              "Beschäftigt; "
+    PD32_PRINTER_STATUS_PRINTING          "Druckend; "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "Ausgabe Fach ist voll; "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE     "Nicht vorhanden; "
+    PD32_PRINTER_STATUS_WAITING           "Wartend; "
+    PD32_PRINTER_STATUS_PROCESSING        "In Bearbeitung; "
+    PD32_PRINTER_STATUS_INITIALIZING      "Initialisierend; "
+    PD32_PRINTER_STATUS_WARMING_UP        "Aufwärmend; "
+    PD32_PRINTER_STATUS_TONER_LOW         "Tonerstand niedrig; "
+    PD32_PRINTER_STATUS_NO_TONER          "Kein Toner mehr; "
+    PD32_PRINTER_STATUS_PAGE_PUNT         "Page punt; "
+    PD32_PRINTER_STATUS_USER_INTERVENTION "Durch Benutzer unterbrochen; "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Kein Speicher mehr; "
+    PD32_PRINTER_STATUS_DOOR_OPEN         "Druckergehäuse ist offen; "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Druckserver unbekannt; "
+    PD32_PRINTER_STATUS_POWER_SAVE        "Stromsparmodus; "
+}
diff --git a/reactos/lib/comdlg32/cdlg_En.rc b/reactos/lib/comdlg32/cdlg_En.rc
new file mode 100644 (file)
index 0000000..3e972db
--- /dev/null
@@ -0,0 +1,462 @@
+/*
+ * Copyright 1995 Alexandre Julliard
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Open"
+FONT 8, "Helv"
+{
+ LTEXT "File &Name:", 1090, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Directories:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "List Files of &Type:", 1089, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
+ COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Open", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancel", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Read Only", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save As ..."
+FONT 8, "Helv"
+{
+ LTEXT "File &Name:", 1090, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Directories:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "List Files of &Type:", 1089, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
+ COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Save As", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancel", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Read Only", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Print"
+FONT 8, "Helv"
+{
+ LTEXT "Printer:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Print Range", grp1, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&All", rad1, 16, 45, 60, 12
+ RADIOBUTTON "S&election", rad2, 16, 60, 60, 12
+ RADIOBUTTON "&Pages", rad3, 16, 75, 60, 12
+ DEFPUSHBUTTON "Print", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancel", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Setup", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&From:", 1090, 60, 80, 30, 9
+ LTEXT "&To:", 1091, 120, 80, 30, 9
+ LTEXT "Print &Quality:", 1092, 6, 100, 76, 9
+ COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Print to Fi&le", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Condensed", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Print Setup"
+FONT 8, "Helv"
+{
+ GROUPBOX "Printer", grp1, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Default Printer", rad1, 16, 20, 80, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Specific &Printer", rad2, 16, 50, 80, 12
+ COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancel", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Setup", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientation", grp2, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "Po&rtrait", rad3, 50, 100, 40, 12
+ RADIOBUTTON "&Landscape", rad4, 50, 115, 40, 12
+ ICON "LANDSCAP", stc10, 10, 95, 32, 32
+ ICON "PORTRAIT", stc11, 10, 95, 32, 32
+ GROUPBOX "Paper", grp3, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "Si&ze", 1089, 130, 95, 30, 9
+ LTEXT "&Source", 1090, 130, 110, 30, 9
+ COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Font"
+FONT 8, "Helv"
+{
+    LTEXT           "&Font:",stc1 ,6,3,40,9
+    COMBOBOX        cmb1, 6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Font St&yle:",stc2 ,108,3,44,9
+    COMBOBOX        cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Size:",stc3,179,3,30,9
+    COMBOBOX        cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Cancel",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Apply", psh3,218,40,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Help" , pshHelp,218,57,40,14,WS_GROUP | WS_TABSTOP
+    GROUPBOX        "Effects",grp1,6,72,84,34,WS_GROUP
+    CHECKBOX       "Stri&keout", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "&Underline", chx2, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Color:", stc4 ,6,110,30,9
+    COMBOBOX        cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Sample",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt:",stc7 ,98,114,40,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Color"
+FONT 8, "Helv"
+{
+ LTEXT "&Basic Colors:",   1088, 4,    4,  140, 10
+ LTEXT "&Custom Colors:",  1089, 4,   106, 140, 10
+ LTEXT "Color |  Sol&id",  1090, 150, 151,  48, 10
+ LTEXT   "&Red:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Green:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Blue:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Hue:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "OK",  1,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancel", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Help", pshHelp,100,166, 44, 14
+ PUSHBUTTON "&Add to Custom Colors",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Define Custom Colors >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Find"
+FONT 8, "Helv"
+{
+ LTEXT "Fi&nd What:", -1, 4, 8, 42, 8
+ EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Match &Whole Word Only", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Match &Case", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Direction", grp1, 107, 26, 68, 28
+ CONTROL "&Up", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Down", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "&Find Next", IDOK, 182,  5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "Cancel", IDCANCEL  , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", pshHelp    , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Replace"
+FONT 8, "Helv"
+{
+ LTEXT "Fi&nd What:", -1, 4, 9, 48, 8
+ EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Re&place With:", -1, 4, 26, 48, 8
+ EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Match &Whole Word Only", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Match &Case", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "&Find Next", IDOK, 174,  4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "&Replace", psh1    , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Replace &All", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancel", IDCANCEL  , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", pshHelp    , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Print"
+FONT 8, "Helv"
+{
+    DEFPUSHBUTTON   "OK",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Cancel", IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "&Help",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "Printer",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "Print to fi&le", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "&Properties",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Name:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Type:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Where:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Comment:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Copies",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "Number of &copies:",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "C&ollate",       chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Print range",    grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "&All",           rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "Pa&ges",         rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "&Selection",     rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&from:",         stc2,  52,124,  20,8
+    RTEXT           "&to:",           stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Print Setup"
+FONT 8, "Helv"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "Cancel",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Network...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "Printer",        grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "&Properties",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Name:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Type:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Where:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Comment:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Paper",          grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "Si&ze:",         stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "&Source:",       stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "Orientation",    grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "P&ortrait",      rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "L&andscape",     rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Setup Page"
+FONT 8, "Helv"
+BEGIN
+  CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80,  SS_WHITERECT
+  CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT
+  CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4,  SS_GRAYRECT
+  GROUPBOX "Paper", grp2, 8, 96, 224, 56, BS_GROUPBOX
+  LTEXT "&Size:", stc2, 16, 112, 36, 8
+  COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  LTEXT "&Tray:", stc3, 16, 132, 36, 8
+  COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  GROUPBOX "Orientation", grp1, 8, 156, 64, 56, BS_GROUPBOX
+  AUTORADIOBUTTON "&Portrait", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON
+  AUTORADIOBUTTON "&Landscape", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON
+  GROUPBOX "Borders", grp4, 80, 156, 152, 56, BS_GROUPBOX
+  LTEXT "L&eft:", stc15, 88, 172, 21, 8
+  EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Right:", stc16, 159, 172, 27, 8
+  EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "T&op:", stc17, 88, 192, 21, 8
+  EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Bottom:", stc18, 159, 192, 23, 8
+  EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON
+  PUSHBUTTON "Cancel", IDCANCEL, 126, 220, 50, 14
+  PUSHBUTTON "P&rinter...", psh3, 184, 220, 48, 14
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "Open"
+FONT 8, "Helv"
+{
+    LTEXT      "Look &in:",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "File &name:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "Files of &type:",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "Open as &read-only",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON      "&Open",                 IDOK,222,110,50,14
+    PUSHBUTTON         "Cancel",                IDCANCEL,222,128,50,14
+    PUSHBUTTON         "&Help",                 pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "&About FolderPicker Test"
+    IDS_DOCUMENTFOLDERS     "Document Folders"
+    IDS_PERSONAL            "My Documents"
+    IDS_FAVORITES           "My Favorites"
+    IDS_PATH                "System Path"
+    IDS_DESKTOP             "Desktop"
+    IDS_FONTS               "Fonts"
+    IDS_MYCOMPUTER          "My Computer"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "System Folders"
+    IDS_LOCALHARDRIVES      "Local Hard Drives"
+    IDS_FILENOTFOUND        "File not found"
+    IDS_VERIFYFILE          "Please verify that the correct file name was given"
+    IDS_CREATEFILE          "File does not exist\nDo you want to create file"
+    IDS_OVERWRITEFILE       "File does already exist.\nDo you want to replace it?"
+    IDS_INVALID_FILENAME_TITLE "Invalid character(s) in path"
+    IDS_INVALID_FILENAME    "A filename cannot contain any of the following characters: \n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Path does not exist"
+    IDS_FILENOTEXISTING     "File does not exist"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "Up One Level"
+    IDS_NEWFOLDER        "Create New Folder"
+    IDS_LISTVIEW         "List"
+    IDS_REPORTVIEW       "Details"
+    IDS_TODESKTOP        "Browse to Desktop"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE       "Print"
+
+    PD32_VALUE_UREADABLE                  "Unreadable Entry"
+    PD32_INVALID_PAGE_RANGE "This value does not lie within the page range.\n\
+Please enter a value between %d and %d."
+    PD32_FROM_NOT_ABOVE_TO                "The 'from' entry cannot exceed the \
+'to' entry."
+    PD32_MARGINS_OVERLAP                  "Margins overlap or fall outside \
+Paper boundaries.\nPlease reenter margins."
+    PD32_NR_OF_COPIES_EMPTY               "The number of 'Number of copies' \
+value cannot be empty."
+    PD32_TOO_LARGE_COPIES                 "This large number of copies is not \
+supported by your printer.\nPlease enter a value between 1 and %d."
+    PD32_PRINT_ERROR                      "A printer error occurred."
+    PD32_NO_DEFAULT_PRINTER               "No default printer defined."
+    PD32_CANT_FIND_PRINTER                "Cannot find the printer."
+    PD32_OUT_OF_MEMORY                    "Out of memory."
+    PD32_GENERIC_ERROR                    "An error occurred."
+    PD32_DRIVER_UNKNOWN                   "Unknown printer driver."
+
+    PD32_DEFAULT_PRINTER                  "Default Printer; "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE         "There are %d documents in the queue"
+    PD32_PRINT_ALL_X_PAGES                "&All %d pages"
+    PD32_MARGINS_IN_INCHES                "Margins [inches]"
+    PD32_MARGINS_IN_MILIMETERS            "Margins [mm]"
+    PD32_MILIMETERS                       "mm"
+
+    PD32_PRINTER_STATUS_READY             "Ready"
+    PD32_PRINTER_STATUS_PAUSED            "Paused; "
+    PD32_PRINTER_STATUS_ERROR             "Error; "
+    PD32_PRINTER_STATUS_PENDING_DELETION  "Pending deletion; "
+    PD32_PRINTER_STATUS_PAPER_JAM         "Paper jam; "
+    PD32_PRINTER_STATUS_PAPER_OUT         "Out of paper; "
+    PD32_PRINTER_STATUS_MANUAL_FEED       "Feed paper manual; "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM     "Paper problem; "
+    PD32_PRINTER_STATUS_OFFLINE           "Printer offline; "
+    PD32_PRINTER_STATUS_IO_ACTIVE         "I/O Active; "
+    PD32_PRINTER_STATUS_BUSY              "Busy; "
+    PD32_PRINTER_STATUS_PRINTING          "Printing; "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "Output tray is full; "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE     "Not available; "
+    PD32_PRINTER_STATUS_WAITING           "Waiting; "
+    PD32_PRINTER_STATUS_PROCESSING        "Processing; "
+    PD32_PRINTER_STATUS_INITIALIZING      "Initialising; "
+    PD32_PRINTER_STATUS_WARMING_UP        "Warming up; "
+    PD32_PRINTER_STATUS_TONER_LOW         "Toner low; "
+    PD32_PRINTER_STATUS_NO_TONER          "No toner; "
+    PD32_PRINTER_STATUS_PAGE_PUNT         "Page punt; "
+    PD32_PRINTER_STATUS_USER_INTERVENTION "Interrupted by user; "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Out of memory; "
+    PD32_PRINTER_STATUS_DOOR_OPEN         "The printer door is open; "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Print server unknown; "
+    PD32_PRINTER_STATUS_POWER_SAVE        "Power save mode; "
+}
+
+STRINGTABLE DISCARDABLE /* Color names */
+{
+    IDS_COLOR_BLACK     "Black"
+    IDS_COLOR_MAROON    "Maroon"
+    IDS_COLOR_GREEN     "Green"
+    IDS_COLOR_OLIVE     "Olive"
+    IDS_COLOR_NAVY      "Navy"
+    IDS_COLOR_PURPLE    "Purple"
+    IDS_COLOR_TEAL      "Teal"
+    IDS_COLOR_GRAY      "Gray"
+    IDS_COLOR_SILVER    "Silver"
+    IDS_COLOR_RED       "Red"
+    IDS_COLOR_LIME      "Lime"
+    IDS_COLOR_YELLOW    "Yellow"
+    IDS_COLOR_BLUE      "Blue"
+    IDS_COLOR_FUCHSIA   "Fuchsia"
+    IDS_COLOR_AQUA      "Aqua"
+    IDS_COLOR_WHITE     "White"
+}
diff --git a/reactos/lib/comdlg32/cdlg_Eo.rc b/reactos/lib/comdlg32/cdlg_Eo.rc
new file mode 100644 (file)
index 0000000..c9a5f87
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * Copyright 1996 Duncan C Thomson
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_ESPERANTO, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Malfermu dosieron"
+FONT 8, "Helv"
+{
+ LTEXT "Dosier&nomo:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Dosier&ujo:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Dosier&speco:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Disk&ilo:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Malfermu", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Nuligu", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Helpu", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Nur &legebla", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Sekurigu dosieron"
+FONT 8, "Helv"
+{
+ LTEXT "Dosier&nomo:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Dosier&ujo:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Dosier&speco:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Disk&ilo:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Sekurigu", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Nuligu", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Helpu", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Nur &legebla", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Presu"
+FONT 8, "Helv"
+{
+ LTEXT "Presilo:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Etendiøon", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "æ&iujn", 1056, 16, 45, 60, 12
+ RADIOBUTTON "&elekton", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&paøojn", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Presu", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Nuligu", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aranøu", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "de:", 1090, 60, 80, 30, 9
+ LTEXT "øis:", 1091, 120, 80, 30, 9
+ LTEXT "&Kvalito:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Presu &dosieren", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Mallarøtipe", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Presada Aranøo"
+FONT 8, "Helv"
+{
+ GROUPBOX "Presilo", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Implicita Presilo", 1056, 16, 20, 80, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "&Specifa Presilo", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Enorde", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Nuligu", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Agordo", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Formato", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Vertikala", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Horizontala", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papero", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Grando", 1089, 130, 95, 30, 9
+ LTEXT "&Fonto", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tiparo"
+FONT 8, "Helv"
+{
+ LTEXT "Tiparo:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ DEFPUSHBUTTON "Enorde", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Nuligu", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Koloro"
+FONT 8, "Helv"
+{
+ LTEXT "&Normala koloraro:", 1088, 6, 6, 40, 9
+ LTEXT "&Persona koloraro:", 1089, 6, 126, 40, 9
+ LTEXT "Color|Sol&id", 1090, 100, 146, 40, 9
+ LTEXT "&Farbo:", 1091, 150, 126, 40, 9
+ LTEXT "&Saturo:", 1092, 150, 146, 40, 9
+ LTEXT "&Helo:", 1093, 150, 166, 40, 9
+ LTEXT "&Ruøo:", 1094, 150, 126, 40, 9
+ LTEXT "&Verda:", 1095, 150, 146, 40, 9
+ LTEXT "&Bluo:", 1096, 150, 166, 40, 9
+ DEFPUSHBUTTON "Enorde", IDOK, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aldonu al persona koloraro", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Forv&iþu personan koloraron", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Nuligu", IDCANCEL, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Seræu"
+FONT 8, "Helv"
+{
+ LTEXT "&Seræu:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Nur tutan &vorton", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Atentu &Usklecon", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Direkto", 1072, 107, 26, 68, 28
+ CONTROL "&Retro", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Antaýen", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+ DEFPUSHBUTTON "&Pluseræu", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Nuligu", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Helpu", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Anstataýigu"
+FONT 8, "Helv"
+{
+ LTEXT "Anstataýigu:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "&per:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Nur tutan &vorton", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Atentu &Usklecon", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "Plu&seræu", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Anstataýigu", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Anstataýigu æ&iujn", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Nuligu", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Helpu", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_Es.rc b/reactos/lib/comdlg32/cdlg_Es.rc
new file mode 100644 (file)
index 0000000..72b798e
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * Copyright 1995 Jon Tombs
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Abrir"
+FONT 8, "Helv"
+{
+ LTEXT "Nombre de &archivo:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Directorios:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Mostrar archivos de tipo:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "U&nidades:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Abrir", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&yuda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Solo lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "&Guardar como..."
+FONT 8, "Helv"
+{
+ LTEXT "Nombre de &archivo:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Directorios:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Mostrar archivos de tipo:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "U&nidades:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "&Guardar como", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&yuda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Solo lectura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Imprimir"
+FONT 8, "Helv"
+{
+ LTEXT "Impresora:", 1088, 6, 6, 40, 9
+ LTEXT "Campo de impresión", 1089, 60, 6, 150, 9
+ GROUPBOX "", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Todo", 1056, 16, 45, 60, 12
+ RADIOBUTTON "Selecc&ión", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Paginas", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Imprimir", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Desde:", 1090, 60, 80, 30, 9
+ LTEXT "&Hasta:", 1091, 120, 80, 30, 9
+ LTEXT "Calidad de impre&sión:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Impri&mir en un archivo", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Condensado", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Configuración de impresión"
+FONT 8, "Helv"
+{
+ GROUPBOX "Impresora:", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "Pre&determinada del sistema", 1056, 16, 20, 80, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Impresora &especmfica:", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Aceptar", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Configurar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientación", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Vertical", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Horizontal", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papel", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Tamaño", 1089, 130, 95, 30, 9
+ LTEXT "O&rigen:", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Fuente"
+FONT 8, "Helv"
+{
+    LTEXT           "&Fuente:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Est&ilo de fuente:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Tamaño:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "Aceptar",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Cancelar",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "A&plicar", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "A&yuda" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "&Efectos",1072,6,72,84,34,WS_GROUP
+    CHECKBOX        "&Rayado", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX        "&Subrayado", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Color:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                    CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Ejemplo",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZzÑñ",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Color"
+FONT 8, "Helv"
+{
+ LTEXT "Colores &básicos:", 1088, 4, 4, 140, 10
+ LTEXT "Colores person&alizados:", 1089, 4, 106, 140, 10
+ LTEXT "Color|Só3l&ido", 1090, 150, 151, 48, 10
+ LTEXT   "&Rojo:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Verde:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "A&zul:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Tinte:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat.:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum.:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Aceptar",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&yuda", 1038,100,166, 44, 14
+ PUSHBUTTON "Agregar a los &colores personalizados", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Definir colores personalizados >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i in "sol&id" */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Buscar"
+FONT 8, "Helv"
+{
+ LTEXT "Buscar:",  -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Comparar palabra entera solamente", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Mayúsculas/minúsculas", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Dirección", 1072, 107, 26, 68, 28
+ CONTROL "A&rriba", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Abajo", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+ DEFPUSHBUTTON "Buscar &siguiente", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&yuda", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "R&eemplazar"
+FONT 8, "Helv"
+{
+ LTEXT "Buscar:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Re&emplazar por:", 1090, -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Comparar palabra entera solamente", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Mayúsculas/minúsculas", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "Reemplazar &siguiente", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Reemplazar", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Reemplazar &todo", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&yuda", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_Fi.rc b/reactos/lib/comdlg32/cdlg_Fi.rc
new file mode 100644 (file)
index 0000000..7fe34ae
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * Copyright 1995 Jukka Iivonen
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Avaa"
+FONT 8, "Helv"
+{
+ LTEXT "Tiedosto&nimi:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Hakemistot:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Luettele tiedostot tyypeittäin:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Asemat:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Avaa", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Peruuta", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ohje", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Vain luku", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tallenna nimellä"
+FONT 8, "Helv"
+{
+ LTEXT "Tiedosto&nimi:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Hakemistot:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Tallenna tiedosto &muodossa:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Asemat:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Tallenna", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Peruuta", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ohje", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Vain luku", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tulosta"
+FONT 8, "Helv"
+{
+ LTEXT "Kirjoitin:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Tulostusalue", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Kaikki", 1056, 16, 45, 60, 12
+ RADIOBUTTON "&Valinta", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Sivut", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Tulosta", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Peruuta", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Asetukset", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Mistä:", 1090, 60, 80, 30, 9
+ LTEXT "Mi&hin:", 1091, 120, 80, 30, 9
+ LTEXT "&Tulostustarkkuus:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Tulosta t&iedostoon", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Tiivistetty", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Kirjoittimen asetukset"
+FONT 8, "Helv"
+{
+ GROUPBOX "Kirjoitin", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "O&letuskirjoitin", 1056, 16, 20, 80, 12
+ LTEXT "[ei valittu]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "&Erityinen kirjoitin", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Peruuta", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Asetukset...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Suunta", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Pysty", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Vaaka", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Paperi", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Koko:", 1089, 130, 95, 30, 9
+ LTEXT "Lä&hde:", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Fontit"
+FONT 8, "Helv"
+{
+    LTEXT           "&Fontti:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Fonttit&yyli:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Koko:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Peruuta",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "&Sovella", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "&Ohje" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "Efektit",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "Yli&viivattu", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "A&lleviivattu", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "V&äri:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Näyte",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Väri"
+FONT 8, "Helv"
+{
+ LTEXT "Pe&rusvärit:",   1088, 4,    4,  140, 10
+ LTEXT "&Muokatut värit:",  1089, 4,   106, 140, 10
+ LTEXT "Väri|&Tasainen",  1090, 150, 151,  48, 10
+ LTEXT   "&Pun:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Vihr:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "Si&n:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sävy:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Kyll:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "K&irkk:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Ok",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "S&ulje", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "O&hje", 1038,100,166, 44, 14
+ PUSHBUTTON "&Lisää väri",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "M&äärittele väri >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Etsi"
+FONT 8, "Helv"
+{
+ LTEXT "&Etsittävä:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Koko sana", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Kirjaink&oko", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Suunta", 1072, 107, 26, 68, 28
+ CONTROL "&Ylös", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Alas", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+ DEFPUSHBUTTON "Etsi &seuraava", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Peruuta", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "O&hje", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Korvaa"
+FONT 8, "Helv"
+{
+ LTEXT "&Etsittävä:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Ko&rvattava:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Koko sana", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Kirjaink&oko", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "Etsi &seuraava", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Korv&aa", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Korvaa ka&ikki", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "S&ulje", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "O&hje", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_Fr.rc b/reactos/lib/comdlg32/cdlg_Fr.rc
new file mode 100644 (file)
index 0000000..f874138
--- /dev/null
@@ -0,0 +1,465 @@
+/*
+ * Commdlg
+ * French language support
+ *
+ * Copyright 1995 Alexandre Julliard
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ouvrir"
+FONT 8, "Helv"
+{
+ LTEXT "&Nom de fichier:", 1090, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Répertoires", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Liste des fichiers de &type:", 1089, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Lecteurs:", 1091, 110, 104, 92, 9
+ COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuler", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Lecture seule", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Enregistrer sous ..."
+FONT 8, "Helv"
+{
+ LTEXT "&Nom de fichier:", 1090, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Répertoires:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Liste des fichiers de &type:", 1089, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Lecteurs:", 1091, 110, 104, 92, 9
+ COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuler", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Lecture seule", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Imprimer"
+FONT 8, "Helv"
+{
+ LTEXT "Imprimante:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Étendue", grp1, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Tout", rad1, 16, 45, 60, 12
+ RADIOBUTTON "&Sélection", rad2, 16, 60, 60, 12
+ RADIOBUTTON "&Pages", rad3, 16, 75, 60, 12
+ DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuler", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Configurer...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&De:", 1090, 60, 80, 30, 9
+ LTEXT "&A:", 1091, 120, 80, 30, 9
+ LTEXT "&Qualité d'impression:", 1092, 6, 100, 76, 9
+ COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "&Fichier d'impression", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Copies t&riées", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Configuration de l'impression"
+FONT 8, "Helv"
+{
+ GROUPBOX "Imprimante", grp1, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Imprimante par défaut", rad1, 16, 20, 80, 12
+ LTEXT "[aucune]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Imprimante &spécifique", rad2, 16, 50, 80, 12
+ COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuler", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Options...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientation", grp2, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Portrait", rad3, 50, 100, 40, 12
+ RADIOBUTTON "Paysag&e", rad4, 50, 115, 40, 12
+ ICON "LANDSCAP", stc10, 10, 95, 32, 32
+ ICON "PORTRAIT", stc11, 10, 95, 32, 32
+ GROUPBOX "Papier", grp3, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Taille :", 1089, 130, 95, 30, 9
+ LTEXT "&Ali&mentation :", 1090, 130, 110, 30, 9
+ COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Polices"
+FONT 8, "Helv"
+{
+    LTEXT           "&Police:",stc1 ,6,3,40,9
+    COMBOBOX        cmb1 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "St&yle de police:",stc2 ,108,3,44,9
+    COMBOBOX        cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Taille:",stc3,179,3,30,9
+    COMBOBOX        cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Annuler",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "A&ppliquer", psh3,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "&Aide" , pshHelp,218,57,40,14,WS_GROUP
+    GROUPBOX        "Effets",grp1,6,72,84,34,WS_GROUP
+    CHECKBOX        "&Barré", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX        "&Souligné", chx2, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Couleur:", stc4 ,6,110,30,9
+    COMBOBOX        cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                    CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Exemple",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Couleurs"
+FONT 8, "Helv"
+{
+ LTEXT "Couleurs de &base:",   1088, 4,    4,  140, 10
+ LTEXT "&Couleurs personnalisées:",  1089, 4,   106, 140, 10
+ LTEXT "Couleur |  &Uni",  1090, 150, 151,  48, 10
+ LTEXT   "&Rouge:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Vert:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "Bl&eu:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Teinte:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat.:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum.:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Ok",  1,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuler", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", pshHelp,100,166, 44, 14
+ PUSHBUTTON "A&jouter couleur personnalisées", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Définir couleurs personnalisées >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i in "sol&id" */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Rechercher"
+FONT 8, "Helv"
+{
+ LTEXT "&Rechercher:", -1, 4, 8, 42, 8
+ EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "M&ot seulement", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Respect des &majuscules/minuscules", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Direction", grp1, 107, 26, 68, 28
+ CONTROL "&Haut", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Bas", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "&Poursuivre", 1, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuler", 2, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Remplacer"
+FONT 8, "Helv"
+{
+ LTEXT "&Rechercher:", -1, 4, 9, 48, 8
+ EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "R&emplacer par:", -1, 4, 26, 48, 8
+ EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "M&ot seulement", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Respect des &majuscules/minuscules", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "&Poursuivre", 1, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Rempla&cer", psh1, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Remplacer &tout", psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Annuler", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", pshHelp, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Impression"
+FONT 8, "Helv"
+{
+    DEFPUSHBUTTON   "OK",             IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Annuler",        IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "&Aide",          pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "Imprimante",     grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "Imprimer dans un fichier", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "Propriétés",     psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Nom:",          stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Etat:",          stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Type:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Emplacement:",   stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Commentaire:",   stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Copies",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "Nombre de copies:",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "Copies assemblées",chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Etendue de pages",  grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "Toutes",         rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "Pages",          rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "Selection",      rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&de:",           stc2,  52,124,  20,8
+    RTEXT           "&à:",            stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Configuration de l'imprimante"
+FONT 8, "Helv"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "Annuler",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Réseau...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "Imprimante",     grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "&Propriétés",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Nom:",          stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Etat:",          stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "[aucun]",        stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Type:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "[aucun]",        stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Emplacement:",   stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "[aucun]",        stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Commentaire:",   stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "[aucun]",        stc13, 60, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Papier",         grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "&Taille:",       stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Source:",        stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "Orientation",    grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "&Portrait",      rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "&Paysage",       rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Mise en page"
+FONT 8, "Helv"
+BEGIN
+  CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80,  SS_WHITERECT
+  CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT
+  CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4,  SS_GRAYRECT
+  GROUPBOX "Papier", grp2, 8, 96, 224, 56, BS_GROUPBOX
+  LTEXT "&Taille:", stc2, 16, 112, 36, 8
+  COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  LTEXT "&Source:", stc3, 16, 132, 36, 8
+  COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  GROUPBOX "Orientation", grp1, 8, 156, 64, 56, BS_GROUPBOX
+  AUTORADIOBUTTON "&Portrait", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON
+  AUTORADIOBUTTON "P&aysage", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON
+  GROUPBOX "Marges", grp4, 80, 156, 152, 56, BS_GROUPBOX
+  LTEXT "&Droite:", stc15, 88, 172, 21, 8
+  EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Gauche:", stc16, 159, 172, 27, 8
+  EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Haut:", stc17, 88, 192, 21, 8
+  EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Bas:", stc18, 159, 192, 23, 8
+  EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON
+  PUSHBUTTON "Annuler", IDCANCEL, 126, 220, 50, 14
+  PUSHBUTTON "&Imprimante...", psh3, 184, 220, 48, 14
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "Ouvrir"
+FONT 8, "Helv"
+{
+    LTEXT      "&Rechercher dans",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 181, 2, 122, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,292,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "&Nom du fichier:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "&Type du fichier",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "&Protection écriture",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON      "Ouvrir",                IDOK,242,110,50,14
+    PUSHBUTTON         "Annuler",               IDCANCEL,242,128,50,14
+    PUSHBUTTON         "&Aide",                 pshHelp,242,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "À propos du choix de répertoires"
+    IDS_DOCUMENTFOLDERS     "Répertoire Documents"
+    IDS_PERSONAL            "Mes Documents"
+    IDS_FAVORITES           "Mes Favoris"
+    IDS_PATH                "Répertoire système"
+    IDS_DESKTOP             "Bureau"
+    IDS_FONTS               "Polices"
+    IDS_MYCOMPUTER          "Poste de travail"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "Répertoires système"
+    IDS_LOCALHARDRIVES      "Disques locaux"
+    IDS_FILENOTFOUND        "Fichier non trouvé"
+    IDS_VERIFYFILE          "Prière de vérifier que le nom de fichier indiqué est correct"
+    IDS_CREATEFILE          "Ce fichier n'existe pas.\nSouhaitez-vous le créer ?"
+    IDS_OVERWRITEFILE       "Ce fichier existe déjà.\nVoulez-vous le remplacer ?"
+    IDS_INVALID_FILENAME_TITLE "Le chemin d'accès contient des caractères invalides"
+    IDS_INVALID_FILENAME    "Un nom de fichier ne peut contenir un des caractères suivants : \n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Le chemin d'accès n'existe pas"
+    IDS_FILENOTEXISTING     "Le fichier n'existe pas"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "Remonter d'un niveau"
+    IDS_NEWFOLDER        "Créer un nouveau dossier"
+    IDS_LISTVIEW         "Liste"
+    IDS_REPORTVIEW       "Détails"
+    IDS_TODESKTOP        "Voir le bureau"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE       "Imprimer"
+
+    PD32_VALUE_UREADABLE                  "Entrée illisible"
+    PD32_INVALID_PAGE_RANGE "Cette valeur n'est pas dans l'intervalle de pages\n\
+Veuillez indiquer une valeur entre %d et %d."
+    PD32_FROM_NOT_ABOVE_TO                "Le champ 'de' ne peut être plus grand \
+que le champ 'à'."
+    PD32_MARGINS_OVERLAP                  "Les marges se recouvrent ou dépassent du papier\n\
+Veuillez indiquer de nouvelles valeurs."
+    PD32_NR_OF_COPIES_EMPTY               "Le champ 'Copies' est vide.\n\
+Veuillez entrer un nombre et r&essayer."
+    PD32_TOO_LARGE_COPIES                 "Votre imprimante ne peut gérer autant de copies.\n\
+Veuillez indiquer un nombre de copies entre 1 et %d."
+    PD32_PRINT_ERROR                      "Une erreur d'impression est intervenue."
+    PD32_NO_DEFAULT_PRINTER               "Pas d'imprimante par défaut."
+    PD32_CANT_FIND_PRINTER                "Impossible de trouver l'imprimante."
+    PD32_OUT_OF_MEMORY                    "Pas assez de mémoire."
+    PD32_GENERIC_ERROR                    "Une erreur est intervenue."
+    PD32_DRIVER_UNKNOWN                   "Pilote d'imprimante inconnu."
+
+    PD32_DEFAULT_PRINTER                  "Imprimante par défaut; "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE         "Il y a %d documents dans la file d'attente"
+    PD32_PRINT_ALL_X_PAGES                "&Toutes les %d pages"
+    PD32_MARGINS_IN_INCHES                "Marges [pouces]"
+    PD32_MARGINS_IN_MILIMETERS            "Marges [mm]"
+    PD32_MILIMETERS                       "mm"
+
+    PD32_PRINTER_STATUS_READY             "Prêt; "
+    PD32_PRINTER_STATUS_PAUSED            "Suspendu; "
+    PD32_PRINTER_STATUS_ERROR             "Erreur; "
+    PD32_PRINTER_STATUS_PENDING_DELETION  "En attente de suppression; "
+    PD32_PRINTER_STATUS_PAPER_JAM         "Bourrage papier; "
+    PD32_PRINTER_STATUS_PAPER_OUT         "Plus de papier; "
+    PD32_PRINTER_STATUS_MANUAL_FEED       "Insertion manuelle du papier; "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM     "Problème de papier; "
+    PD32_PRINTER_STATUS_OFFLINE           "L'imprimante n'est pas en ligne; "
+    PD32_PRINTER_STATUS_IO_ACTIVE         "IO Active; "
+    PD32_PRINTER_STATUS_BUSY              "Occupée; "
+    PD32_PRINTER_STATUS_PRINTING          "En cours d'impression; "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "Le bac de sortie est plein; "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE     "Non disponible; "
+    PD32_PRINTER_STATUS_WAITING           "En attente; "
+    PD32_PRINTER_STATUS_PROCESSING        "Traitement en cours; "
+    PD32_PRINTER_STATUS_INITIALIZING      "Démarrage en cours; "
+    PD32_PRINTER_STATUS_WARMING_UP        "Préchauffage; "
+    PD32_PRINTER_STATUS_TONER_LOW         "Toner presque vide; "
+    PD32_PRINTER_STATUS_NO_TONER          "Pas de toner; "
+    PD32_PRINTER_STATUS_PAGE_PUNT         "Page punt; "
+    PD32_PRINTER_STATUS_USER_INTERVENTION "Annulé par utilisateur; "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Plus assez de mémoire; "
+    PD32_PRINTER_STATUS_DOOR_OPEN         "La porte de l'imprimante est ouverte; "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Serveur d'impression inconnu; "
+    PD32_PRINTER_STATUS_POWER_SAVE        "Mode économie d'énergie; "
+}
+
+STRINGTABLE DISCARDABLE /* Color names */
+{
+    IDS_COLOR_BLACK     "Noir"
+    IDS_COLOR_MAROON    "Marron"
+    IDS_COLOR_GREEN     "Vert"
+    IDS_COLOR_OLIVE     "Olive"
+    IDS_COLOR_NAVY      "Bleu marine"
+    IDS_COLOR_PURPLE    "Pourpre"
+    IDS_COLOR_TEAL      "Turquoise"
+    IDS_COLOR_GRAY      "Gris"
+    IDS_COLOR_SILVER    "Argent"
+    IDS_COLOR_RED       "Rouge"
+    IDS_COLOR_LIME      "Lime"
+    IDS_COLOR_YELLOW    "Jaune"
+    IDS_COLOR_BLUE      "Bleu"
+    IDS_COLOR_FUCHSIA   "Fuchsia"
+    IDS_COLOR_AQUA      "Aqua"
+    IDS_COLOR_WHITE     "Blanc"
+}
diff --git a/reactos/lib/comdlg32/cdlg_Hu.rc b/reactos/lib/comdlg32/cdlg_Hu.rc
new file mode 100644 (file)
index 0000000..6b4fba0
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+ * Copyright 1997 John Zero
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Megnyitás"
+FONT 8, "Helv"
+BEGIN
+        LTEXT "File &neve:", 1090, 6, 6, 76, 9
+        EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+        LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+        LTEXT "&Könyvtárak:", -1, 110, 6, 92, 9
+        CONTROL "", 1088, "STATIC", SS_NOPREFIX | WS_GROUP, 110, 18, 92, 9
+        LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+        LTEXT "File &típusok:", 1089, 6, 104, 90, 9
+        CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 114, 90, 36
+        LTEXT "&Meghajtók:", 1091, 110, 104, 92, 9
+        CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 110, 114, 92, 68
+        CONTROL "Megnyitás", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 208, 6, 56, 14
+        CONTROL "Mégsem", IDCANCEL, "BUTTON", WS_GROUP | WS_TABSTOP, 208, 24, 56, 14
+        CONTROL "&Segítség", 1038, "BUTTON", WS_GROUP | WS_TABSTOP, 208, 46, 56, 14
+        CONTROL "&Csak olvasható", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 208, 68, 63, 12
+END
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Mentés új néven ..."
+FONT 8, "Helv"
+{
+ LTEXT "File &neve:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Könyvtárak:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "File &típusok:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Meghajtók:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Mentés új néven", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Mégsem", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Segítség", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Csak olvasható", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Nyomtatás"
+FONT 8, "Helv"
+{
+ LTEXT "Nyomtató:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Nyomtatandó terület", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Mind", 1056, 16, 45, 60, 12
+ RADIOBUTTON "&Kiválasztott", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Lapok", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Nyomtatás", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Mégsem", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Beállítás", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "-&tól:", 1090, 60, 80, 30, 9
+ LTEXT "-&ig:", 1091, 120, 80, 30, 9
+ LTEXT "Mi&nõség:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "&File-ba nyomtat", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Sûrû", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Nyomtató beállítása"
+FONT 8, "Helv"
+{
+ GROUPBOX "Nyomtató", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Alapértelmezett nyomtató", 1056, 16, 20, 80, 12
+ LTEXT "[nincs]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "&Adott nyomtató", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Mégsem", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Beállítás", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Oldalfekvés", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "Á&lló", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Fekvõ", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papír", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Mérete", 1089, 130, 95, 30, 9
+ LTEXT "Fo&rrása", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Font"
+FONT 8, "Helv"
+{
+    LTEXT           "&Font:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Font &stílus:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Méret:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Mégsem",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "&Alkalmaz", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "&Segítség" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "Effektusok",1072,6,72,84,34,WS_GROUP
+    CHECKBOX        "Á&thúzott", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX        "&Aláhúzott", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Szín:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                    CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Minta",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZzÁáÕõÉé",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Szín"
+FONT 8, "Helv"
+{
+ LTEXT "&Alap színek:",   1088, 4,    4,  140, 10
+ LTEXT "&Egyedi színek:",  1089, 4,   106, 140, 10
+ LTEXT "Szín |  &Tömör",  1090, 150, 151,  48, 10
+ LTEXT   "&Vörös:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Zöld:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Kék:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Hue:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Ok",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Mégsem", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Segítség", 1038,100,166, 44, 14
+ PUSHBUTTON "&Egyedi színekhez adás",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "E&gyedi szín definiálás >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&t",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+FINDDLGORD DIALOG 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Keresés"
+FONT 8, "Helv"
+BEGIN
+        LTEXT "&Mit keressen:", -1, 4, 8, 48, 8
+        EDITTEXT 1152, 51, 7, 124, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+        CONTROL "Teljes &szavak keresése", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 4, 26, 100, 12
+        CONTROL "Kis/&nagybetû különb.", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 4, 42, 92, 12
+        GROUPBOX "Irány", 1072, 97, 26, 78, 28
+        CONTROL "&Vissza", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 102, 38, 32, 12
+        CONTROL "&Elõre", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+        CONTROL "&Következõ", 1, "BUTTON", WS_GROUP | WS_TABSTOP, 182, 5, 50, 14
+        CONTROL "Mégsem", 2, "BUTTON", WS_GROUP | WS_TABSTOP, 182, 23, 50, 14
+        PUSHBUTTON "&Segítség", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+END
+
+REPLACEDLGORD DIALOG 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Cserélés"
+FONT 8, "Helv"
+BEGIN
+        LTEXT "&Mit keressen:", -1, 4, 9, 48, 8
+        EDITTEXT 1152, 57, 7, 111, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+        LTEXT "Mire &cseréljem:", -1, 4, 26, 53, 8
+        EDITTEXT 1153, 57, 24, 111, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+        CONTROL "Teljes &szavak keresése", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 5, 46, 104, 12
+        CONTROL "Kis/&nagybetû különb.", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 5, 62, 99, 12
+        CONTROL "&Következõ", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 174, 4, 53, 14
+        CONTROL "C&serél", 1024, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 21, 53, 14
+        CONTROL "M&indent cserél", 1025, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 38, 53, 14
+        CONTROL "Mégsem", IDCANCEL, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 55, 53, 14
+        CONTROL "&Segítség", 1038, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 75, 53, 14
+END
diff --git a/reactos/lib/comdlg32/cdlg_It.rc b/reactos/lib/comdlg32/cdlg_It.rc
new file mode 100644 (file)
index 0000000..abe863c
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+ * Copyright 1996 Tristan Tarrant
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Apri"
+FONT 8, "Helv"
+{
+ LTEXT "&Nome file:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Percorso:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Files di &Tipo:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Unita':", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Apri", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annulla", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aiuto", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Solo &Lettura", 1040, 208, 68, 52, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Salva con nome ..."
+FONT 8, "Helv"
+{
+ LTEXT "&Nome file:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Percorso:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Files di &Tipo:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Unita':", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Salva come", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annulla", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Sola lettura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Stampa"
+FONT 8, "Helv"
+{
+ LTEXT "Stampante:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Pagine da stampare", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Tutte", 1056, 16, 45, 60, 12
+ RADIOBUTTON "S&elezione", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Pagine", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Stampa", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annulla", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Configura", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Da:", 1090, 60, 80, 30, 9
+ LTEXT "&A:", 1091, 120, 80, 30, 9
+ LTEXT "&Qualita' di Stampa:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Stampa su Fi&le", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Condensato", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 274, 154
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Configurazione Stampante"
+FONT 8, "Helv"
+{
+ GROUPBOX "Stampante", 1072, 6, 10, 180, 72, BS_GROUPBOX
+ RADIOBUTTON "Stampante &Preferita", 1056, 16, 20, 78, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Stampante &Specifica", 1057, 16, 50, 78, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annulla", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Installa", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientamento", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Verticale", 1058, 50, 100, 42, 12
+ RADIOBUTTON "&Orizzontale", 1059, 50, 115, 50, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Carta", 1074, 120, 85, 150, 50, BS_GROUPBOX
+ LTEXT "&Dimensione", 1089, 130, 100, 30, 9
+ LTEXT "&Sorgente", 1090, 130, 115, 30, 9
+ COMBOBOX 1137, 168, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 168, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Font"
+FONT 8, "Helv"
+{
+    LTEXT           "&Font:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "St&ile:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Dimensione:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Annulla",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "A&pplica", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "&Aiuto" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "Effetti",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "&Barrato", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "&Sottolineato", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Colore:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Esempio",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Colore"
+FONT 8, "Helv"
+{
+ LTEXT "Colori di &Base:",   1088, 4,    4,  140, 10
+ LTEXT "Colori &Utente:",  1089, 4,   106, 140, 10
+ LTEXT "Colore |  Sol&ido",  1090, 150, 151,  48, 10
+ LTEXT   "&Rosso:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Verde:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Blu:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Tinta:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Ok",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annulla", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Aiuto", 1038,100,166, 44, 14
+ PUSHBUTTON "&Aggiungi ai Colori Utente",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Definisci Colori Utente >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i in "sol&id"  */
+}
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Trova"
+FONT 8, "Helv"
+{
+ LTEXT "Tro&va:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Parola Intera", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Maiuscole/Minuscole", 1041, 4, 42, 74, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Direzione", 1072, 107, 26, 68, 28
+ CONTROL "&Su", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 24, 12
+ CONTROL "&Giu'", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 142, 38, 28, 12
+ DEFPUSHBUTTON "&Trova Prossimo", IDOK, 180, 5, 54, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annulla", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aiuto", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Cambia"
+FONT 8, "Helv"
+{
+ LTEXT "Tro&va:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Ca&mbia con:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Parola Intera", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Maiuscole/Minuscole", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "&Trova Prossimo", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Cambia", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cambia &Tutto", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annulla", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aiuto", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_Ja.rc b/reactos/lib/comdlg32/cdlg_Ja.rc
new file mode 100644 (file)
index 0000000..f41e2bf
--- /dev/null
@@ -0,0 +1,341 @@
+/*
+ * Copyright 2000 Junichi Kuchinishi
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\83t\83@\83C\83\8b\82ð\8aJ\82­"
+FONT 9, "MS UI Gothic"
+{
+ LTEXT "\83t\83@\83C\83\8b\96¼(&N):", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "\83f\83B\83\8c\83N\83g\83\8a(&D):", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "\83t\83@\83C\83\8b\82Ì\8eí\97Þ(&T):", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "\83h\83\89\83C\83u(&V):", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "·¬Ý¾Ù", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÍÙÌß(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "\8fã\8f\91\82«\8bÖ\8e~(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\96¼\91O\82ð\82Â\82¯\82Ä\95Û\91¶"
+FONT 9, "MS UI Gothic"
+{
+ LTEXT "\83t\83@\83C\83\8b\96¼(&N):", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "\83f\83B\83\8c\83N\83g\83\8a(&D):", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "\83t\83@\83C\83\8b\82Ì\8eí\97Þ(&T):", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "\83h\83\89\83C\83u(&V):", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "·¬Ý¾Ù", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÍÙÌß(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "\8fã\8f\91\82«\8bÖ\8e~(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\88ó\8dü"
+FONT 9, "MS UI Gothic"
+{
+ LTEXT "\8eg\97p\82·\82éÌßØÝÀ:", 1088, 6, 6, 40, 9
+ LTEXT "\92Ê\8fí\8eg\82¤ÌßØÝÀ", 1089, 60, 6, 150, 9
+ GROUPBOX "\88ó\8dü\94Í\88Í\82Ì\91I\91ð", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "\91S\83y\81[\83W(&A)", 1056, 16, 45, 60, 12
+ RADIOBUTTON "\91I\91ð\82µ\82½\95\94\95ª(&E)", 1057, 16, 60, 60, 12
+ RADIOBUTTON "\83y\81[\83W\8ew\92è(&P)", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "·¬Ý¾Ù", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÌßØÝÀ\82Ì\90Ý\92è(&S)", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "Íß°¼Þ\82©\82ç(&F):", 1090, 60, 80, 30, 9
+ LTEXT "Íß°¼Þ\82Ü\82Å(&T):", 1091, 120, 80, 30, 9
+ LTEXT "\88ó\8e\9a\95i\8e¿(&Q):", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "\83t\83@\83C\83\8b\82Ö\8fo\97Í(&L)", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\83v\83\8a\83\93\83^\82Ì\90Ý\92è"
+FONT 9, "MS UI Gothic"
+{
+ GROUPBOX "\83v\83\8a\83\93\83^\82Ì\91I\91ð", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "\92Ê\8fí\8eg\82¤\83v\83\8a\83\93\83^(&D)", 1056, 16, 20, 80, 12
+ LTEXT "(\92Ê\8fí\8eg\82¤\83v\83\8a\83\93\83^\82ª\90Ý\92è\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ)", 1088, 35, 35, 120, 9
+ RADIOBUTTON "\82»\82Ì\91¼\82Ì\83v\83\8a\83\93\83^(&P)", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "·¬Ý¾Ù", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "\88ó\8dü\82Ì\8cü\82«", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "\8fc(&R)", 1058, 50, 100, 40, 12
+ RADIOBUTTON "\89¡(&L)", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "\97p\8e\86\82Ì\91I\91ð", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "\97p\8e\86»²½Þ(&Z)", 1089, 130, 95, 30, 9
+ LTEXT "\8b\8b\8e\86\95û\96@(&S)", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\83t\83H\83\93\83g\82Ì\8ew\92è"
+FONT 9, "MS UI Gothic"
+{
+    LTEXT           "Ì«ÝÄ\96¼(&F):",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "½À²Ù(&Y):",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "»²½Þ(&S):",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "·¬Ý¾Ù",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "\95\8e\9a\8fü\82è(&A)", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "ÍÙÌß(&H)" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "\95\8e\9a\8fü\82è",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "\8eæ\82è\8fÁ\82µ\90ü(&K)", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "\89º\90ü(&U)", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "\90F(&C):", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "\83T\83\93\83v\83\8b",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\90F\82Ì\90Ý\92è"
+FONT 9, "MS UI Gothic"
+{
+ LTEXT "\8aî\96{\90F(&B):",   1088, 4,    4,  140, 10
+ LTEXT "\8dì\90¬\82µ\82½\90F(&C):",  1089, 4,   106, 140, 10
+ LTEXT "\90F |",  1090, 150, 151,  48, 10
+ LTEXT   "\90Ô(&R):", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "\97Î(&G):",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "\90Â(&B):",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "\90F\8d\87\82¢(&U):" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "\91N\82â\82©\82³(&S):" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "\96¾\82é\82³(&L):" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "OK",  1,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "·¬Ý¾Ù", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÍÙÌß(&H)", 1038,100,166, 44, 14
+ PUSHBUTTON "\92Ç\89Á(&A)",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "\90F\82Ì\8dì\90¬(&D)...", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\95\8e\9a\97ñ\82Ì\8c\9f\8dõ"
+FONT 9, "MS UI Gothic"
+{
+ LTEXT "\8c\9f\8dõ\82·\82é\95\8e\9a\97ñ(&N):", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "\92P\8cê\92P\88Ê\82Å\8c\9f\8dõ(&W)", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "\91å\95\8e\9a\82Æ\8f¬\95\8e\9a\82ð\8bæ\95Ê\82·\82é(&C)", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "\8c\9f\8dõ\82·\82é\95û\8cü", 1072, 107, 26, 68, 28
+ CONTROL "\8fã\82Ö\8cü\82©\82Á\82Ä(&U)", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "\89º\82Ö\8cü\82©\82Á\82Ä(&D)", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "\8e\9f\82ð\8c\9f\8dõ(&F)", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "·¬Ý¾Ù", 2, IDCANCEL, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÍÙÌß(&H)", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "\95\8e\9a\97ñ\82Ì\92u\8a·"
+FONT 9, "MS UI Gothic"
+{
+ LTEXT "\92u\8a·\91O\82Ì\95\8e\9a\97ñ(&N):", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "\92u\8a·\8cã\82Ì\95\8e\9a\97ñ(&P):", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "\92P\8cê\92P\88Ê\82Å\8c\9f\8dõ(&W)", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "\91å\95\8e\9a\82Æ\8f¬\95\8e\9a\82ð\8bæ\95Ê\82·\82é(&C)", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "\8e\9f\82ð\8c\9f\8dõ(&F)", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "\92u\8a·\82µ\82Ä\8e\9f\82É(&R)", psh1, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "\82·\82×\82Ä\82ð\92u\8a·(&A)", psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "·¬Ý¾Ù", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÍÙÌß(&H)", pshHelp, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "\88ó\8dü"
+FONT 9, "MS UI Gothic"
+{
+    DEFPUSHBUTTON   "OK",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "·¬Ý¾Ù", IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "ÍÙÌß(&H)",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "ÌßØÝÀ",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "̧²Ù\82Ö\8fo\97Í(&L)", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "ÌßÛÊßè(&P)",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "ÌßØÝÀ\96¼(&N):",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "\8fó\91Ô:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "\8eí\97Þ:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "\8fê\8f\8a:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "ºÒÝÄ:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "\88ó\8dü\95\94\90\94",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "\95\94\90\94(&C):",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "\95\94\92P\88Ê\82Å\88ó\8dü(&O)",       chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "\88ó\8dü\94Í\88Í",    grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "\82·\82×\82Ä(&A)",           rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "Íß°¼Þ\8ew\92è(&G)",         rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "\91I\91ð\82µ\82½\95\94\95ª(&S)",     rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "Íß°¼Þ\82©\82ç(&F)",         stc2,  52,124,  20,8
+    RTEXT           "Íß°¼Þ\82Ü\82Å(&T)",           stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "\88ó\8dü\82Ì\90Ý\92è"
+FONT 9, "MS UI Gothic"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "Cancel",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Network...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "ÌßØÝÀ",        grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "ÌßÛÊßè(&P)",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "ÌßØÝÀ\96¼(&N):",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "\8fó\91Ô:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "\8eí\97Þ:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "\8fê\8f\8a:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "ºÒÝÄ:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "\97p\8e\86",          grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "\97p\8e\86»²½Þ(&Z):",         stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "&Source:",       stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "\88ó\8dü\95û\8cü",    grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "\8fc(&O)",      rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "\89¡(&A)",     rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "̧²Ù\82ð\8aJ\82­"
+FONT 9, "MS UI Gothic"
+{
+    LTEXT      "̧²Ù\82Ì\8fê\8f\8a(&I):",IDC_LOOKINSTATIC,5,6,52,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,56,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 188, 2, 82, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "̧²Ù\96¼(&N):",IDC_FILENAMESTATIC,5,112,48,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,56,110,153,12,ES_AUTOHSCROLL
+
+    LTEXT      "̧²Ù\82Ì\8eí\97Þ(&T):",IDC_FILETYPESTATIC,5,128,52,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,56,126,153,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "\93Ç\82Ý\8eæ\82è\90ê\97p̧²Ù\82Æ\82µ\82Ä\8aJ\82­(&R)",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON      "\8aJ\82­(&O)",              IDOK,222,110,50,14
+    PUSHBUTTON         "·¬Ý¾Ù",                 IDCANCEL,222,128,50,14
+    PUSHBUTTON         "ÍÙÌß(&H)",              pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "&About FolderPicker Test"
+    IDS_DOCUMENTFOLDERS     "Document Folders"
+    IDS_PERSONAL            "My Documents"
+    IDS_FAVORITES           "\82¨\8bC\82É\93ü\82è"
+    IDS_PATH                "System Path"
+    IDS_DESKTOP             "ÃÞ½¸Ä¯Ìß"
+    IDS_FONTS               "Fonts"
+    IDS_MYCOMPUTER          "ϲ ºÝËß­°À"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "System Folders"
+    IDS_LOCALHARDRIVES      "Local Hard Drives"
+    IDS_FILENOTFOUND        "̧²Ù\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ\81B"
+    IDS_VERIFYFILE          "̧²Ù\96¼\82ð\8am\94F\82µ\82Ä\82­\82¾\82³\82¢\81B"
+    IDS_CREATEFILE          "\82±\82Ì̧²Ù\82Í\91\8dÝ\82µ\82Ü\82¹\82ñ\81B\n\8dì\90¬\82µ\82Ü\82·\82©?"
+}
diff --git a/reactos/lib/comdlg32/cdlg_Ko.rc b/reactos/lib/comdlg32/cdlg_Ko.rc
new file mode 100644 (file)
index 0000000..f795b17
--- /dev/null
@@ -0,0 +1,297 @@
+/*
+ * Copyright 1996 Bang Jun Young
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¿­±â"
+FONT 9, "Helv"
+{
+ LTEXT "ÆÄÀÏ À̸§(&N):", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "µð·ºÅ丮(&D):", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "ÆÄÀÏ Çü½Ä(&T):", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "µå¶óÀ̺ê(&V):", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "¿­±â", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ãë¼Ò", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "µµ¿ò¸»(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Àбâ Àü¿ë(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "´Ù¸¥ À̸§À¸·Î ÀúÀå ..."
+FONT 9, "Helv"
+{
+ LTEXT "ÆÄÀÏ À̸§(&N):", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "µð·ºÅ丮(&D):", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "ÆÄÀÏ Çü½Ä(&T):", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "µå¶óÀ̺ê(&V):", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "ÀúÀå", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ãë¼Ò", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "µµ¿ò¸»(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Àбâ Àü¿ë(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Àμâ"
+FONT 9, "Helv"
+{
+ LTEXT "Àμâ±â:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Àμ⠹üÀ§", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "¸ðµÎ(&A)", 1056, 16, 45, 60, 12
+ RADIOBUTTON "¼±ÅÃ(&E)", 1057, 16, 60, 60, 12
+ RADIOBUTTON "ÂÊ(&P)", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Àμâ", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ãë¼Ò", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "¼³Á¤(&S)", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "½ÃÀÛ(&F):", 1090, 60, 80, 30, 9
+ LTEXT "³¡(&T):", 1091, 120, 80, 30, 9
+ LTEXT "Àμâ Ç°Áú(&Q):", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "ÆÄÀϷΠÀμâ(&L)", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Àμ⠼³Á¤"
+FONT 9, "Helv"
+{
+ GROUPBOX "Àμâ±â", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "±âº» Àμâ±â(&D)", 1056, 16, 20, 80, 12
+ LTEXT "[¾øÀ½]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "ÁöÁ¤µÈ Àμâ±â(&P)", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "È®ÀÎ", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ãë¼Ò", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "¼³Á¤(&S)", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "¹æÇâ", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "¼¼·Î(&R)", 1058, 50, 100, 40, 12
+ RADIOBUTTON "°¡·Î(&L)", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Á¾ÀÌ", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "Å©±â(&Z)", 1089, 130, 95, 30, 9
+ LTEXT "¹æ½Ä(&S)", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Print"
+FONT 9, "Helv"
+{
+    DEFPUSHBUTTON   "OK",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Cancel", IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "&Help",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "Printer",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "Print to fi&le", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "&Properties",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Name:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Type:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Where:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Comment:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Copies",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "Number of &copies:",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "C&ollate",       chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Print range",    grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "&All",           rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "Pa&ges",         rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "&Selection",     rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&from:",         stc2,  52,124,  20,8
+    RTEXT           "&to:",           stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Print Setup"
+FONT 9, "Helv"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "Cancel",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Network...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "Printer",        grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "&Properties",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Name:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Type:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Where:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Comment:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Paper",          grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "Si&ze:",         stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "&Source:",       stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "Orientation",    grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "P&ortrait",      rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "L&andscape",     rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+
+CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "±ÛÀÚü"
+FONT 9, "Helv"
+{
+ LTEXT "±ÛÀÚü:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ DEFPUSHBUTTON "È®ÀÎ", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ãë¼Ò", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "»ö"
+FONT 9, "Helv"
+{
+ LTEXT "±âº»»ö(&B):",   1088, 4,    4,  140, 10
+ LTEXT "»ç¿ëÀÚ»ö(&C):",  1089, 4,   106, 140, 10
+ LTEXT "È¥»ö |  ´Ü»ö(&i)",  1090, 150, 151,  48, 10
+ LTEXT  "»¡°­(&R):", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "ÃÊ·Ï(&G):",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "ÆĶû(&B):",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "»ö»ó(&H):" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "äµµ(&S):" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "¸íµµ(&L):" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "È®ÀÎ",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ãë¼Ò", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "µµ¿ò¸»", 1038,100,166, 44, 14
+ PUSHBUTTON "»ç¿ëÀÚ»ö¿¡ Ãß°¡(&A)",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "»ç¿ëÀÚ»ö Á¤ÀÇ(&D) >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 280, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ã±â"
+FONT 9, "Helv"
+{
+ LTEXT "ãÀ» ¹®ÀÚ¿­(&N):", -1, 4, 8, 50, 8
+ EDITTEXT 1152, 60, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "´Ü¾î¸¸(&W)", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "´ë/¼Ò¹®ÀÚ ¹× ÀüÀÚ/¹ÝÀÚ ±¸ºÐ(&C)", 1041, 4, 38, 112, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "ãÀ» ¹æÇâ", 1072, 120, 26, 90, 28
+ CONTROL "À§·Î(&U)", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 125, 38, 40, 12
+ CONTROL "¾Æ·¡·Î(&D)", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 164, 38, 45, 12
+ DEFPUSHBUTTON "´ÙÀ½ Ã£±â(&F)", IDOK, 220, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ãë¼Ò", IDCANCEL, 220, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "µµ¿ò¸»(&H)", 1038, 220, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "¹Ù²Ù±â"
+FONT 9, "Helv"
+{
+ LTEXT "ãÀ» ¹®ÀÚ¿­(&N):", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "¹Ù²Ü ¹®ÀÚ¿­(&P):", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "´Ü¾î¸¸(&W)", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "´ë¼Ò¹®ÀÚ ±¸º°(&C)", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "´ÙÀ½ Ã£±â(&F)", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "¹Ù²Ù±â(&R)", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "¸ðµÎ ¹Ù²Ù±â(&A)", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ãë¼Ò", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "µµ¿ò¸»(&H)", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "¿­±â"
+FONT 9, "Helv"
+{
+    LTEXT       "À§Ä¡(&I)",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX    IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT       "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX     IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE 
+
+    LTEXT       "ÆÄÀÏ À̸§(&N):",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT    IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT       "ÆÄÀÏ Çü½Ä(&T):",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+    COMBOBOX    IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL     "Àбâ Àü¿ë(&R)",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON       "¿­±â(&O)",                 IDOK,222,110,50,14
+    PUSHBUTTON          "Ãë¼Ò",                IDCANCEL,222,128,50,14
+    PUSHBUTTON          "µµ¿ò¸»(&H)",                 pshHelp,222,145,50,14
+}
diff --git a/reactos/lib/comdlg32/cdlg_Nl.rc b/reactos/lib/comdlg32/cdlg_Nl.rc
new file mode 100644 (file)
index 0000000..9c8e29f
--- /dev/null
@@ -0,0 +1,323 @@
+/*
+ * Copyright 1999 Klaas van Gend
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Bestand openen"
+FONT 8, "Helv"
+{
+ LTEXT "Bestands&naam:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Zoeken in:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Bestands&typen:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "&Openen", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuleren", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Alleen &Lezen", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Opslaan als ..."
+FONT 8, "Helv"
+{
+ LTEXT "Bestands&naam:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Zoeken in:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Bestands&typen:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "&Opslaan als", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuleren", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Alleen &Lezen", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Afdrukken"
+FONT 8, "Helv"
+{
+ LTEXT "Printer:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Afdrukbereik", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Alles", 1056, 16, 45, 60, 12
+ RADIOBUTTON "Sele&ctie", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Pagina's", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuleren", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Eigenschappen", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&van:", 1090, 60, 80, 30, 9
+ LTEXT "&t/m:", 1091, 120, 80, 30, 9
+ LTEXT "Afdruk&kwaliteit:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Naar &bestand", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Condensed", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Afdrukeigenschappen"
+FONT 8, "Helv"
+{
+ GROUPBOX "Printer", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Default Printer", 1056, 16, 20, 80, 12
+ LTEXT "[geen]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Specifieke &Printer", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuleren", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Afdrukstand", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Staand", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Liggend", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papier", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Formaat", 1089, 130, 95, 30, 9
+ LTEXT "&Bron", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Lettertype"
+FONT 8, "Helv"
+{
+    LTEXT           "&Lettertype:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Teken&stijl:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Grootte:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Annuleren",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Toepassen", 1026,218,40,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Help" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP
+    GROUPBOX        "Effecten",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "&Doorhalen", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "&Onderstrepen", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Kleur:", 1091 ,6,110,30,9
+    COMBOBOX        cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Voorbeeld",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Schr&ift:",stc7 ,98,114,40,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Kleur"
+FONT 8, "Helv"
+{
+ LTEXT "&Basiskleuren:",   1088, 4,    4,  140, 10
+ LTEXT "&Aangepaste kleuren:",  1089, 4,   106, 140, 10
+ LTEXT "Kleur |  &Effen",  1090, 157, 151,  48, 10
+ LTEXT   "&Rood:", 726 /*1094*/,       256,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Groen:",727/*1095*/,        256,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "Blau&w:",728 /*1096*/,       256,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "Ti&nt:" ,723 /*1091*/,        196,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Intensiteit:" ,724 /*1092*/, 196,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Helderheid:" ,725 /*1093*/,  196,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "OK",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuleren", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Help", 1038,100,166, 44, 14
+ PUSHBUTTON "&Toevoegen aan Aangepaste kleuren",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Definieer Aangepaste kleuren >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tekst zoeken"
+FONT 8, "Helv"
+{
+ LTEXT "&Zoek naar:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Heel &woord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Gelijke &hoofd-/kleine letters", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Zoekrichting", 1072, 107, 26, 68, 28
+ CONTROL "&Omhoog", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "Om&laag", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "&Volgende zoeken", IDOK, 182,  5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "Annuleren", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", pshHelp    , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tekst vervangen"
+FONT 8, "Helv"
+{
+ LTEXT "&Zoek naar:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Vervang &door:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Heel &woord", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Gelijke &hoofd-/kleine letters", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "Volgende zoeken", IDOK, 174,  4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "Ve&rvangen", psh1  , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Alles vervangen", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Annuleren", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", pshHelp    , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Print32"
+FONT 8, "Helv"
+{
+    DEFPUSHBUTTON   "OK",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Cancel", IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "&Help",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "Printer",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "Naar &bestand",  chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "&Eigenschappen", psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Naam:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Type:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Waar:",          stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Opmerking:",     stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Aantal ",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "Aantal e&xemplaren:",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "&Sorteren",      chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Afdrukbereik",   grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "&Alle xx",       rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "&Pagina's",      rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "Sele&ctie",      rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&van:",          stc2,  52,124,  20,8
+    RTEXT           "&t/m:",           stc3, 100,124,  16,8
+}
+
+
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE       "Print"
+
+    PD32_VALUE_UREADABLE                  "Onleesbare ingave"
+    PD32_INVALID_PAGE_RANGE "Deze waarde ligt niet binnen het bereik\n\
+Voert u s.v.p. een waarde tussen %d en %d in."
+    PD32_FROM_NOT_ABOVE_TO                "De VAN ingave kan niet groter zijn \
+dan de TO waarde"
+    PD32_MARGINS_OVERLAP                  "De marges overlappen of vallen \
+buiten het papier.\nVoer s.v.p. nieuwe marges in."
+    PD32_NR_OF_COPIES_EMPTY               "Het aantal invoerveld kan niet leeg \
+zijn."
+    PD32_TOO_LARGE_COPIES                 "Zoveel exemplaren kan de printer \
+niet in een keer aan, het maximum is %d"
+    PD32_PRINT_ERROR                      "Er ontstond een printer fout."
+    PD32_NO_DEFAULT_PRINTER               "Er is geen default printer"
+    PD32_CANT_FIND_PRINTER                "De printer werd niet gevonden"
+    PD32_OUT_OF_MEMORY                    "Er was onvoldoende geheugen \
+beschikbaar"
+    PD32_GENERIC_ERROR                    "Er onstond een niet nader \
+gespecifieerde fout"
+    PD32_DRIVER_UNKNOWN                   "De printer driver is onbekend"
+
+    PD32_DEFAULT_PRINTER                  "Default Printer, "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE         "Er staan %d documenten in de \
+wachtrij"
+    PD32_PRINT_ALL_X_PAGES                "&Alle %d pagina's"
+    PD32_MARGINS_IN_INCHES                "Marges [inch]"
+    PD32_MARGINS_IN_MILIMETERS            "Marges [mm]"
+    PD32_MILIMETERS                       "mm"
+
+    PD32_PRINTER_STATUS_READY             "Klaar"
+    PD32_PRINTER_STATUS_PAUSED            "Gepauseerd, "
+    PD32_PRINTER_STATUS_ERROR             "Fout, "
+    PD32_PRINTER_STATUS_PENDING_DELETION  "Bezig met verwijderen, "
+    PD32_PRINTER_STATUS_PAPER_JAM         "Paper jam, "
+    PD32_PRINTER_STATUS_PAPER_OUT         "Papier is op, "
+    PD32_PRINTER_STATUS_MANUAL_FEED       "Voer s.v.p. met de hand papier in, "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM     "Papier probleem, "
+    PD32_PRINTER_STATUS_OFFLINE           "Printer offline, "
+    PD32_PRINTER_STATUS_IO_ACTIVE         "I/O Actief, "
+    PD32_PRINTER_STATUS_BUSY              "Druk bezig, "
+    PD32_PRINTER_STATUS_PRINTING          "Aan het printen, "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "De uitvoerlade is vol, "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE     "Niet aanwezig, "
+    PD32_PRINTER_STATUS_WAITING           "Aan het wachten, "
+    PD32_PRINTER_STATUS_PROCESSING        "Aan het Verwerken, "
+    PD32_PRINTER_STATUS_INITIALIZING      "Aan het opstarten, "
+    PD32_PRINTER_STATUS_WARMING_UP        "Aan het opwarmen, "
+    PD32_PRINTER_STATUS_TONER_LOW         "Er is nog maar weinig toner, "
+    PD32_PRINTER_STATUS_NO_TONER          "Toner is op, "
+    PD32_PRINTER_STATUS_PAGE_PUNT         "Storing in papieruitvoer, "
+    PD32_PRINTER_STATUS_USER_INTERVENTION "Onderbroken door een gebruiker, "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Onvoldoende geheugen beschikbaar, "
+    PD32_PRINTER_STATUS_DOOR_OPEN         "De printer staat is open, "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Print server onbekend; "
+    PD32_PRINTER_STATUS_POWER_SAVE        "Power safe mode; "
+}
diff --git a/reactos/lib/comdlg32/cdlg_No.rc b/reactos/lib/comdlg32/cdlg_No.rc
new file mode 100644 (file)
index 0000000..2c54c2b
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * Copyright 1994 Dag Asheim
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_NORWEGIAN, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Åpne"
+FONT 8, "Helv"
+{
+ LTEXT "&Filnavn:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Kataloger:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Liste over filer av &type:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Kataloger:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Åpne", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjelp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Lagre som ..."
+FONT 8, "Helv"
+{
+ LTEXT "&Filnavn:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Kataloger:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Liste over filer av &type:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Kataloger:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Lagre som", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjelp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Skriv"
+FONT 8, "Helv"
+{
+ LTEXT "Skriver:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Skriv del", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Alle", 1056, 16, 45, 60, 12
+ RADIOBUTTON "&Markert", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Sider", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Skriv", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Oppsett", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Fra:", 1090, 60, 80, 30, 9
+ LTEXT "&Til:", 1091, 120, 80, 30, 9
+ LTEXT "&Utskriftskvalitet:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "&Skriv til fil", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Sammentrykket", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Skriveoppsett"
+FONT 8, "Helv"
+{
+ GROUPBOX "Skriver", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Standardskriver", 1056, 16, 20, 80, 12
+ LTEXT "[ingen]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Spesifikk &skriver", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Oppsett", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientering", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Portrett", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Landskap", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papir", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Størrelse", 1089, 130, 95, 30, 9
+ LTEXT "&Kilde", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Font"
+FONT 8, "Helv"
+{
+ LTEXT "Font:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Farge"
+FONT 8, "Helv"
+{
+ LTEXT "&Grunnleggende farger:", 1088, 6, 6, 40, 9
+ LTEXT "&Egendefinerte farger:", 1089, 6, 126, 40, 9
+ LTEXT "&Ensfarget", 1090, 100, 146, 40, 9
+ LTEXT "&Int:", 1091, 150, 126, 40, 9
+ LTEXT "&Met:", 1092, 150, 146, 40, 9
+ LTEXT "&Lum:", 1093, 150, 166, 40, 9
+ LTEXT "&Rød:", 1094, 150, 126, 40, 9
+ LTEXT "&Grønn:", 1095, 150, 146, 40, 9
+ LTEXT "&Blå:", 1096, 150, 166, 40, 9
+ DEFPUSHBUTTON "Ok", IDOK, 6, 182, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Legg til egendefinert farge", 1024, 120, 182, 100, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Fjern egendefinerte farger", 1025, 6, 164, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 76, 182, 56, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Finn"
+FONT 8, "Helv"
+{
+ LTEXT "&Finn hva:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Kun hele ord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skill på store/små bokstaver", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Retning", 1072, 107, 26, 68, 28
+ CONTROL "&Opp", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Ned", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+ DEFPUSHBUTTON "&Finn neste", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjelp", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Bytt"
+FONT 8, "Helv"
+{
+ LTEXT "&Finn hva:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "&Bytt med:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Kun hele ord", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skill på store/små bokstaver", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ DEFPUSHBUTTON "&Finn neste", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Bytt", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Bytt alt", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjelp", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_Pl.rc b/reactos/lib/comdlg32/cdlg_Pl.rc
new file mode 100644 (file)
index 0000000..f0a9900
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * Copyright 1997 Mikolaj Zalewski
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
+
+/* LTEXT "Wyswietl pliki &typu:", 1089, 6, 104, 90, 9 */
+OPEN_FILE DIALOG 36, 24, 279, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Otwórz"
+FONT 8, "Helv"
+BEGIN
+       LTEXT "&Nazwa pliku:", 1090, 6, 6, 76, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+       LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+       LTEXT "&Katalogi:", -1, 110, 6, 92, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1088, "STATIC", SS_NOPREFIX | WS_GROUP, 110, 18, 92, 9
+       LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+       LTEXT "Wy\9cwietl pliki &typu:", 1089, 6, 104, 90, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 114, 90, 36
+       LTEXT "&Stacje dysków:", 1091, 110, 104, 92, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 110, 114, 92, 68
+       CONTROL "Otwórz", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 212, 6, 56, 14
+       CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 212, 24, 56, 14
+       CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 212, 46, 56, 14
+       CONTROL "Tylko do odczytu", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 208, 68, 69, 12
+END
+/* PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 */
+SAVE_FILE DIALOG 36, 24, 278, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Zapisz jako"
+FONT 8, "Helv"
+BEGIN
+       LTEXT "&Nazwa pliku:", 1090, 6, 6, 76, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+       LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+       LTEXT "&Katalogi:", -1, 110, 6, 92, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1088, "STATIC", SS_NOPREFIX | WS_GROUP, 110, 18, 92, 9
+       LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+       LTEXT "Pokazuj pliki &typu:", 1089, 6, 104, 90, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 114, 90, 36
+       LTEXT "&Stacje dysków:", 1091, 110, 104, 92, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 110, 114, 92, 68
+       CONTROL "Ok", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 213, 6, 56, 14
+       CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 213, 24, 56, 14
+       CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 213, 45, 56, 14
+       CONTROL "&Tylko do odczytu", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 208, 68, 68, 12
+END
+/* DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP */
+PRINT DIALOG 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Drukuj"
+FONT 8, "Helv"
+BEGIN
+       LTEXT "&Drukarka:", 1088, 6, 6, 40, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       LTEXT "", 1089, 60, 6, 150, 9
+       GROUPBOX "Drukuj", 1072, 6, 30, 160, 65, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       RADIOBUTTON "&Wszystko", 1056, 16, 45, 60, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       RADIOBUTTON "W&ybór", 1057, 16, 60, 60, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       RADIOBUTTON "&Strony", 1058, 16, 75, 60, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       CONTROL "Drukuj", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 6, 56, 14
+       CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 24, 56, 14
+       CONTROL "&Ustawienia", 1024, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 46, 56, 14
+       LTEXT "&Od:", 1090, 60, 78, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       LTEXT "&Do:", 1091, 120, 78, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       LTEXT "Jako\9cæ &wydruku:", 1092, 6, 100, 76, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 71, 98, 92, 68
+       CONTROL "Drukuj do Pli&ku", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 14, 115, 95, 12
+       CONTROL "Sortuj kopie", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 182, 102, 59, 12
+END
+/*    PUSHBUTTON      "Anuluj",IDCANCEL,218,23,40,14,WS_GROUP */
+PRINT_SETUP DIALOG 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Print Setup"
+FONT 8, "Helv"
+BEGIN
+       GROUPBOX "Drukarka", 1072, 6, 10, 180, 65, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       RADIOBUTTON "&Drukarka domy\9clna", 1056, 16, 20, 80, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       LTEXT "[none]", 1088, 35, 35, 120, 9
+       RADIOBUTTON "&Inna drukarka", 1057, 16, 50, 80, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 35, 65, 149, 68
+       CONTROL "Ok", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 206, 6, 56, 14
+       CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 24, 56, 14
+       CONTROL "&Opcje", 1024, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 206, 46, 56, 14
+       GROUPBOX "Orientacja", 1073, 6, 85, 100, 50, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       RADIOBUTTON "W p&ionie", 1058, 50, 100, 40, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       RADIOBUTTON "W po&ziomie", 1059, 50, 115, 40, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       ICON "LANDSCAP", 1097, 10, 95, 32, 32
+       ICON "PORTRAIT", 1098, 10, 95, 32, 32
+       GROUPBOX "Papier", 1074, 120, 85, 180, 50, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+       LTEXT "&Wielko\9cæ", 1089, 130, 95, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       LTEXT "&\8fród³o", 1090, 130, 110, 30, 9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 155, 95, 92, 68
+       CONTROL "", 1138, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 155, 110, 92, 68
+END
+/* CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 */
+CHOOSE_FONT DIALOG 13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Font"
+FONT 8, "Helv"
+BEGIN
+       LTEXT "&Czcionka:", 1088, 6,3,40,9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1136, "COMBOBOX", CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE, 6,13,94,54
+       LTEXT "St&yl:", 1089, 108,3,44,9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1137, "COMBOBOX", CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE, 108,13,64,54
+       LTEXT "&Rozmiar:", 1090, 179,3,30,9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1138, "COMBOBOX", CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT, 179,13,32,54
+       CONTROL "OK", IDOK, "BUTTON", WS_GROUP, 218,6,40,14
+       CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 218,23,40,14
+       CONTROL "&Zastosuj", 1026, "BUTTON", WS_GROUP, 218,40,40,14
+       CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 218,57,40,14
+       CONTROL "Efekty specialne", 1072, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 6,72,84,34
+       CONTROL "Prz&ekre\9clona", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 82, 58, 10
+       CONTROL "P&odkre\9clona", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10,94,50,10
+       LTEXT "&Kolor:", 1091, 6,110,30,9, WS_CHILD | WS_VISIBLE | WS_GROUP
+       CONTROL "", 1139, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6,120,84,100
+/*     CONTROL "Przyk³ad", 1073, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 98,72,160,49
+       CONTROL "AaBbYyZz\xB3", stc5, "STATIC", SS_NOPREFIX | NOT WS_VISIBLE, 104,81,149,37 */
+    GROUPBOX        "Przyk³ad",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz\xB3",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+END
+/* PUSHBUTTON "&Replace", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ * PUSHBUTTON "Replace &All", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ * PUSHBUTTON "Cancel", 2, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ * PUSHBUTTON "&Help", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+ *}
+ */
+FINDDLGORD DIALOG 34, 24, 251, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Znajd\9f"
+FONT 8, "Helv"
+BEGIN
+       LTEXT "&Znajd\9f:", -1, 4, 8, 42, 8, WS_CHILD | WS_VISIBLE | WS_GROUP
+       EDITTEXT 1152, 46, 7, 134, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+       CONTROL "Uwzglêdnij tylko ca³e wyrazy", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 4, 26, 107, 12
+       CONTROL "&Uwzglêdniaj wielko\9cæ liter", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 42, 107, 12
+       GROUPBOX "Kierunek", 1072, 113, 26, 68, 28
+       CONTROL "W &g\xF3r\xEA", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 117, 38, 20, 12
+       CONTROL "W &d\xF3l", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 144, 38, 30, 12
+       CONTROL "&Znajd\9f nastêpny", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 187, 5, 61, 14
+       CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 187, 23, 61, 14
+       CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 187, 45, 61, 14
+END
+REPLACEDLGORD DIALOG 36, 24, 245, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Zamieñ"
+FONT 8, "Helv"
+BEGIN
+       LTEXT "&Znajd\9f:", -1, 4, 9, 48, 8, WS_CHILD | WS_VISIBLE | WS_GROUP
+       EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+       LTEXT "Zanieñ &na:", -1, 4, 26, 48, 8, WS_CHILD | WS_VISIBLE | WS_GROUP
+       EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+       CONTROL "Uwzglêdnij &tylko ca³e wyrazy", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 5, 46, 104, 12
+       CONTROL "&Uwzglêdnij wielko\9cæ liter", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 62, 96, 12
+       CONTROL "Znajd\9f nastêpny", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 4, 67, 14
+       CONTROL "&Zamieñ", 1024, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 21, 68, 14
+       CONTROL "Zamieñ &wszystkie", 1025, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 38, 68, 14
+       CONTROL "Anuluj", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 56, 68, 14
+       CONTROL "&Pomoc", 1038, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 174, 75, 68, 14
+END
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Color"
+FONT 8, "Helv"
+{
+ LTEXT "&Podstawowe kolory:",   1088, 4,    4,  140, 10
+ LTEXT "Dowolne &kolory:",  1089, 4,   106, 140, 10
+ LTEXT "Kolor |  Sol&id",  1090, 150, 151,  48, 10
+ LTEXT   "&Czerwony:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Zielony:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Niebieski:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Hue:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Ok",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Anuluj", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Pomoc", 1038,100,166, 44, 14
+ PUSHBUTTON "&Dodaj do dowolnych",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Z&definiuj Kolor >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
diff --git a/reactos/lib/comdlg32/cdlg_Pt.rc b/reactos/lib/comdlg32/cdlg_Pt.rc
new file mode 100644 (file)
index 0000000..4db99f6
--- /dev/null
@@ -0,0 +1,461 @@
+/*
+ * Copyright 1997 Ricardo R. Massaro
+ * Copyright 2003 Marcelo Duarte
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Abrir"
+FONT 8, "Helv"
+{
+ LTEXT "Nome do &Arquivo:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Diretórios:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Listar Arquivos do &Tipo:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Abrir", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&juda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Somente Leitura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Salvar Como ..."
+FONT 8, "Helv"
+{
+ LTEXT "Nome do &Arquivo:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Diretórios:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Listar Arquivos do &Tipo:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Dri&ves:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Salvar &Como", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ajuda", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Somente Leitura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Imprimir"
+FONT 8, "Helv"
+{
+ LTEXT "Impressora:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Faixa de Impressão", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Tudo", 1056, 16, 45, 60, 12
+ RADIOBUTTON "S&eleção", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Páginas", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Imprimir", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Configurar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&De:", 1090, 60, 80, 30, 9
+ LTEXT "&Ate:", 1091, 120, 80, 30, 9
+ LTEXT "&Qualidade de Impressão:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Imprimir para Arquivo", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "C&ondensado", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Configurações de Impressão"
+FONT 8, "Helv"
+{
+ GROUPBOX "Impressora", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Impressora Padrão", 1056, 16, 20, 80, 12
+ LTEXT "[none]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Impressora &Específica", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Configurar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientação", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Retrato", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Paisagem", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papel", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Tamanho", 1089, 130, 95, 30, 9
+ LTEXT "&Fonte de Alimentação", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Fonte"
+FONT 8, "Helv"
+{
+    LTEXT           "&Fonte:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Estilo da Fonte:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Tamanho:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Cancelar",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "&Aplicar", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "A&juda" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "Efeitos",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "&Riscado", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "&Sublinhado", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Cor:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Amostra",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Cor"
+FONT 8, "Helv"
+{
+ LTEXT "Cores &Básicas:",   1088, 4,    4,  140, 10
+ LTEXT "&Cores do Usuário:",  1089, 4,   106, 140, 10
+ LTEXT "Colorido|Sólid&o",  1090, 150, 151,  48, 10
+ LTEXT   "Ver&melho:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Verde:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "A&zul:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "Mat&iz:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "Sa&t:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "OK",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Aj&uda", 1038,100,166, 44, 14
+ PUSHBUTTON "&Adicionar Cor Personalizada",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Definir Cores Personalizadas >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&o",713,300,200,4,14   /* just a dummy:  'o' is  like  &o  in "solid&o"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Procurar"
+FONT 8, "Helv"
+{
+ LTEXT "&Procurar:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Palavra &Inteira", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Maiúsculas/minusculas", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Direção", 1072, 107, 26, 68, 28
+ CONTROL "A&cima", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "A&baixo", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "Procurar a Pró&xima", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&juda", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Substituir"
+FONT 8, "Helv"
+{
+ LTEXT "&Procurar:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Substituir Pa&ra:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Palavra &inteira", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Maiúsculas/minúsculas", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "Procurar a Pró&xima", IDOK,    174,  4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "&Substituir", psh1,                       174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Substituir &Todas", psh2,         174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancelar", IDCANCEL,              174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&juda", pshHelp,                 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Imprimir"
+FONT 8, "Helv"
+{
+    DEFPUSHBUTTON   "OK",      IDOK,     180,164, 50,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON     "Cancelar", IDCANCEL, 232,164, 50,14, WS_GROUP
+    PUSHBUTTON      "&Ajuda",   pshHelp,  50, 161, 50,14, WS_GROUP
+
+    GROUPBOX        "Impressora",              grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "Imprimir em arqui&vo",    chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "Propri&edades",           psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Nome:",                  stc6,  16, 20,  36,8
+    COMBOBOX                                   cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Status:",                 stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",             stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Tipo:",                   stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",              stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Onde:",                   stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location",          stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Comentário:",             stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",            stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Cópias",                  grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "Número de &cópias:",      stc5, 168,108,  68, 8
+    ICON            "",                                ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "&Agrupar",                        chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                                   edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Faixa de impressão",      grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "&Todos",                  rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "Pá&ginas",                        rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "Seleção",                 rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                                   edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                                   edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&de:",                    stc2,  52,124,  20,8
+    RTEXT           "&até:",                   stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Configurações de Impressão"
+FONT 8, "Helv"
+BEGIN
+    DEFPUSHBUTTON   "OK",      IDOK,180,156,50,14,WS_GROUP
+    PUSHBUTTON      "Cancelar",        IDCANCEL,232,156,50,14
+/*    PUSHBUTTON      "Rede...",       psh5, 284,156,50,14 */
+
+    GROUPBOX   "Impressora",     grp4,   8,   4, 272,  84, WS_GROUP
+    PUSHBUTTON "&Propriedades",  psh2, 212,  17,  60,  14, WS_GROUP
+    LTEXT      "&Nome:",         stc6,  16,  20,  36,   8
+    COMBOBOX                     cmb1,  52,  18, 152, 152, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT      "Status:",        stc8,  16,  36,  36,  10, SS_NOPREFIX
+    LTEXT      "Dummy State",    stc12, 52,  36, 224,  10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT      "Tipo:",          stc7,  16,  48,  36,  10, SS_NOPREFIX
+    LTEXT      "Dummy Type",     stc11, 52,  48, 224,  10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT      "Onde:",          stc10, 16,  60,  36,  10, SS_NOPREFIX
+    LTEXT      "Dummy Location", stc14, 52,  60, 224,  10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT      "Comentário",     stc9,  16,  72,  36,  10, SS_NOPREFIX
+    LTEXT      "Dummy Remark",   stc13, 52,  72, 224,  10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX   "Papel",          grp2,   8,  92, 164,  56, WS_GROUP
+    LTEXT       "&Tamanho:",      stc2,  16, 108,  36,   8
+    COMBOBOX                      cmb2,  52, 106, 112, 112, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT      "&Origem:",       stc3,  16, 128,  36,   8
+    COMBOBOX                      cmb3,  52, 126, 112, 112, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX   "Orientação",     grp1, 180,  92, 100,  56, WS_GROUP
+    ICON       "",               ico1, 195, 112,  18,  20, WS_GROUP
+    CONTROL     "&Retrato",       rad1, "Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 224, 106, 52, 12
+    CONTROL    "&Paisagem",      rad2, "Button", BS_AUTORADIOBUTTON, 224, 126, 52, 12
+END
+
+PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Configurações de Página"
+FONT 8, "Helv"
+BEGIN
+  CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80,  SS_WHITERECT
+  CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT
+  CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4,  SS_GRAYRECT
+  GROUPBOX "Papel", grp2, 8, 96, 224, 56, BS_GROUPBOX
+  LTEXT "&Tamanho:", stc2, 16, 112, 36, 8
+  COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  LTEXT "&Bandeja:", stc3, 16, 132, 36, 8
+  COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  GROUPBOX "Orientação", grp1, 8, 156, 64, 56, BS_GROUPBOX
+  AUTORADIOBUTTON "&Retrato", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON
+  AUTORADIOBUTTON "&Paisagem", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON
+  GROUPBOX "Bordas", grp4, 80, 156, 152, 56, BS_GROUPBOX
+  LTEXT "&Esquerda:", stc15, 88, 172, 21, 8
+  EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Direita:", stc16, 159, 172, 27, 8
+  EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Superior:", stc17, 88, 192, 21, 8
+  EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Inferior:", stc18, 159, 192, 23, 8
+  EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON
+  PUSHBUTTON "Cancelar", IDCANCEL, 126, 220, 50, 14
+  PUSHBUTTON "Im&pressora...", psh3, 184, 220, 50, 14
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "Abrir"
+FONT 8, "Helv"
+{
+    LTEXT      "&Examinar:",IDC_LOOKINSTATIC,5,6,31,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,40,3,134,300,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 172, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "&Nome do arquivo:",IDC_FILENAMESTATIC,5,112,48,16, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,54,111,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "Arquivos do &tipo",IDC_FILETYPESTATIC,5,131,48,16, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,54,129,155,100,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "Abrir como &somente-leitura",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,148,74,10
+
+    DEFPUSHBUTTON      "&Abrir",               IDOK,222,110,50,14
+    PUSHBUTTON         "Cancelar",             IDCANCEL,222,128,50,14
+    PUSHBUTTON         "&Ajuda",               pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX       "&Sobre FolderPicker Test"
+    IDS_DOCUMENTFOLDERS        "Pastas de Documentos"
+    IDS_PERSONAL       "Meus Documentos"
+    IDS_FAVORITES      "Favoritos"
+    IDS_PATH           "Caminho do Sistema"
+    IDS_DESKTOP                "Área de Trabalho"
+    IDS_FONTS          "Fontes"
+    IDS_MYCOMPUTER     "Meu Computador"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS  "Pastas do Sistema"
+    IDS_LOCALHARDRIVES "Discos Rígidos Locais"
+    IDS_FILENOTFOUND   "Arquivo não encontrado"
+    IDS_VERIFYFILE     "Por favor verifique se foi fornecido o nome correto do arquivo"
+    IDS_CREATEFILE     "Arquivo não existe\nVocê gostaria de cria-lo"
+    IDS_OVERWRITEFILE       "Arquivo já existe.\nGostaria de substituí-lo?"
+    IDS_INVALID_FILENAME_TITLE "Caracter(es) inválidos no caminho"
+    IDS_INVALID_FILENAME    "Um nome de arquivo não pode conter quaisquer dos seguintes caracteres: \n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Caminho não existe"
+    IDS_FILENOTEXISTING     "Arquivo não existe"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "Um Nível Acima"
+    IDS_NEWFOLDER        "Criar Nova Pasta"
+    IDS_LISTVIEW         "Lista"
+    IDS_REPORTVIEW       "Detalhes"
+    IDS_TODESKTOP        "Área de Trabalho"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE                           "Imprimir"
+
+    PD32_VALUE_UREADABLE                       "Entrada Ilegível"
+    PD32_INVALID_PAGE_RANGE                    "Este valor não se encaixa na faixa de páginas\n\
+Por favor entre um valor entre %d e %d."
+    PD32_FROM_NOT_ABOVE_TO                     "A entrada DE não pode exceder ATÉ."
+    PD32_MARGINS_OVERLAP                       "As margens estão fora das medidas \
+do papel.\nPor favor reentre as margens."
+    PD32_NR_OF_COPIES_EMPTY                    "O número de cópias não pode ter valor vazio."
+    PD32_TOO_LARGE_COPIES                      "Esta grande quantidade de cópias não é suportada \
+pela sua impressora.\nPor favor entre um valor entre 1 e %d."
+    PD32_PRINT_ERROR                           "Ocorreu um erro de impressão."
+    PD32_NO_DEFAULT_PRINTER                    "Não existe uma impressora padrão."
+    PD32_CANT_FIND_PRINTER                     "Não é possível encontrar uma impressora."
+    PD32_OUT_OF_MEMORY                         "Memória insuficiente."
+    PD32_GENERIC_ERROR                         "Ocorreu algum erro."
+    PD32_DRIVER_UNKNOWN                                "Driver de impressora desconhecido."
+
+    PD32_DEFAULT_PRINTER                       "Impressora Padrão; "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE              "Existem %d documentos na fila"
+    PD32_PRINT_ALL_X_PAGES                     "&Todas %d páginas"
+    PD32_MARGINS_IN_INCHES                     "Margens [polegadas]"
+    PD32_MARGINS_IN_MILIMETERS                 "Margens [mm]"
+    PD32_MILIMETERS                            "mm"
+
+    PD32_PRINTER_STATUS_READY                  "Pronto"
+    PD32_PRINTER_STATUS_PAUSED                 "Pausada; "
+    PD32_PRINTER_STATUS_ERROR                  "Erro; "
+    PD32_PRINTER_STATUS_PENDING_DELETION       "Exclusão pendente; "
+    PD32_PRINTER_STATUS_PAPER_JAM              "Papel atolado; "
+    PD32_PRINTER_STATUS_PAPER_OUT              "Sem papel; "
+    PD32_PRINTER_STATUS_MANUAL_FEED            "Alimentação manual; "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM          "Problemas com o papel; "
+    PD32_PRINTER_STATUS_OFFLINE                        "Impressora desligada; "
+    PD32_PRINTER_STATUS_IO_ACTIVE              "E/S Ativa; "
+    PD32_PRINTER_STATUS_BUSY                   "Ocupada; "
+    PD32_PRINTER_STATUS_PRINTING               "Imprimindo; "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL                "Bandeja de saída está cheia; "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE          "Não disponível; "
+    PD32_PRINTER_STATUS_WAITING                        "Esperando; "
+    PD32_PRINTER_STATUS_PROCESSING             "Processando; "
+    PD32_PRINTER_STATUS_INITIALIZING           "Inicializando; "
+    PD32_PRINTER_STATUS_WARMING_UP             "Aquecendo; "
+    PD32_PRINTER_STATUS_TONER_LOW              "Pouco toner; "
+    PD32_PRINTER_STATUS_NO_TONER               "Sem toner; "
+    PD32_PRINTER_STATUS_PAGE_PUNT              "Lançar página; "
+    PD32_PRINTER_STATUS_USER_INTERVENTION      "Intervenção do usuário; "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY          "Memória insuficiente; "
+    PD32_PRINTER_STATUS_DOOR_OPEN              "A impressora está aberta; "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN         "Servidor de impressão desconhecido; "
+    PD32_PRINTER_STATUS_POWER_SAVE             "Modo econômico; "
+}
+
+STRINGTABLE DISCARDABLE /* Nomes de cores */
+{
+    IDS_COLOR_BLACK     "Preto"
+    IDS_COLOR_MAROON    "Castanho"
+    IDS_COLOR_GREEN     "Verde"
+    IDS_COLOR_OLIVE     "Verde-oliva"
+    IDS_COLOR_NAVY      "Azul-marinho"
+    IDS_COLOR_PURPLE    "Roxo"
+    IDS_COLOR_TEAL      "Azul-petróleo"
+    IDS_COLOR_GRAY      "Cinza"
+    IDS_COLOR_SILVER    "Prateado"
+    IDS_COLOR_RED       "Vermelho"
+    IDS_COLOR_LIME      "Verde-limão"
+    IDS_COLOR_YELLOW    "Amarelo"
+    IDS_COLOR_BLUE      "Azul"
+    IDS_COLOR_FUCHSIA   "Fúcsia"
+    IDS_COLOR_AQUA      "Azul-piscina"
+    IDS_COLOR_WHITE     "Branco"
+}
diff --git a/reactos/lib/comdlg32/cdlg_Ru.rc b/reactos/lib/comdlg32/cdlg_Ru.rc
new file mode 100644 (file)
index 0000000..a2ce032
--- /dev/null
@@ -0,0 +1,410 @@
+/*
+ * Copyright 1999 Alexander Kanavin
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Îòêðûòü"
+FONT 8, "Ms Sans Serif"
+{
+ LTEXT "&Èìÿ ôàéëà:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Êàòàëîãè:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Ïîêàçûâàòü ôàéëû &òèïà:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Äèñêè:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Îòêðûòü", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Îòìåíà", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ñïðàâêà", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Ò&îëüêî äëÿ ÷òåíèÿ", 1040, 208, 68, 54, 24, BS_AUTOCHECKBOX | BS_MULTILINE  | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ñîõðàíèòü êàê ..."
+FONT 8, "Ms Sans Serif"
+{
+ LTEXT "&Èìÿ ôàéëà:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Êàòàëîãè:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Ïîêàçûâàòü ôàéëû &òèïà:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Äèñêè:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ñîõðàíèòü êàê", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Îòìåíà", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ñïðàâêà", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Òîëüêî äëÿ ÷òåíèÿ", 1040, 208, 68, 54, 24, BS_AUTOCHECKBOX | BS_MULTILINE | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ïå÷àòü"
+FONT 8, "Ms Sans Serif"
+{
+ LTEXT "Ïðèíòåð:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Ïå÷àòàòü", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Âñå", 1056, 16, 45, 60, 12
+ RADIOBUTTON "Â&ûäåëåííûé ôðàãìåíò", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Ñòðàíèöû", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Ïå÷àòü", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Îòìåíà", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ñâî&éñòâà", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&ñ:", 1090, 60, 80, 30, 9
+ LTEXT "&ïî:", 1091, 120, 80, 30, 9
+ LTEXT "&Êà÷åñòâî ïå÷àòè:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Ï&å÷àòü â ôàéë", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Ñæàòî", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Íàñòðîéêà ïðèíòåðà"
+FONT 8, "Ms Sans Serif"
+{
+ GROUPBOX "Ïðèíòåð", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "Ïðèíòåð ïî &óìîë÷àíèþ", 1056, 16, 20, 80, 12
+ LTEXT "[íåò]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "&Äðóãîé ïðèíòåð", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Îòìåíà", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Íàñòðîéêà", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Îðèåíòàöèÿ", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Êíèæíàÿ", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Àëüáîìíàÿ", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Áóìàãà", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "Ðà&çìåð", 1089, 130, 95, 30, 9
+ LTEXT "&Èñòî÷íèê", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Øðèôò"
+FONT 8, "Ms Sans Serif"
+{
+    LTEXT           "&Øðèôò:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Íà÷åðòàíèå:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Ðàçìåð:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Îòìåíà",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Ïðèìåíèòü", 1026,218,40,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Ñïðàâêà" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP
+    GROUPBOX        "Àòðèáóòû",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "&Çà÷åðêíóòûé", 1040, 10,82,75,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "Ïîä&÷åðêíóòûé", 1041, 10,94,75,10, BS_AUTOCHECKBOX
+    LTEXT           "Ö&âåò:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Îáðàçåö",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "ÀàÁáAaBb",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 310, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Èçìåíåíèå ïàëèòðû"
+FONT 8, "Ms Sans Serif"
+{
+ LTEXT "&Áàçîâàÿ ïàëèòðà:",   1088, 4,    4,  140, 10
+ LTEXT "Äî&ïîëíèòåëüíûå öâåòà:",  1089, 4,   106, 140, 10
+ LTEXT "Öâåò|Çà&ëèâêà",  1090, 150, 151,  48, 10
+ LTEXT   "Êðàñ&íûé:", 726 /*1094*/,254,126,32,10
+ EDITTEXT 706, 288,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Çåëåíûé:",727/*1095*/,254,140,32,10
+ EDITTEXT 707, 288,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "Ñ&èíèé:",728 /*1096*/,264,154,24,10
+ EDITTEXT 708, 288,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "Î&òòåíîê:" ,723 /*1091*/,202,126,30,10
+ EDITTEXT 703, 234,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Êîíòðàñò:" ,724 /*1092*/,199,140,34,10
+ EDITTEXT 704, 234,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&ßðêîñòü:" ,725 /*1093*/,202,154,30,10
+ EDITTEXT 705, 234,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "OK",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Îòìåíà", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cïðàâêà", 1038,100,166, 44, 14
+ PUSHBUTTON "&Äîáàâèòü â íàáîð",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Îïðåäåëèòü öâåò >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 245, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ïîèñê"
+FONT 8, "Ms Sans Serif"
+{
+ LTEXT "&Îáðàçåö:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 138, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Òîëüêî ñëîâî öåëèêîì", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "C &ó÷åòîì ðåãèñòðà", 1041, 4, 42, 100, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Íàïðàâëåíèå", 1072, 107, 26, 78, 28
+ CONTROL "&Ââåðõ", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 40, 12
+ CONTROL "Â&íèç", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 152, 38, 30, 12
+
+ DEFPUSHBUTTON "&Íàéòè äàëåå", IDOK, 190,  5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "Îòìåíà", IDCANCEL  , 190, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ñïðàâêà", pshHelp         , 190, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Çàìåíà"
+FONT 8, "Ms Sans Serif"
+{
+ LTEXT "&Îáðàçåö:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Ç&àìåíèòü íà:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Òîëüêî ñëîâî öåëèêîì", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Ñ &ó÷åòîì ðåãèñòðà", 1041, 5, 62, 104, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "&Íàéòè äàëåå", IDOK, 174,  4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "&Çàìåíèòü", psh1   , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Çàìåíèòü &âñå", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Îòìåíà", IDCANCEL  , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ñïðàâêà", pshHelp         , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Ïå÷àòü"
+FONT 8, "Ms Sans Serif"
+{
+    DEFPUSHBUTTON   "OK",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Îòìåíà", IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "&Ñïðàâêà",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "Ïðèíòåð",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "Ïå÷àòü â ôàé&ë", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "&Ñâîéñòâà",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Èìÿ:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Ñòàòóñ:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Ýìóëèðîâàí",    stc12, 60, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Òèï:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Ýìóëèðîâàí",     stc11, 60, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Ìåñòî:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Ýìóëèðîâàíî", stc14, 60, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Ïðèìå÷àíèå:",       stc13,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Ýìóëèðîâàíî",   stc13, 60, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Êîïèè",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "×èñëî &êîïèé:",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "&Ðàçáèòü",       chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,230,130,40,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Ïå÷àòàòü",    grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "&Âñå",           rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "&Ñòðàíèöû",         rad3,"Button",BS_AUTORADIOBUTTON,16,122,50,12
+    CONTROL         "&Âûäåëåíèå",     rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  85,122,  20,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 120,122,  20,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&îò:",         stc2,  70,124,  10,8
+    RTEXT           "&äî:",           stc3, 106,124,  10,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Óñòàíîâêè ïðèíòåðà"
+FONT 8, "Ms Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "Îòìåíà",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Ñåòü...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "Ïðèíòåð",        grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "&Ñâîéñòâà",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Èìÿ:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Ñòàòóñ:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Ýìóëèðîâàí",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Òèï:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Ýìóëèðîâàí",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Ìåñòî:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Ýìóëèðîâàíî", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Çàìåòêè:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Ýìóëèðîâàíû",   stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Áóìàãà",          grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "Ðàç&ìåð:",         stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "&Èñòî÷íèê:",       stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "Îðèåíòàöèÿ",    grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "&Ïîðòðåò",      rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "Ë&àíäøàôò",     rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "Îòêðûòü"
+FONT 8, "MS Sans Serif"
+{
+    LTEXT      "Èñêàòü &â",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "Èìÿ &ôàéëà:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "Ôàéëû &òèïà",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "Òîëüêî äëÿ &÷òåíèÿ",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON      "&Îòêðûòü",              IDOK,222,110,50,14
+    PUSHBUTTON         "Îòìåíà",                IDCANCEL,222,128,50,14
+    PUSHBUTTON         "&Ñïðàâêà",              pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "&Πòåñòå ÂûáîðÏàïêè"
+    IDS_DOCUMENTFOLDERS     "Ïàïêè äîêóìåíòîâ"
+    IDS_PERSONAL            "Ìîè äîêóìåíòû"
+    IDS_FAVORITES           "Èçáðàííîå"
+    IDS_PATH                "Ñèñòåìíûé ïóòü"
+    IDS_DESKTOP             "Ðàáî÷èé ñòîë"
+    IDS_FONTS               "Øðèôòû"
+    IDS_MYCOMPUTER          "Ìîé êîìïüþòåð"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "Ñèñòåìíûå ïàïêè"
+    IDS_LOCALHARDRIVES      "Ëîêàëüíûå æåñòêèå äèñêè"
+    IDS_FILENOTFOUND        "Ôàéë íå íàéäåí"
+    IDS_VERIFYFILE          "Ïðîâåðüòå, ïðàâèëüíî ëè óêàçàíî èìÿ ôàéëà"
+    IDS_CREATEFILE          "Ôàéëà íå ñóùåñòâóåò\nÕîòèòå ëè Âû åãî ñîçäàòü?"
+    IDS_OVERWRITEFILE       "Ôàéë óæå ñóùåñòâóåò.\nÇàìåíèòü åãî?"
+    IDS_INVALID_FILENAME_TITLE "Íåêîððåêòíûé ñèìâîë â çàïèñè ïóòè"
+    IDS_INVALID_FILENAME    "Èìÿ ôàéëà íå ìîæåò ñîäåðæàòü ñëåäóþùèå ñèìâîëû: \n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Ïóòü íå ñóùåñòâóåò"
+    IDS_FILENOTEXISTING     "Ôàéë íå ñóùåñòâóåò"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "Ââåðõ íà îäèí óðîâåíü"
+    IDS_NEWFOLDER        "Ñîçäàòü íîâóþ ïàïêó"
+    IDS_LISTVIEW         "Ñïèñîê"
+    IDS_REPORTVIEW       "Ïîäðîáíîñòè"
+    IDS_TODESKTOP        "Ïåðåõîä íà ðàáî÷èé ñòîë"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE       "Ïå÷àòü"
+
+    PD32_VALUE_UREADABLE                  "Íå÷èòàåìûé ýëåìåíò"
+    PD32_INVALID_PAGE_RANGE "Ýòî çíà÷åíèå íå ëåæèò âíóòðè äèàïàçîíà ñòðàíèö\n\
+Ââåäèòå çíà÷åíèå ìåæäó %d è %d"
+    PD32_FROM_NOT_ABOVE_TO                "Çíà÷åíèå ÎÒ íå äîëæíî ïðåâûøàòü ÄÎ:"
+    PD32_MARGINS_OVERLAP                  "Ãðàíèöû ïåðåêðûâàþò èëè ïðåâûøàþò \
+ðàçìåðû áóìàãè.\nÂâåäèòå èõ çàíîâî"
+    PD32_NR_OF_COPIES_EMPTY               "Çíà÷åíèå ×èñëà Êîïèé íå ìîæåò áûòü \
+ïóñòûì"
+    PD32_TOO_LARGE_COPIES                 "Òàêîå áîëüøîå êîëè÷åñòâî êîïèé íå \
+ìîæåò áûòü íàïå÷àòàíî Âàøèì ïðèíòåðîì.\nÂâåäèòå çíà÷åíèå ìåæäó 1 è %d"
+    PD32_PRINT_ERROR                      "Ïðîèçîøëà îøèáêà ïðèíòåðà"
+    PD32_NO_DEFAULT_PRINTER               "Íåò ïðèíòåðà, óñòàîâëåííîãî ïî óìîë÷àíèþ"
+    PD32_CANT_FIND_PRINTER                "Íå óäàëîñü íàéòè ïðèíòåð"
+    PD32_OUT_OF_MEMORY                    "Ìàëî ïàìÿòè"
+    PD32_GENERIC_ERROR                    "Ïðîèçîøëà(è) îøèáêà(è)"
+    PD32_DRIVER_UNKNOWN                   "Íåèçâåñòíûé äðàéâåð ïðèíòåðà"
+
+    PD32_DEFAULT_PRINTER                  "Ïðèíòåð ïî óìîë÷àíèþ; "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE         "%d äîêóìåíòîâ â î÷åðåäè"
+    PD32_PRINT_ALL_X_PAGES                "&Âñå %d ñòðàíèö"
+    PD32_MARGINS_IN_INCHES                "Ãðàíèöû [äþéìû)"
+    PD32_MARGINS_IN_MILIMETERS            "Ãðàíèöû [ìì]"
+    PD32_MILIMETERS                       "ìì"
+
+    PD32_PRINTER_STATUS_READY             "Ãîòîâî"
+    PD32_PRINTER_STATUS_PAUSED            "Ïðèîñòàíîâëåíî; "
+    PD32_PRINTER_STATUS_ERROR             "Îøèáêà; "
+    PD32_PRINTER_STATUS_PENDING_DELETION  "Îæèäàíèå óäàëåíèÿ; "
+    PD32_PRINTER_STATUS_PAPER_JAM         "Áóìàãà çàñòðÿëà; "
+    PD32_PRINTER_STATUS_PAPER_OUT         "Íå õâàòàåò áóìàãè; "
+    PD32_PRINTER_STATUS_MANUAL_FEED       "Âñòàâüòå áóìàãó âðó÷íóþ; "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM     "Ïðîáëåìà ñ áóìàãîé; "
+    PD32_PRINTER_STATUS_OFFLINE           "Ïðèíòåð â ðåæèìå offline; "
+    PD32_PRINTER_STATUS_IO_ACTIVE         "Ââîä/Âûâîä àêòèâåí; "
+    PD32_PRINTER_STATUS_BUSY              "Çàíÿò; "
+    PD32_PRINTER_STATUS_PRINTING          "Èäåò ïå÷àòü; "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "Ëîòîê ïåðåïîëíåí áóìàãîé; "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE     "Íå äîñòóïåí; "
+    PD32_PRINTER_STATUS_WAITING           "Îæèäàíèå; "
+    PD32_PRINTER_STATUS_PROCESSING        "Îáðàáîòêà; "
+    PD32_PRINTER_STATUS_INITIALIZING      "Ïîäãîòîâêà; "
+    PD32_PRINTER_STATUS_WARMING_UP        "Ïðîãðåâ; "
+    PD32_PRINTER_STATUS_TONER_LOW         "Òîíåð íà èñõîäå; "
+    PD32_PRINTER_STATUS_NO_TONER          "Íåò òîíåðà; "
+    PD32_PRINTER_STATUS_PAGE_PUNT         "Page punt; "
+    PD32_PRINTER_STATUS_USER_INTERVENTION "Ïðåðâàíî ïîëüçîâàòåëåì; "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Ìàëî ïàìÿòè; "
+    PD32_PRINTER_STATUS_DOOR_OPEN         "Êðûøêà ïðèíòåðà îòêðûòà; "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Íåèçâåñòíûé ñåðâåð ïðèíòåðà; "
+    PD32_PRINTER_STATUS_POWER_SAVE        "Ïèòàíèå â áåçîïàñíîì ðåæèìå; "
+}
diff --git a/reactos/lib/comdlg32/cdlg_Si.rc b/reactos/lib/comdlg32/cdlg_Si.rc
new file mode 100644 (file)
index 0000000..2a8eca0
--- /dev/null
@@ -0,0 +1,439 @@
+/*
+ * Copyright 2002-2003 Rok Mandeljc <rok.mandeljc@gimb.org>
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Odpiranje"
+FONT 8, "MS Sans Serif"
+{
+ LTEXT "Ime &datoteke:", 1090, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Mape:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Vrsta datotek:", 1089, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Pog&oni:", 1091, 110, 104, 92, 9
+ COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "V redu", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Preklièi", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoè", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Samo za b&ranje", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Shrani kot"
+FONT 8, "MS Sans Serif"
+{
+ LTEXT "Ime &datoteke:", 1090, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Mape:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Vrsta datotek:", 1089, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Pog&oni:", 1091, 110, 104, 92, 9
+ COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "V redu", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Preklièi", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoè", pshHelp, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Samo za b&ranje", chx1, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tiskanje"
+FONT 8, "MS Sans Serif"
+{
+ LTEXT "Tiskalnik:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Obseg tiskanja", grp1, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Vse", rad1, 16, 45, 60, 12
+ RADIOBUTTON "I&zbor", rad2, 16, 60, 60, 12
+ RADIOBUTTON "St&rani", rad3, 16, 75, 60, 12
+ DEFPUSHBUTTON "V redu", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Preklièi", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Pripr&ava ...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&od:", 1090, 60, 80, 30, 9
+ LTEXT "&do:", 1091, 120, 80, 30, 9
+ LTEXT "Kakovost ti&skanja:", 1092, 6, 100, 76, 9
+ COMBOBOX cmb1, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "&Tiskanje v datoteko", chx1, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Z&biranje kopij", chx2, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Priprava za tiskanje"
+FONT 8, "MS Sans Serif"
+{
+ GROUPBOX "Tiskalnik", grp1, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "Privzeti &tiskalnik", rad1, 16, 20, 80, 12
+ LTEXT "(Ni privzetega tiskalnika)", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Doloèeni ti&skalnik:", rad2, 16, 50, 80, 12
+ COMBOBOX cmb1, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "V redu", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Preklièi", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Mo\9enosti ...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Usmerjenost", grp2, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "P&okonèna", rad3, 50, 100, 40, 12
+ RADIOBUTTON "L&e\9eeèa", rad4, 50, 115, 40, 12
+ ICON "LANDSCAP", stc10, 10, 95, 32, 32
+ ICON "PORTRAIT", stc11, 10, 95, 32, 32
+ GROUPBOX "Papir", grp3, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "Veli&kost:", 1089, 130, 95, 30, 9
+ LTEXT "&Vir:", 1090, 130, 110, 30, 9
+ COMBOBOX cmb2, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX cmb3, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Pisava"
+FONT 8, "MS Sans Serif"
+{
+    LTEXT           "Pis&ava:",1088 ,6,3,40,9
+    COMBOBOX        cmb1, 6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Slog pi&save:",1089 ,108,3,44,9
+    COMBOBOX        cmb2,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Velikost:",1090,179,3,30,9
+    COMBOBOX        cmb3,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "V redu",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Preklièi",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Uporabi", psh3,218,40,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Pomoè" , pshHelp,218,57,40,14,WS_GROUP | WS_TABSTOP
+    GROUPBOX        "Uèinki",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "Pr&eèrtano", chx1, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "Po&dèrtano", chx2, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Barva:", 1091 ,6,110,30,9
+    COMBOBOX        cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Vzorec",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Barva"
+FONT 8, "MS Sans Serif"
+{
+ LTEXT "Osno&vne barve:",   1088, 4,    4,  140, 10
+ LTEXT "Name\9aane &barve:",  1089, 4,   106, 140, 10
+ LTEXT "Barva | T&emelj",  1090, 150, 151,  48, 10
+ LTEXT   "&Rdeèa:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Zelena:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "Modr&a:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "Od&tenek:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Nasièenost:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Svetlost:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "V redu",  1,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Preklièi", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoè", pshHelp,100,166, 44, 14
+ PUSHBUTTON "&Dodaj med name\9aane barve",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Me\9aanje barv >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Iskanje"
+FONT 8, "MS Sans Serif"
+{
+ LTEXT "N&ajdi:", -1, 4, 8, 42, 8
+ EDITTEXT edt1, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Samo cele besede", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Razlikovanje malih in velikih èrk", chx2, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Smer iskanja", grp1, 107, 26, 68, 28
+ CONTROL "&Gor", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Dol", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "&Nadaljuj iskanje", IDOK, 182,  5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "Preklièi", IDCANCEL        , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoè", pshHelp   , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Zamenjava"
+FONT 8, "MS Sans Serif"
+{
+ LTEXT "N&ajdi:", -1, 4, 9, 48, 8
+ EDITTEXT edt1, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Za&menjaj z:", -1, 4, 26, 48, 8
+ EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Samo cele besede", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Razlikovanje malih in velikih èrk", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "&Nadaljuj iskanje", IDOK, 174,  4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "&Zamenjaj", psh1   , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zamenjaj &vse", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Preklièi", IDCANCEL        , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoè", pshHelp   , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Tiskanje"
+FONT 8, "MS Sans Serif"
+{
+    DEFPUSHBUTTON   "V redu",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Preklièi", IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "&Pomoè",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "Tiskalnik",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "&Tiskanje v datoteko", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "&Lastnosti",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Ime:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Stanje:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Vrsta:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Kje:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Komentar:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Kopije",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "\8atevilo &kopij:",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "Z&biranje",       chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Obseg tiskanja",    grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "&Vse",           rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "St&rani",         rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "I&zbor",     rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&od:",         stc2,  52,124,  20,8
+    RTEXT           "&do:",           stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Priprava za tiskanje"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "V redu",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "Preklièi",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Omre\9eje...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "Tiskalnik",        grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "&Lastnosti",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Ime:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Stanje:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Vrsta:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Kje:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Komentar:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Papir",          grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "Veli&kost:",         stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "&Vir:",       stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "Usmerjenost",    grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "P&okonèna",      rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "L&e\9eeèa",     rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Priprava strani"
+FONT 8, "MS Sans Serif"
+BEGIN
+  CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80,  SS_WHITERECT
+  CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT
+  CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4,  SS_GRAYRECT
+  GROUPBOX "Papir", grp2, 8, 96, 224, 56, BS_GROUPBOX
+  LTEXT "Veli&kost:", stc2, 16, 112, 36, 8
+  COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  LTEXT "&Vir:", stc3, 16, 132, 36, 8
+  COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  GROUPBOX "Usmerjenost", grp1, 8, 156, 64, 56, BS_GROUPBOX
+  AUTORADIOBUTTON "P&okonèna", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON
+  AUTORADIOBUTTON "L&e¾eèa", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON
+  GROUPBOX "Robovi", grp4, 80, 156, 152, 56, BS_GROUPBOX
+  LTEXT "&Levo:", stc15, 88, 172, 21, 8
+  EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Desno:", stc16, 159, 172, 27, 8
+  EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Zgoraj:", stc17, 88, 192, 21, 8
+  EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Spodaj:", stc18, 159, 192, 23, 8
+  EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  DEFPUSHBUTTON "V redu", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON
+  PUSHBUTTON "Preklièi", IDCANCEL, 126, 220, 50, 14
+  PUSHBUTTON "&Tiskalnik ...", psh3, 184, 220, 48, 14
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "Odpiranje"
+FONT 8, "MS Sans Serif"
+{
+    LTEXT      "&I\9aèi v",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "Ime &datoteke:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "Vrsta da&totek:",IDC_FILETYPESTATIC,5,128,49,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "&Samo za branje",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON      "&Odpri",                IDOK,222,110,50,14
+    PUSHBUTTON         "Preklièi",              IDCANCEL,222,128,50,14
+    PUSHBUTTON         "&Pomoè",                pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "&O FolderPicker Test"
+    IDS_DOCUMENTFOLDERS     "Mape z dokumenti"
+    IDS_PERSONAL            "Moji dokumenti"
+    IDS_FAVORITES           "Priljubljene"
+    IDS_PATH                "Sistemska pot"
+    IDS_DESKTOP             "Namizje"
+    IDS_FONTS               "Pisave"
+    IDS_MYCOMPUTER          "Moj raèunalnik"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "Sistemske mape"
+    IDS_LOCALHARDRIVES      "Lokalni trdi diski"
+    IDS_FILENOTFOUND        "Datoteke ni mogoèe najti"
+    IDS_VERIFYFILE          "Preverite, ali ste vnesli pravilno ime datoteke"
+    IDS_CREATEFILE          "Datoteka ne obstaja\nAli jo \9eelite ustvariti?"
+    IDS_OVERWRITEFILE       "Datoteka \9ee obstaja.\nAli jo \9eelite zamenjati?"
+    IDS_INVALID_FILENAME_TITLE "Neustrezni znaki v imenu"
+    IDS_INVALID_FILENAME    "Ime datoteke ne sme vsebovati naslednjih znakov: \n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Pot ne obstaja"
+    IDS_FILENOTEXISTING     "Datoteka ne obstaja"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "V nadrejeno mapo"
+    IDS_NEWFOLDER        "Ustvari novo mapo"
+    IDS_LISTVIEW         "Seznam"
+    IDS_REPORTVIEW       "Podrobnosti"
+    IDS_TODESKTOP        "Pogled namizja"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE       "Tiskalnik:"
+
+    PD32_VALUE_UREADABLE                  "Velikost mora biti izra\9eena s \9atevilko."
+    PD32_INVALID_PAGE_RANGE "Ta vrednost ni znotraj dovoljenega obsega.\n\
+Vnesite \9atevilo med %d in %d."
+    PD32_FROM_NOT_ABOVE_TO                "Vrednost 'od' ne more biti veèja od vrednosti 'do'."
+    PD32_MARGINS_OVERLAP                  "Robovi se ne prekrivajo ali pa niso na listu papirja.\nVnesite nove velikosti robov."
+    PD32_NR_OF_COPIES_EMPTY               "\8atevilo kopij ne more biti 0 in mora biti pozitivno."
+    PD32_TOO_LARGE_COPIES                 "Ta tiskalnik ne omogoèa tolik\9anega \
+\9atevila kopij.\nVnesite \9atevilo med 1 in %d."
+    PD32_PRINT_ERROR                      "Napaka pri tiskanju"
+    PD32_NO_DEFAULT_PRINTER               "Preden lahko tiskate, morate namestiti tiskalnik."
+    PD32_CANT_FIND_PRINTER                "Tiskalnika ni bilo mogoèe najti."
+    PD32_OUT_OF_MEMORY                    "Na voljo ni dovolj pomnilnika, da bi bilo mogoèe dokonèati operacijo."
+    PD32_GENERIC_ERROR                    "Med operacijo je pri\9alo do napake."
+    PD32_DRIVER_UNKNOWN                   "Neznan gonilnik tiskalnika."
+
+    PD32_DEFAULT_PRINTER                  "Privzeti tiskalnik; "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE         "%d èakajoèih dok."
+    PD32_PRINT_ALL_X_PAGES                "&Vse strani -- %d"
+    PD32_MARGINS_IN_INCHES                "Robovi [palci]"
+    PD32_MARGINS_IN_MILIMETERS            "Robovi [mm]"
+    PD32_MILIMETERS                       "mm"
+
+    PD32_PRINTER_STATUS_READY             "Pripravljen"
+    PD32_PRINTER_STATUS_PAUSED            "Zaèasno zaustavljen; "
+    PD32_PRINTER_STATUS_ERROR             "Napaka; "
+    PD32_PRINTER_STATUS_PENDING_DELETION  "Pri\9alo bo do brisanja; "
+    PD32_PRINTER_STATUS_PAPER_JAM         "Papir se je zagozdil; "
+    PD32_PRINTER_STATUS_PAPER_OUT         "Ni veè papirja; "
+    PD32_PRINTER_STATUS_MANUAL_FEED       "Roèno podajanje; "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM     "Te\9eave s papirjem; "
+    PD32_PRINTER_STATUS_OFFLINE           "Ne sprejema podatkov; "
+    PD32_PRINTER_STATUS_IO_ACTIVE         "V/I aktiven; "
+    PD32_PRINTER_STATUS_BUSY              "Zaposlen; "
+    PD32_PRINTER_STATUS_PRINTING          "Tiska; "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "Izhodni predal je poln; "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE     "Ni na voljo; "
+    PD32_PRINTER_STATUS_WAITING           "Èaka; "
+    PD32_PRINTER_STATUS_PROCESSING        "Obdeluje; "
+    PD32_PRINTER_STATUS_INITIALIZING      "Se inicializira; "
+    PD32_PRINTER_STATUS_WARMING_UP        "Se ogreva; "
+    PD32_PRINTER_STATUS_TONER_LOW         "Zmanjkuje tonerja; "
+    PD32_PRINTER_STATUS_NO_TONER          "Ni tonerja; "
+    PD32_PRINTER_STATUS_PAGE_PUNT         "Predmet strani; "
+    PD32_PRINTER_STATUS_USER_INTERVENTION "Poseg uporabnika; "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Zmanjkalo je pomnilnika; "
+    PD32_PRINTER_STATUS_DOOR_OPEN         "Odprto ohi\9aje; "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Neznan stre\9enik; "
+    PD32_PRINTER_STATUS_POWER_SAVE        "V pripravljenosti; "
+}
diff --git a/reactos/lib/comdlg32/cdlg_Sk.rc b/reactos/lib/comdlg32/cdlg_Sk.rc
new file mode 100644 (file)
index 0000000..3d03e22
--- /dev/null
@@ -0,0 +1,412 @@
+/*
+ * Copyright 2000 Simen Zamecnik
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
+
+/* Slovak strings in CP1250 */
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Otvorenie súboru"
+FONT 8, "Helv"
+{
+ LTEXT "&Meno súboru:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Adresáre:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Typ zobrazených súborov:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Diskové jednotky:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Otvori\9d", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zru\9ai\9d", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoc", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Len na èítanie", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Ulo\9ei\9d pod menom..."
+FONT 8, "Helv"
+{
+ LTEXT "&Meno súboru:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Adresáre:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Typ zobrazených súborov:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Diskové jednotky:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ulo\9e pod menom", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zru\9ai\9d", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoc", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Len na èítanie", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Tlaè"
+FONT 8, "Helv"
+{
+ LTEXT "Tlaèiareò:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Rozsah tlaèe", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "Vytlaèi\9d &v\9aetko", 1056, 16, 45, 60, 12
+ RADIOBUTTON "Vytlaèi\9d vý&ber", 1057, 16, 60, 60, 12
+ RADIOBUTTON "Vytlaèi\9d &zadané strany", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Tlaè", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zru\9ai\9d", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Nastavi\9d...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Od:", 1090, 60, 80, 30, 9
+ LTEXT "&Po:", 1091, 120, 80, 30, 9
+ LTEXT "&Kvalita tlaèe:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Tlaèi\9d do &súboru", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Kondenzované", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Nastavenie spôsobu tlaèe"
+FONT 8, "Helv"
+{
+ GROUPBOX "Tlaèiareò", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Predvolená tlaèiareò", 1056, 16, 20, 80, 12
+ LTEXT "[\9eiadna]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "\8apecifická &tlaèiareò", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zru\9ai\9d", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ïa¾\9ai&e vo¾by...", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientácia", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "Na &vý\9aku", 1058, 50, 100, 40, 12
+ RADIOBUTTON "Na \9aí&rku", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papier", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Formát", 1089, 130, 95, 30, 9
+ LTEXT "&Odkia¾", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Font"
+FONT 8, "Helv"
+{
+    LTEXT           "&Font:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "\8a&týl fontu:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Ve¾kos\9d:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Zru\9ai\9d",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Aplikova\9d", 1026,218,40,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "&Pomoc" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP
+    GROUPBOX        "Efekty",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "P&reèiarknuté", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "&Podèiarknuté", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Farba:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Vzorka",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Farby"
+FONT 8, "Helv"
+{
+ LTEXT "&Základné farby:",   1088, 4,    4,  140, 10
+ LTEXT "&U\9eívate¾ské farby:",  1089, 4,   106, 140, 10
+ LTEXT "Farba |  Spoj&itá",  1090, 150, 151,  48, 10
+ LTEXT   "Èe&rvená:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Zelená:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Modrá:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Hue:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "OK",  1,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zru\9ai\9d", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Pomoc", 1038,100,166, 44, 14
+ PUSHBUTTON "&Prida\9d k u\9eívate¾ovým farbám",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Definova\9d u\9eívate¾ské farby >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "H¾adanie"
+FONT 8, "Helv"
+{
+ LTEXT "&Nájs\9d:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Len &celé slová", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Rozli\9aova\9d malé a ve¾ké písmená", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Smer", 1072, 107, 26, 68, 28
+ CONTROL "H&ore", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Dole", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "Nájs\9d ï&al\9aie", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zavrie\9d", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoc", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Zámena"
+FONT 8, "Helv"
+{
+ LTEXT "&Nájs\9d:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "&Zameni\9d za:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Len &celé slová", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Rozli\9aova\9d malá a ve¾ké písmená", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "Nájs\9d ï&al\9aie", 1, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Za&meni\9d", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zameni\9d vo vý&bere", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Zavrie\9d", 2, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Pomoc", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Tlaè"
+FONT 8, "Helv"
+{
+    DEFPUSHBUTTON   "OK",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "Zru\9ai\9d", IDCANCEL, 232,164, 48,14, WS_GROUP
+    PUSHBUTTON      "&Pomoc",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+    GROUPBOX        "Tlaèiareò",        grp4,   8,  4, 272,84, WS_GROUP
+    CONTROL         "tlaèi\9d do &súboru", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+    PUSHBUTTON      "&Vlastnosti",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Meno:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb4,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Stav:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Typ:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Typ",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Kam:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Komentár:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Kópie",         grp2, 160, 92, 120,64, WS_GROUP
+    LTEXT           "Poèet &kópií:",stc5,168,108,68,8
+    ICON            "",               ico3, 162,124,  76,24, WS_GROUP | SS_CENTERIMAGE
+    CONTROL         "C&ollate",       chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12
+    EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP | ES_NUMBER
+
+    GROUPBOX        "Rozsah tlaèe",    grp1,   8,92,  144,64, WS_GROUP
+    CONTROL         "&V\9aetky",           rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12
+    CONTROL         "St&rany",         rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+    CONTROL         "Vý&ber",     rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+    EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP | ES_NUMBER
+    EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP | ES_NUMBER
+    RTEXT           "&od:",         stc2,  52,124,  20,8
+    RTEXT           "&do:",           stc3, 100,124,  16,8
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Nastavenie tlaèe"
+FONT 8, "Helv"
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,180,156,48,14,WS_GROUP
+    PUSHBUTTON      "Zru\9ai\9d",IDCANCEL,232,156,48,14
+/*    PUSHBUTTON      "Sie\9d...", psh5, 284,156,48,14 */
+
+    GROUPBOX        "Tlaèiareò",        grp4,   8,  4, 272,84, WS_GROUP
+    PUSHBUTTON      "&Vlastnosti",    psh2, 212, 17,  60,14, WS_GROUP
+    LTEXT           "&Meno:",         stc6,  16, 20,  36,8
+    COMBOBOX                          cmb1,  52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "Stav:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy State",    stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Typ:",          stc7,  16, 48,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Type",     stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Kam:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Location", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+    LTEXT           "Komentár:",       stc9,  16, 72,  36,10, SS_NOPREFIX
+    LTEXT           "Dummy Remark",   stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+
+    GROUPBOX        "Papier",          grp2,   8, 92, 164,56, WS_GROUP
+    LTEXT           "&Ve¾kos\9d:",         stc2,  16,108,  36, 8
+    COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "&Zdroj:",       stc3,  16,128,  36, 8
+    COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+
+    GROUPBOX        "Orientácia",    grp1, 180, 92, 100,56, WS_GROUP
+    ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+    CONTROL         "&Na vý\9aku",      rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+    CONTROL         "Na \9aí&rku",     rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "Otvori\9d"
+FONT 8, "Helv"
+{
+    LTEXT      "H¾ada\9d &v",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "&Meno súboru:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "&Typ súborov",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "Otvo&ri\9d iba na èítanie",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON      "&Otvori\9d",              IDOK,222,110,50,14
+    PUSHBUTTON         "Zru\9ai\9d",                IDCANCEL,222,128,50,14
+    PUSHBUTTON         "&Pomoc",                pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "&O teste uchopovania adresárov"
+    IDS_DOCUMENTFOLDERS     "Adresár dokumentov"
+    IDS_PERSONAL            "Moje dokumenty"
+    IDS_FAVORITES           "Moji favoriti"
+    IDS_PATH                "Systémová cesta"
+    IDS_DESKTOP             "Pracovná plocha"
+    IDS_FONTS               "Fonty"
+    IDS_MYCOMPUTER          "Môj poèítaè"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "Systémové adresáre"
+    IDS_LOCALHARDRIVES      "Lokálne pevné disky"
+    IDS_FILENOTFOUND        "Súbor nenájdený"
+    IDS_VERIFYFILE          "Please verify if the correct file name was given"
+    IDS_CREATEFILE          "File does not exist\nDo you want to create file"
+    IDS_OVERWRITEFILE       "File does already exist.\nDo you want to replace it?"
+    IDS_INVALID_FILENAME_TITLE "Invalid character(s) in path"
+    IDS_INVALID_FILENAME    "A filename cannot contain any of the following characters: \n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Cesta neexistuje"
+    IDS_FILENOTEXISTING     "Súbor neexistuje"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "O úroveò vy\9a\9aie"
+    IDS_NEWFOLDER        "Vytvori\9d nový adresár"
+    IDS_LISTVIEW         "Zoznam"
+    IDS_REPORTVIEW       "Detaily"
+    IDS_TODESKTOP        "Listova\9d pracovnú plochu"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    PD32_PRINT_TITLE       "Tlaè"
+
+    PD32_VALUE_UREADABLE                  "Unreadable Entry"
+    PD32_INVALID_PAGE_RANGE "This value lies not within Page range\n\
+Please enter a value between %d and %d"
+    PD32_FROM_NOT_ABOVE_TO                "The FROM entry cannot exceed TO:"
+    PD32_MARGINS_OVERLAP                  "Margins overlap or fall outside \
+Paper boundaries.\nPlease reenter margins"
+    PD32_NR_OF_COPIES_EMPTY               "The NumberOfCopies entry cannot \
+be empty"
+    PD32_TOO_LARGE_COPIES                 "This large amount of prints is not \
+supported by your printer.\nPlease enter a value between 1 and %d"
+    PD32_PRINT_ERROR                      "A printer error occurred"
+    PD32_NO_DEFAULT_PRINTER               "Nie je nastavená implicitná tlaèiareò"
+    PD32_CANT_FIND_PRINTER                "Cannot find the printer"
+    PD32_OUT_OF_MEMORY                    "Nedostatok pamäte"
+    PD32_GENERIC_ERROR                    "Vyskytla sa chyba"
+    PD32_DRIVER_UNKNOWN                   "Neznámy ovládaè tlaèiarne"
+
+    PD32_DEFAULT_PRINTER                  "Implicitná tlaèiareò; "
+    PD32_NR_OF_DOCUMENTS_IN_QUEUE         "There are %d documents in queue"
+    PD32_PRINT_ALL_X_PAGES                "&V\9aetky %d strany"
+    PD32_MARGINS_IN_INCHES                "Okraje [palce]"
+    PD32_MARGINS_IN_MILIMETERS            "Okraje [mm]"
+    PD32_MILIMETERS                       "mm"
+
+    PD32_PRINTER_STATUS_READY             "Pripravená"
+    PD32_PRINTER_STATUS_PAUSED            "Pozastavená; "
+    PD32_PRINTER_STATUS_ERROR             "Chyba; "
+    PD32_PRINTER_STATUS_PENDING_DELETION  "Pending deletion; "
+    PD32_PRINTER_STATUS_PAPER_JAM         "Paper jam; "
+    PD32_PRINTER_STATUS_PAPER_OUT         "Chýba papier; "
+    PD32_PRINTER_STATUS_MANUAL_FEED       "Feed paper manual; "
+    PD32_PRINTER_STATUS_PAPER_PROBLEM     "Paper problem; "
+    PD32_PRINTER_STATUS_OFFLINE           "Tlaèiareò v stave offline; "
+    PD32_PRINTER_STATUS_IO_ACTIVE         "I/O Active; "
+    PD32_PRINTER_STATUS_BUSY              "Zaneprázdnená; "
+    PD32_PRINTER_STATUS_PRINTING          "Prebieha tlaè; "
+    PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "Output tray is full; "
+    PD32_PRINTER_STATUS_NOT_AVAILABLE     "Nie je k dispozícii; "
+    PD32_PRINTER_STATUS_WAITING           "Waiting; "
+    PD32_PRINTER_STATUS_PROCESSING        "Prebieha spracovanie; "
+    PD32_PRINTER_STATUS_INITIALIZING      "Inicializácia; "
+    PD32_PRINTER_STATUS_WARMING_UP        "Warming up; "
+    PD32_PRINTER_STATUS_TONER_LOW         "Primálo toneru; "
+    PD32_PRINTER_STATUS_NO_TONER          "Chýba toner; "
+    PD32_PRINTER_STATUS_PAGE_PUNT         "Page punt; "
+    PD32_PRINTER_STATUS_USER_INTERVENTION "Preru\9aenie u\9eívate¾om; "
+    PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Nedostatok pamäte; "
+    PD32_PRINTER_STATUS_DOOR_OPEN         "Dvierka tlaèiarne sú otvorené; "
+    PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Neznámy print server; "
+    PD32_PRINTER_STATUS_POWER_SAVE        "Power safe mode; "
+}
diff --git a/reactos/lib/comdlg32/cdlg_Sv.rc b/reactos/lib/comdlg32/cdlg_Sv.rc
new file mode 100644 (file)
index 0000000..9db8e99
--- /dev/null
@@ -0,0 +1,432 @@
+/*
+ * Copyright 1998 Karl Backström
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Öppna"
+FONT 8, "Helv"
+{
+ LTEXT "Fil&namn:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Kataloger:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Lista filer av &typen:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Enheter:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Öppna", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjälp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skrivskyddat", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Spara som ..."
+FONT 8, "Helv"
+{
+ LTEXT "&Filnamn:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Kataloger:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Lista filer av &typen:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Enheter:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Spara som", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjälp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skrivskyddad", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Skriv ut"
+FONT 8, "Helv"
+{
+ LTEXT "Skrivare:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Skriv ut del", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Allt", 1056, 16, 45, 60, 12
+ RADIOBUTTON "&Markerat", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Sidor", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "Skriv ut", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Inställningar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Från:", 1090, 60, 80, 30, 9
+ LTEXT "&Till:", 1091, 120, 80, 30, 9
+ LTEXT "Utskriftskvalitet:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "&Skriv till fil", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Sammantryckt", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Skrivarinställningar"
+FONT 8, "Helv"
+{
+ GROUPBOX "Skrivare", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "&Standardskrivare", 1056, 16, 20, 80, 12
+ LTEXT "[ingen]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Specifierad &skrivare", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Inställningar", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientering", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "&Porträtt", 1058, 50, 100, 40, 12
+ RADIOBUTTON "&Landskap", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Paper", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Storlek", 1089, 130, 95, 30, 9
+ LTEXT "&Källa", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Typsnitt"
+FONT 8, "Helv"
+{
+    LTEXT           "&Typsnitt:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "Typsnittss&til:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Storlek:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "Ok",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Avbryt",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "&Använd", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "&Hjälp" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "Effekter",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "&Genomstruken", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "&Understruken", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Färg:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Test",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Färg"
+FONT 8, "Helv"
+{
+ LTEXT "&Grundläggande färger:",   1088, 4,    4,  140, 10
+ LTEXT "&Egendefinerade färger:",  1089, 4,   106, 140, 10
+ LTEXT "Enfärgat",  1090, 150, 151,  48, 10
+ LTEXT   "&Röd:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Grön:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Blå:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Int:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Met:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "Ok",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Hjälp", 1038,100,166, 44, 14
+ PUSHBUTTON "&Lägg till egendefinerad färg",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Defingnera egen färg >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Sök"
+FONT 8, "Helv"
+{
+ LTEXT "&Sök efter:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Bara hela ord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skillnad på stora/små bokstäver", 1041, 4, 42, 100, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Riktning", 1072, 107, 26, 68, 28
+ CONTROL "&Upp", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Ner", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+ DEFPUSHBUTTON "&Sök efter nästa", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjälp", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Sök/ersätt"
+FONT 8, "Helv"
+{
+ LTEXT "&Sök efter:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "&Ersätt med:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Bara hela ord", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "&Skillnad på stora/små bokstäver", 1041, 5, 62, 104, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ DEFPUSHBUTTON "&Sök efter nästa", IDOK, 174, 4, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Ersätt", 1024, 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Ersätt &alla", 1025, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Hjälp", 1038, 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Skriv ut"
+FONT 8, "Helv"
+{
+ DEFPUSHBUTTON   "Ok",     IDOK,     180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON
+ PUSHBUTTON      "Avbryt", IDCANCEL, 232,164, 48,14, WS_GROUP
+ PUSHBUTTON      "&Hjälp",  pshHelp,  50, 161, 48,14, WS_GROUP
+
+ GROUPBOX        "Skrivare",       grp4,   8,  4, 272,84, WS_GROUP
+ CONTROL         "Skr&iv till fil",chx1,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12
+ PUSHBUTTON      "&Egenskaper",    psh2, 212, 17,  60,14, WS_GROUP
+ LTEXT           "&Namn:",         stc6,  16, 20,  36,8
+ COMBOBOX                          cmb4,  52, 18,  152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+ LTEXT           "Dum status",     stc12, 52, 36, 224,10, SS_NOPREFIX |SS_LEFTNOWORDWRAP
+ LTEXT           "Typ:",           stc7,  16, 48,  36,10, SS_NOPREFIX
+ LTEXT           "Dum typ",        stc11, 52, 48, 224,10, SS_NOPREFIX| SS_LEFTNOWORDWRAP
+ LTEXT           "Plats:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+ LTEXT           "Dum plats",      stc14, 52, 60, 224,10, SS_NOPREFIX| SS_LEFTNOWORDWRAP
+ LTEXT           "Kommentar:",     stc9,  16, 72,  36,10, SS_NOPREFIX
+ LTEXT           "Dum kommentar",  stc13, 52, 72, 152,10, SS_NOPREFIX| SS_LEFTNOWORDWRAP
+
+ GROUPBOX        "Kopior",         grp2, 160, 92, 120,64, WS_GROUP
+ LTEXT           "Antal k&opior:", stc5,168,108,68,8
+ ICON            "",               ico3, 162,124,  76,24,WS_GROUP | SS_CENTERIMAGE
+ CONTROL         "&Sortera",       chx2,"Button",BS_AUTOCHECKBOX |WS_GROUP | WS_TABSTOP,240,130,36,12
+ EDITTEXT                          edt3, 240,106,  32,12, WS_GROUP |ES_NUMBER
+
+ GROUPBOX        "Skriv ut",       grp1,   8,92,  144,64, WS_GROUP
+ CONTROL         "&Alla",          rad1,"Button",BS_AUTORADIOBUTTON |WS_GROUP | WS_TABSTOP,16,106,64,12
+ CONTROL         "Si&dor",         rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12
+ CONTROL         "&Markering",     rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12
+ EDITTEXT                          edt1,  74,122,  26,12, WS_GROUP |ES_NUMBER
+ EDITTEXT                          edt2, 118,122,  26,12, WS_GROUP |ES_NUMBER
+ RTEXT           "&från:",         stc2,  52,124,  20,8
+ RTEXT           "&till:",         stc3, 100,124,  16,8
+
+}
+
+PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE  32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+      DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Utskriftsformat"
+FONT 8, "Helv"
+BEGIN
+ DEFPUSHBUTTON   "Ok",IDOK,180,156,48,14,WS_GROUP
+ PUSHBUTTON      "Avbryt",IDCANCEL,232,156,48,14
+
+ GROUPBOX        "Skrivare",   grp4,   8,  4, 272,84, WS_GROUP
+ PUSHBUTTON      "&Egenskaper",    psh2, 212, 17, 60,14, WS_GROUP
+ LTEXT           "&Namn:",         stc6,  16, 20,  36,8
+ COMBOBOX                          cmb1,  52, 18,152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LTEXT           "Status:",        stc8,  16, 36,  36,10, SS_NOPREFIX
+ LTEXT           "Dum State",      stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT           "Typ:",           stc7,  16, 48,  36,10, SS_NOPREFIX
+ LTEXT           "Dum typ",        stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT           "Plats:",         stc10, 16, 60,  36,10, SS_NOPREFIX
+ LTEXT           "Dum plats",      stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT           "Kommentar:",     stc9,  16, 72,  36,10, SS_NOPREFIX
+ LTEXT           "Dum kommnetar",  stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ GROUPBOX        "Papper",         grp2,   8, 92, 164,56, WS_GROUP
+ LTEXT           "St&orlek:",      stc2,  16,108,  36, 8
+ COMBOBOX                          cmb2,  52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LTEXT           "&Källa:",        stc3,  16,128,  36, 8
+ COMBOBOX                          cmb3,  52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ GROUPBOX        "Orientering",    grp1, 180, 92, 100,56, WS_GROUP
+ ICON            "",               ico1, 195,112,  18,20, WS_GROUP
+ CONTROL         "St&ående",       rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12
+ CONTROL         "L&iggande",      rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12
+END
+
+PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Utskriftsformat"
+FONT 8, "Helv"
+BEGIN
+  CONTROL "", rct1, 130, 0x00020006, 80, 8, 80, 80,  SS_WHITERECT
+  CONTROL "", rct2, 130, 0x00020005, 160, 12, 4, 80, SS_GRAYRECT
+  CONTROL "", rct3, 130, 0x00020005, 84, 88, 80, 4,  SS_GRAYRECT
+  GROUPBOX "Papper", grp2, 8, 96, 224, 56, BS_GROUPBOX
+  LTEXT "&Storlek:", stc2, 16, 112, 36, 8
+  COMBOBOX cmb2, 64, 110, 160, 160,CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  LTEXT "&Tray:", stc3, 16, 132, 36, 8
+  COMBOBOX cmb3, 64, 130, 160, 160,CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL
+  GROUPBOX "Orientering", grp1, 8, 156, 64, 56, BS_GROUPBOX
+  AUTORADIOBUTTON "&Stående", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON
+  AUTORADIOBUTTON "&Liggande", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON
+  GROUPBOX "Marginaler", grp4, 80, 156, 152, 56, BS_GROUPBOX
+  LTEXT "&Vänster:", stc15, 88, 172, 21, 8
+  EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Höger:", stc16, 159, 172, 27, 8
+  EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Överkant:", stc17, 88, 192, 21, 8
+  EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  LTEXT "&Nederkant:", stc18, 159, 192, 23, 8
+  EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER
+  DEFPUSHBUTTON "Ok", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON
+  PUSHBUTTON "Avbryt", IDCANCEL, 126, 220, 50, 14
+  PUSHBUTTON "&Skrivare...", psh3, 184, 220, 48, 14
+END
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "Öppna"
+FONT 8, "Helv"
+{
+ LTEXT       "Leta &i",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+ COMBOBOX    IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+ LTEXT       "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+ LISTBOX     IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+ LTEXT       "Fil&namn:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+ EDITTEXT    IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL
+
+ LTEXT       "&Filformat",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+ COMBOBOX    IDC_FILETYPE,54,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+ CONTROL     "Öppna som &skrivskyddad",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+ DEFPUSHBUTTON       "&Öppna",                 IDOK,222,110,50,14
+ PUSHBUTTON          "Avbryt",                IDCANCEL,222,128,50,14
+ PUSHBUTTON          "&Hjälp",                 pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_ABOUTBOX            "&Om FolderPicker Test"
+ IDS_DOCUMENTFOLDERS     "Dokumentmappar"
+ IDS_PERSONAL            "Mina Documents"
+ IDS_FAVORITES           "Mina Favorites"
+ IDS_PATH                "Systemsökväg"
+ IDS_DESKTOP             "Skrivbord"
+ IDS_FONTS               "Typsnitt"
+ IDS_MYCOMPUTER          "Den här datorn"
+}
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_SYSTEMFOLDERS       "Systemmappar"
+ IDS_LOCALHARDRIVES      "Lokala hårddiskar"
+ IDS_FILENOTFOUND        "Kunde inte hitta filen"
+ IDS_VERIFYFILE          "Vad god verifiera så korrekt filnamn är angivet"
+ IDS_CREATEFILE          "Filen finns inte\nVill du skapa fil"
+ IDS_OVERWRITEFILE       "Filen finns redan.\nVill du ersätta den?"
+ IDS_INVALID_FILENAME_TITLE "Illegalt tecken i sökväg"
+ IDS_INVALID_FILENAME    "Ett filnamn kan inte innehålla någon av följande tecken: \n                                               / : < > |"
+ IDS_PATHNOTEXISTING     "Sökvägen finns inte"
+ IDS_FILENOTEXISTING     "Filen finns inte"
+}
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_UPFOLDER         "Upp en nivå"
+ IDS_NEWFOLDER        "Skapa ny mapp"
+ IDS_LISTVIEW         "Lista"
+ IDS_REPORTVIEW       "Detaljerat"
+ IDS_TODESKTOP        "Visa Skrivbordet"
+}
+
+STRINGTABLE DISCARDABLE
+{
+ PD32_PRINT_TITLE       "Skriv ut"
+
+ PD32_VALUE_UREADABLE                  "Oläsbart fält"
+ PD32_INVALID_PAGE_RANGE "Detta värdet ligger inte inom sidourvalet.\n\
+Var god skriv in ett värde mellan %d och %d."
+ PD32_FROM_NOT_ABOVE_TO                "'från'-fältet kan inte överskrida 'till'-fältet"
+ PD32_MARGINS_OVERLAP                  "Marginalerna överlappar eller är utanför \
+pappersgränserna.\nVar god skriv in marginallerna igen."
+ PD32_NR_OF_COPIES_EMPTY               "Numret 'Antal kopior' kan inte vara tomt."
+ PD32_TOO_LARGE_COPIES                 "Din skrivare stödjer inte så många kopior som du angav. Vad god skriv in ett värde mellan 1 och %d."
+ PD32_PRINT_ERROR                      "Ett skrivarfel inträffade."
+ PD32_NO_DEFAULT_PRINTER               "Det finns ingen standardskrivare."
+ PD32_CANT_FIND_PRINTER                "Kan inte hitta skrivare."
+ PD32_OUT_OF_MEMORY                    "Slut på minne."
+ PD32_GENERIC_ERROR                    "Ett fel uppstog."
+ PD32_DRIVER_UNKNOWN                   "Okänd skrivardrivrutin."
+
+ PD32_DEFAULT_PRINTER                  "Standardskrivare; "
+ PD32_NR_OF_DOCUMENTS_IN_QUEUE         "Det är %d dokument i kön"
+ PD32_PRINT_ALL_X_PAGES                "&Alla %d sidor"
+ PD32_MARGINS_IN_INCHES                "Marginaler [inches]"
+ PD32_MARGINS_IN_MILIMETERS            "Marginaler [millimeter]"
+ PD32_MILIMETERS                       "millimeter"
+
+ PD32_PRINTER_STATUS_READY             "Redo"
+ PD32_PRINTER_STATUS_PAUSED            "Stannad; "
+ PD32_PRINTER_STATUS_ERROR             "Fel; "
+ PD32_PRINTER_STATUS_PENDING_DELETION  "Pendlande borttagning; "
+ PD32_PRINTER_STATUS_PAPER_JAM         "Papperskrångel; "
+ PD32_PRINTER_STATUS_PAPER_OUT         "Slut på papper; "
+ PD32_PRINTER_STATUS_MANUAL_FEED       "Fyll på papper manuellet; "
+ PD32_PRINTER_STATUS_PAPER_PROBLEM     "Pappersproblem; "
+ PD32_PRINTER_STATUS_OFFLINE           "Skriverare än avstängd; "
+ PD32_PRINTER_STATUS_IO_ACTIVE         "I/O Aktiv; "
+ PD32_PRINTER_STATUS_BUSY              "Upptagen; "
+ PD32_PRINTER_STATUS_PRINTING          "Skriver ut; "
+ PD32_PRINTER_STATUS_OUTPUT_BIN_FULL   "Utmatningsfacket är fullt; "
+ PD32_PRINTER_STATUS_NOT_AVAILABLE     "Inte tillgänglig; "
+ PD32_PRINTER_STATUS_WAITING           "Väntar; "
+ PD32_PRINTER_STATUS_PROCESSING        "Proceserar; "
+ PD32_PRINTER_STATUS_INITIALIZING      "Initialiserar; "
+ PD32_PRINTER_STATUS_WARMING_UP        "Värmer upp; "
+ PD32_PRINTER_STATUS_TONER_LOW         "Toner snart slut; "
+ PD32_PRINTER_STATUS_NO_TONER          "Inga toner; "
+ PD32_PRINTER_STATUS_PAGE_PUNT         "Sidopunt; "
+ PD32_PRINTER_STATUS_USER_INTERVENTION "Avbruten av användaren; "
+ PD32_PRINTER_STATUS_OUT_OF_MEMORY     "Slut på minne; "
+ PD32_PRINTER_STATUS_DOOR_OPEN         "Skrivardörren är öppen; "
+ PD32_PRINTER_STATUS_SERVER_UNKNOWN    "Skrivarserver okänd; "
+ PD32_PRINTER_STATUS_POWER_SAVE        "Felsäkert läge; "
+}
diff --git a/reactos/lib/comdlg32/cdlg_Wa.rc b/reactos/lib/comdlg32/cdlg_Wa.rc
new file mode 100644 (file)
index 0000000..5f828fe
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ * Copyright 1999 Pablo Saratxaga
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_WALON, SUBLANG_DEFAULT
+
+/*
+ * Si vos voloz aider avou li ratoûrnaedje des libes programes è walon,
+ * vos poloz scrîre a l' adresse emile <linux-wa@chanae.alphanet.ch>
+ */
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Drovî"
+FONT 8, "Helv"
+{
+ LTEXT "&No do fitchî:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Ridants", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Djîveye des fitchîs del sôr&te:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Plakes:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "I Va", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Rinoncî", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Rén ki &lere", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Schaper èt rlomer..."
+FONT 8, "Helv"
+{
+ LTEXT "&No do fitchî:", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "&Ridants:", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Djîveye des fitchîs del sôr&te:", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Plakes:", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "I Va", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Rinoncî", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Rén ki &lere", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Rexhe"
+FONT 8, "Helv"
+{
+ LTEXT "Sicrirece:", 1088, 6, 6, 40, 9
+ LTEXT "", 1089, 60, 6, 150, 9
+ GROUPBOX "Cwé rexhe", 1072, 6, 30, 160, 65, BS_GROUPBOX
+ RADIOBUTTON "&Tot", 1056, 16, 45, 60, 12
+ RADIOBUTTON "Tch&wezî", 1057, 16, 60, 60, 12
+ RADIOBUTTON "&Pådjes", 1058, 16, 75, 60, 12
+ DEFPUSHBUTTON "I Va", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Rinoncî", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Apon&tiaedje", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ LTEXT "&Di:", 1090, 60, 80, 30, 9
+ LTEXT "&A:", 1091, 120, 80, 30, 9
+ LTEXT "&Cwalité po rexhe:", 1092, 6, 100, 76, 9
+ COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ CHECKBOX "Rexhe sol &fitchî", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Streu scrijhas", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Apontiaedje del rexhe"
+FONT 8, "Helv"
+{
+ GROUPBOX "Sicrirece", 1072, 6, 10, 180, 65, BS_GROUPBOX
+ RADIOBUTTON "Sicrirece tchwezi por &vos", 1056, 16, 20, 80, 12
+ LTEXT "[nole]", 1088, 35, 35, 120, 9
+ RADIOBUTTON "Sicrirece &specifike", 1057, 16, 50, 80, 12
+ COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "I Va", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Rinoncî", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "A&pontiaaedje", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientation", 1073, 6, 85, 100, 50, BS_GROUPBOX
+ RADIOBUTTON "D' &Astampé", 1058, 50, 100, 40, 12
+ RADIOBUTTON "Di &Coûtchî", 1059, 50, 115, 40, 12
+ ICON "LANDSCAP", 1097, 10, 95, 32, 32
+ ICON "PORTRAIT", 1098, 10, 95, 32, 32
+ GROUPBOX "Papî", 1074, 120, 85, 180, 50, BS_GROUPBOX
+ LTEXT "&Grandeu", 1089, 130, 95, 30, 9
+ LTEXT "Ali&mentåcion", 1090, 130, 110, 30, 9
+ COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 264, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Fontes"
+FONT 8, "Helv"
+{
+    LTEXT           "&Fonte:",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,94,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "S&tîle del fonte:",1089 ,108,3,44,9
+    COMBOBOX        1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "&Grandeu:",1090,179,3,30,9
+    COMBOBOX        1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "I Va",IDOK,218,6,40,14,WS_GROUP
+    PUSHBUTTON      "Rinoncî",IDCANCEL,218,23,40,14,WS_GROUP
+    PUSHBUTTON      "&Mete èn Oûve", 1026,218,40,40,14,WS_GROUP
+    PUSHBUTTON      "&Aide" , 1038,218,57,40,14,WS_GROUP
+    GROUPBOX        "Efets",1072,6,72,84,34,WS_GROUP
+    CHECKBOX        "&Barré", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX        "&Sorligné", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "&Coleur:", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                    CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "Egzimpe",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZzÅåÇçÛû",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Coleurs"
+FONT 8, "Helv"
+{
+ LTEXT "&Maisse coleurs:",   1088, 4,    4,  140, 10
+ LTEXT "&Coleurs da vosse:",  1089, 4,   106, 140, 10
+ LTEXT "Coleur | &Uni",  1090, 150, 151,  48, 10
+ LTEXT   "&Rodje:", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Vert:",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "&Bleu:",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Tinte:" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Sat.:" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "&Lum.:" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,18,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116 CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "I Va",  IDOK,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Rinoncî", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", 1038,100,166, 44, 14
+ PUSHBUTTON "Rad&jouter des coleur da vosse", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Defini les coleurs da vosse >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&u",713,300,200,4,14   /* just a dummy:  'i' is  like  &i in "sol&id" */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Cwerî"
+FONT 8, "Helv"
+{
+ LTEXT "C&werî:", -1, 4, 8, 42, 8
+ EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Mots &etîrs seulmint", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Rispecter les &madjuscules/minuscules", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "Direccion", 1072, 107, 26, 68, 28
+ CONTROL "&Copete", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12
+ CONTROL "&Bas", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12
+
+ DEFPUSHBUTTON "&Shûvant",   IDOK, 182,  5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "Rinoncî",IDCANCEL   , 182, 23, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", pshHelp     , 182, 45, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 230, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Mete el plaece"
+FONT 8, "Helv"
+{
+ LTEXT "C&werî:", -1, 4, 9, 48, 8
+ EDITTEXT 1152, 54, 7, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "Mete el &place:", -1, 4, 26, 48, 8
+ EDITTEXT 1153, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Mots &etîrs seulmint", 1040, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "Rispecter les &madjuscules/minuscules", 1041, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "&Shûvant",   IDOK, 174,  4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "&Rimplacer", psh1   , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Rimplacer &tot",psh2, 174, 38, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Rinoncî",IDCANCEL   , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Aide", pshHelp     , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
diff --git a/reactos/lib/comdlg32/cdlg_Zh.rc b/reactos/lib/comdlg32/cdlg_Zh.rc
new file mode 100644 (file)
index 0000000..aba3852
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2000 Aric Stewart
+ *
+ * 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
+ */
+
+/*
+ * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES.
+ */
+
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
+#pragma code_page(936)  /* FIXME: default for CHINESE_TRADITIONAL is 950 */
+
+OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "é_\86¢"
+FONT 8, "Helv"
+{
+ LTEXT "\99n°¸Ãû·Q(&N):", 1090, 6, 6, 100, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Ä¿ä\9b(&D):", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "\99n°¸î\90ÐÍ(&T):", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "´Åµú\99C(&V):", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "é_\86¢", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÇóÖú(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Ψ×x(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+
+SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Áí´æÐÂ\99n..."
+FONT 8, "Helv"
+{
+ LTEXT "\99n°¸Ãû·Q(&N):", 1090, 6, 6, 76, 9
+ EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
+ LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "Ä¿ä\9b(&D):", -1, 110, 6, 92, 9
+ LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP
+ LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
+ LTEXT "´æ\99\90ÐÍ(&T):", 1089, 6, 104, 90, 9
+ COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "´Åµú\99C(&V):", 1091, 110, 104, 92, 9
+ COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Áí´æÐÂ\99n", 1, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", 2, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÇóÖú(&H)", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP
+ CHECKBOX "Ψ×x(&R)", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+}
+
+CHOOSE_FONT DIALOG DISCARDABLE  13, 54, 294, 147
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "×ÖÐÍ"
+FONT 8, "Helv"
+{
+    LTEXT           "×ÖÐÍ(&F):",1088 ,6,3,40,9
+    COMBOBOX        1136 ,6,13,124,54,  CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "×ÖÐÍ\98Óʽ(&Y):",1089 ,138,3,44,9
+    COMBOBOX        1137,138,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE
+    LTEXT           "´óС(&S):",1090,209,3,30,9
+    COMBOBOX        1138,209,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL |
+                    WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT
+    DEFPUSHBUTTON   "´_¶¨",IDOK,248,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+    PUSHBUTTON      "È¡Ïû",IDCANCEL,248,23,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "Ì×ÓÃ(&A)", 1026,248,40,40,14,WS_GROUP | WS_TABSTOP
+    PUSHBUTTON      "ÇóÖú(&H)" , 1038,248,57,40,14,WS_GROUP | WS_TABSTOP
+    GROUPBOX        "Ч¹û",1072,6,72,84,34,WS_GROUP
+    CHECKBOX       "\84h³ý¾\80(&K)", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP
+    CHECKBOX       "µ×¾\80(&U)", 1041, 10,94,50,10, BS_AUTOCHECKBOX
+    LTEXT           "É«²Ê(&C):", 1091 ,6,110,30,9
+    COMBOBOX        1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |  WS_BORDER | WS_VSCROLL | WS_TABSTOP
+    GROUPBOX        "¹ Àý",grp2,98,72,120,36,WS_GROUP
+    CTEXT           "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE
+    LTEXT           "Scr&ipt (translate):",stc7 ,98,114,80,9
+    COMBOBOX        cmb5,98,124,120,10,CBS_DROPDOWNLIST |CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+                   CBS_AUTOHSCROLL |   WS_VSCROLL | WS_TABSTOP
+}
+
+
+CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "É«²Ê"
+FONT 8, "Helv"
+{
+ LTEXT "»ù±¾É«²Ê(&B):",   1088, 4,    4,  140, 10
+ LTEXT "×Ô¶¨É«²Ê(&C):",  1089, 4,   106, 140, 10
+ LTEXT "É«²Ê | \8c\8dÐÄ(&I)",  1090, 150, 151,  48, 10
+ LTEXT   "¼t(&R):", 726 /*1094*/,249,126,24,10
+ EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "¾G(&G):",727/*1095*/,249,140,24,10
+ EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT   "Ë{(&B):",728 /*1096*/,249,154,24,10
+ EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "É«Õ{(&H):" ,723 /*1091*/,202,126,22,10
+ EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "\9dâ¶È(&S):" ,724 /*1092*/,202,140,22,10
+ EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT  "ÁÁ¶È(&L):" ,725 /*1093*/,202,154,22,10
+ EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP
+ CONTROL "" ,720,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,14,140,86
+ CONTROL "" ,721,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP,4,116,140,28
+ CONTROL "" ,710,"STATIC",WS_BORDER|SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,4,118,116
+ CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116
+ CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26
+ DEFPUSHBUTTON "´_¶¨",  1,  4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", 2, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÇóÖú(&H)", 1038,100,166, 44, 14
+ PUSHBUTTON "ÐÂÔö×Ô¶¨É«²Ê(&A)",    712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "¶¨Áx×Ô¶¨É«²Ê(&D) >>", 719/*1025*/,   4, 150, 142, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON  "&i",713,300,200,4,14   /* just a dummy:  'i' is  like  &i  in "sol&id"  */
+}
+
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 263, 62
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "ËÑ\8c¤"
+FONT 8, "Helv"
+{
+ LTEXT "ËÑ\8c¤Ä¿\98Ë(&N):", -1, 4, 8, 50, 8
+ EDITTEXT 1152, 61, 7, 130, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "È«×ÖÆ´\8c\91í\9a·ûºÏ(&W)", 1040, 4, 26, 89, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "´óС\8c\91Ò\95\9eéÏà®\90(&C)", 1041, 4, 42, 89, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+ GROUPBOX "·½Ïò", 1072, 95, 26, 97, 28
+ CONTROL "ÏòÉÏ(&U)", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 100, 38, 45, 12
+ CONTROL "ÏòÏÂ(&D)", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 145, 38, 45, 12
+
+ DEFPUSHBUTTON "ÕÒÏÂÒ»\82\80(&F)", IDOK, 199,  5, 60, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "È¡Ïû", IDCANCEL    , 199, 23, 60, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÇóÖú(&H)", pshHelp         , 199, 45, 60, 14, WS_GROUP | WS_TABSTOP
+}
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 263, 94
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "È¡´ú"
+FONT 8, "Helv"
+{
+ LTEXT "\8c¤ÕÒÄ¿\98Ë(&N):", -1, 4, 9, 50, 8
+ EDITTEXT 1152, 61, 7, 130, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ LTEXT "È¡´ú\9eé(&P):", -1, 4, 26, 50, 8
+ EDITTEXT 1153, 61, 24, 130, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
+ CHECKBOX "È«×ÖÆ´\8c\91í\9a·ûºÏ(&W)", 1040, 5, 46, 89, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ CHECKBOX "´óС\8c\91Ò\95\9eéÏë®\90(&C)", 1041, 5, 62, 89, 12, BS_AUTOCHECKBOX | WS_TABSTOP
+
+ DEFPUSHBUTTON "ÕÒÏÂÒ»\82\80(&F)", IDOK, 199,  4, 60, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON
+ PUSHBUTTON "È¡´ú(&R)", psh1    , 199, 21, 60, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡´úÈ«²¿(&A)", psh2 , 199, 38, 60, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "È¡Ïû", IDCANCEL    , 199, 55, 60, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "ÇóÖú(&H)", pshHelp         , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN
+CAPTION "é_\86¢Åf\99n"
+FONT 8, "Helv"
+{
+    LTEXT      "ËÑ\8c¤Î»ÖÃ(&I)",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY
+    COMBOBOX   IDC_LOOKIN,52,3,130,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+
+    LTEXT      "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE
+    LISTBOX    IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE
+
+    LTEXT      "\99n°¸Ãû·Q(&N):",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY
+    EDITTEXT   IDC_FILENAME,59,110,155,12,ES_AUTOHSCROLL
+
+    LTEXT      "\99n°¸î\90ÐÍ(&T):",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY
+    COMBOBOX   IDC_FILETYPE,59,126,155,53,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+
+    CONTROL    "é_\86¢³ÉΨ×x(&R)",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10
+
+    DEFPUSHBUTTON      "é_\86¢(&O)",              IDOK,222,110,50,14
+    PUSHBUTTON         "È¡Ïû",          IDCANCEL,222,128,50,14
+    PUSHBUTTON         "ÇóÖú(&H)",              pshHelp,222,145,50,14
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_ABOUTBOX            "&About FolderPicker Test"
+    IDS_DOCUMENTFOLDERS     "Îļþ\8aA"
+    IDS_PERSONAL            "ÎÒµÄÎļþ"
+    IDS_FAVORITES           "ÎÒµÄ×î\90Û"
+    IDS_PATH                "ϵ½y·\8f½"
+    IDS_DESKTOP             "×ÀÃæ"
+    IDS_FONTS               "×ÖÐÍ"
+    IDS_MYCOMPUTER          "ÎÒµÄë\8aÄX"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SYSTEMFOLDERS       "System Folders"
+    IDS_LOCALHARDRIVES      "Local Hard Drives"
+    IDS_FILENOTFOUND        "File not found"
+    IDS_VERIFYFILE          "Please verify if the correct file name was given"
+    IDS_CREATEFILE          "File does not exist\nDo you want to create file"
+    IDS_OVERWRITEFILE       "File does already exist.\nDo you want to replace it?"
+    IDS_INVALID_FILENAME_TITLE "Invalid character(s) in path"
+    IDS_INVALID_FILENAME    "A filename cannot contain any of the following characters: \n                          / : < > |"
+    IDS_PATHNOTEXISTING     "Path does not exist"
+    IDS_FILENOTEXISTING     "File does not exist"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_UPFOLDER         "ÏòÉÏÒ»\8cÓ"
+    IDS_NEWFOLDER        "½¨Á¢ÐÂÙYÁÏ\8aA"
+    IDS_LISTVIEW         "Çå\86Î"
+    IDS_REPORTVIEW       "Ô\94¼\9aÙYÁÏ"
+    IDS_TODESKTOP        "ï@ʾ×ÀÃæ"
+}
+
+#pragma code_page(default)
diff --git a/reactos/lib/comdlg32/cdlg_xx.rc b/reactos/lib/comdlg32/cdlg_xx.rc
new file mode 100644 (file)
index 0000000..bc6bc60
--- /dev/null
@@ -0,0 +1,620 @@
+/*
+ * Language neutral resources for Common Dialogs
+ *
+ * Copyright 1999 Bertho Stultiens
+ * Copyright 1999 Klaas van Gend
+ *
+ * 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 "windef.h"
+#include "winbase.h"
+#include "winver.h"
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+#define WINE_FILEDESCRIPTION_STR "Common Dialog Boxes"
+#define WINE_FILENAME_STR "comdlg32.dll"
+#define WINE_FILEVERSION 4,0,0,950 /* Maybe 4.1.0.980 for win98?? */
+#define WINE_FILEVERSION_STR "4.0"
+
+#include "wine/wine_common_ver.rc"
+
+/* BINRES pd32_collate.ico */
+PD32_COLLATE ICON DISCARDABLE LOADONCALL pd32_collate.ico
+/* {
+ '00 00 01 00 01 00 4C 18 10 00 00 00 00 00 48 05'
+ '00 00 16 00 00 00 28 00 00 00 4C 00 00 00 30 00'
+ '00 00 01 00 04 00 00 00 00 00 E0 04 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80'
+ '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 04 00 00 00 00 00 0F F0 00 00 00'
+ '00 00 0F F0 00 00 00 00 00 00 00 00 00 0F F0 00'
+ '00 00 00 00 0F F0 00 00 00 00 00 00 80 04 00 00'
+ '00 00 00 0F FF F0 00 00 00 0F FF F0 00 00 00 00'
+ '00 00 00 00 00 0F FF F0 00 00 00 0F FF F0 00 00'
+ '00 00 00 00 80 04 00 00 00 00 00 FF FF FF FF 00'
+ '00 00 00 F0 00 00 00 00 00 00 00 00 00 FF FF FF'
+ 'FF 00 00 00 00 F0 00 00 00 00 00 00 44 03 00 00'
+ '00 00 00 FF FF FF FF FF 00 FF F0 FF 00 00 00 00'
+ '00 00 00 00 00 FF FF FF FF FF 00 FF F0 FF 00 00'
+ '00 00 00 00 80 04 00 00 00 00 0F FF FF FF FF FF'
+ 'FF 00 F0 FF 00 00 00 00 00 00 00 00 0F FF FF FF'
+ 'FF FF FF 00 F0 FF 00 00 00 00 00 00 04 00 00 00'
+ '00 00 0F FF FF FF FF FF FF 0F F0 FF F0 00 00 00'
+ '00 00 00 00 0F FF FF FF FF FF FF 0F F0 FF F0 00'
+ '00 00 00 00 62 01 00 00 00 00 0F FF FF FF FF FF'
+ 'FF 0F F0 FF F0 00 00 00 00 00 00 00 0F FF FF FF'
+ 'FF FF FF 0F F0 FF F0 00 00 00 00 00 E2 00 00 00'
+ '00 00 FF FF FF FF FF FF F0 FF F0 FF F0 00 00 00'
+ '00 00 00 00 FF FF FF FF FF FF F0 FF F0 FF F0 00'
+ '00 00 00 00 00 A0 00 00 00 00 FF FF FF FF FF FF'
+ 'F0 FF F0 FF FF 00 00 00 00 00 00 00 FF FF FF FF'
+ 'FF FF F0 FF F0 FF FF 00 00 00 00 00 FF FF 00 00'
+ '00 0F FF FF FF FF FF FF 0F FF F0 FF FF 00 00 00'
+ '00 00 00 0F FF FF FF FF FF FF 0F FF F0 FF FF 00'
+ '00 00 00 00 FF FF 00 00 00 0F FF FF FF FF FF FF'
+ '0F FF F0 FF FF 00 00 00 00 00 00 0F FF FF FF FF'
+ 'FF FF 0F FF F0 FF FF 00 00 00 00 00 FF FF 00 00'
+ '00 0F FF FF FF FF FF FF 0F FF F0 F0 0F F0 00 00'
+ '00 00 00 0F FF FF FF FF FF FF 0F FF F0 F0 0F F0'
+ '00 00 00 00 FF FF 00 00 00 FF FF FF FF FF FF F0'
+ 'FF FF F0 0F F0 F0 00 00 00 00 00 FF FF FF FF FF'
+ 'FF F0 FF FF F0 0F F0 F0 00 00 00 00 FF FF 00 00'
+ '00 FF FF FF FF FF FF F0 FF FF F0 FF F0 FF 00 00'
+ '00 00 00 FF FF FF FF FF FF F0 FF FF F0 FF F0 FF'
+ '00 00 00 00 FF FF 00 00 00 FF FF FF FF FF 0F F0'
+ 'FF FF F0 FF 00 0F 00 00 00 00 00 FF FF FF FF FF'
+ '0F F0 FF FF F0 FF 00 0F 00 00 00 00 FF FF 00 00'
+ '0F FF FF FF FF FF 0F 0F 00 00 F0 FF FF 0F 00 00'
+ '00 00 0F FF FF FF FF FF 0F 0F 00 00 F0 FF FF 0F'
+ '00 00 00 00 FF FF 00 00 0F FF FF FF FF F0 FF 0F'
+ 'F0 FF F0 FF 00 FF F0 00 00 00 0F FF FF FF FF F0'
+ 'FF 0F F0 FF F0 FF 00 FF F0 00 00 00 FF FF 00 00'
+ '00 0F FF FF F0 F0 F0 FF FF 0F F0 FF F0 00 00 00'
+ '00 00 00 0F FF FF F0 F0 F0 FF FF 0F F0 FF F0 00'
+ '00 00 00 00 FF FF 00 00 00 00 00 FF FF 00 F0 FF'
+ '0F F0 F0 F0 00 00 00 00 00 00 00 00 00 FF FF 00'
+ 'F0 FF 0F F0 F0 F0 00 00 00 00 00 00 FF FF 00 00'
+ '00 00 00 00 FF FF 0F FF 0F F0 F0 00 00 00 00 00'
+ '00 00 00 00 00 00 FF FF 0F FF 0F F0 F0 00 00 00'
+ '00 00 00 00 FF FF 00 00 00 00 00 00 00 0F 0F FF'
+ 'F0 0F F0 00 00 00 00 00 00 00 00 00 00 00 00 0F'
+ '0F FF F0 0F F0 00 00 00 00 00 00 00 FF FF 00 00'
+ '00 00 00 00 0F F0 FF FF FF FF F0 00 00 00 00 00'
+ '00 00 00 00 00 00 0F F0 FF FF FF FF F0 00 00 00'
+ '00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 A0 FF C7'
+ 'FF 9F FF FC 7F F9 FF F0 00 00 FF C0 FC 0F FF FC'
+ '0F C0 FF F0 00 00 FF C0 30 0F FF FC 03 00 FF F0'
+ '00 00 FF 80 00 0F FF F8 00 00 FF F0 00 00 FF 80'
+ '00 07 FF F8 00 00 7F F0 00 00 FF 00 00 03 FF F0'
+ '00 00 3F F0 00 00 FF 00 00 03 FF F0 00 00 3F F0'
+ '00 00 FF 00 00 03 FF F0 00 00 3F F0 00 00 FE 00'
+ '00 03 FF E0 00 00 3F F0 00 00 FE 00 00 01 FF E0'
+ '00 00 1F F0 00 00 FC 00 00 01 FF C0 00 00 1F F0'
+ '00 00 FC 00 00 00 FF C0 00 00 0F F0 00 00 FC 00'
+ '00 00 FF C0 00 00 0F F0 00 00 F8 00 00 00 FF 80'
+ '00 00 0F F0 00 00 F8 00 00 00 7F 80 00 00 07 F0'
+ '00 00 F8 00 00 00 7F 80 00 00 07 F0 00 00 F0 00'
+ '00 00 7F 00 00 00 07 F0 00 00 F0 00 00 00 3F 00'
+ '00 00 03 F0 00 00 F8 00 00 00 7F 80 00 00 07 F0'
+ '00 00 FF 00 00 07 FF F0 00 00 7F F0 00 00 FF C0'
+ '00 1F FF FC 00 01 FF F0 00 00 FF F0 00 3F FF FF'
+ '00 03 FF F0 00 00 FF F0 00 3F FF FF 00 03 FF F0'
+ '00 00 FF F0 00 3F FF FF 00 03 FF F0 00 00'
+} */
+
+
+
+/* BINRES pd32_nocollate.ico */
+PD32_NOCOLLATE ICON pd32_nocollate.ico
+/* {
+ '00 00 01 00 01 00 4C 18 10 00 00 00 00 00 48 05'
+ '00 00 16 00 00 00 28 00 00 00 4C 00 00 00 30 00'
+ '00 00 01 00 04 00 00 00 00 00 E0 04 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80'
+ '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 FA 02 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 AD 81 00 FF'
+ 'FF FF FF FF FF 00 00 00 00 00 00 00 FF FF FF FF'
+ 'FF FF 00 00 00 00 00 00 00 FF FF FF FF FF FF 00'
+ '00 00 00 00 13 00 00 FF FF FF FF FF FF 00 00 00'
+ '00 00 00 00 FF FF FF FF FF FF 00 00 00 00 00 00'
+ '00 FF FF FF FF FF FF 00 00 00 00 00 32 04 00 FF'
+ 'FF FF FF FF FF 00 00 00 00 00 00 00 FF FF FF FF'
+ 'FF FF 0F 00 00 00 00 00 00 FF FF FF FF FF FF 0F'
+ '00 00 00 00 02 00 00 FF FF FF FF FF FF 0F 00 00'
+ '00 00 00 00 FF FF FF FF FF FF 0F 00 00 00 00 00'
+ '00 FF FF FF FF FF FF 0F 00 00 00 00 56 01 00 FF'
+ 'FF FF FF FF FF 0F F0 00 00 00 00 00 FF FF FF FF'
+ 'FF FF 0F F0 00 00 00 00 00 FF FF FF FF FF FF 0F'
+ 'F0 00 00 00 4D 04 00 FF FF FF FF FF FF 0F F0 00'
+ '00 00 00 00 FF FF FF FF FF FF 0F F0 00 00 00 00'
+ '00 FF FF FF FF FF FF 0F F0 00 00 00 02 00 00 FF'
+ 'FF FF FF FF FF 0F FF 00 00 00 00 00 FF FF FF FF'
+ 'FF FF 0F FF 00 00 00 00 00 FF FF FF FF FF FF 0F'
+ 'FF 00 00 00 62 01 00 FF FF FF FF FF FF 0F FF 00'
+ '00 00 00 00 FF FF FF FF FF FF 0F FF 00 00 00 00'
+ '00 FF FF FF FF FF FF 0F FF 00 00 00 4D 04 00 FF'
+ 'FF FF FF FF FF 0F FF F0 00 00 00 00 FF FF FF FF'
+ 'FF FF 0F FF F0 00 00 00 00 FF FF FF FF FF FF 0F'
+ 'FF F0 00 00 02 00 00 FF FF FF FF FF FF 0F FF F0'
+ '00 00 00 00 FF FF FF FF FF FF 0F FF 00 00 00 00'
+ '00 FF FF FF FF FF FF 0F FF F0 00 00 62 01 00 FF'
+ 'FF FF FF FF FF 0F F0 FF 00 00 00 00 FF FF FF FF'
+ 'FF FF 0F 00 0F 00 00 00 00 FF FF FF FF FF FF 0F'
+ '00 FF 00 00 00 00 00 FF FF FF FF FF FF 0F F0 FF'
+ '00 00 00 00 FF FF FF FF FF FF 00 0F FF 00 00 00'
+ '00 FF FF FF FF FF FF 00 FF 0F 00 00 02 00 00 FF'
+ 'FF FF FF F0 FF 0F FF 0F F0 00 00 00 FF FF FF F0'
+ '00 0F 0F 00 0F F0 00 00 00 FF FF FF FF 00 FF 0F'
+ 'F0 0F F0 00 62 01 00 FF FF FF FF F0 FF 0F FF F0'
+ 'FF 00 00 00 FF FF FF F0 FF FF 0F FF F0 F0 00 00'
+ '00 FF FF FF F0 FF 0F 0F 0F 0F F0 00 00 00 00 FF'
+ 'FF FF FF F0 FF 0F FF 00 FF 00 00 00 FF FF FF FF'
+ '0F FF 0F FF F0 FF 00 00 00 FF FF FF FF FF 0F 0F'
+ 'FF F0 FF 00 02 00 00 FF FF FF FF F0 FF 0F FF FF'
+ '00 00 00 00 FF FF FF FF F0 FF 0F F0 0F F0 00 00'
+ '00 FF FF FF FF F0 FF 0F F0 0F F0 00 C4 00 00 FF'
+ 'FF FF FF F0 FF 0F FF F0 00 00 00 00 FF FF FF F0'
+ 'FF 0F 0F FF FF 00 00 00 00 FF FF FF F0 FF 0F 0F'
+ 'FF FF 00 00 32 04 00 FF FF FF FF 00 FF 0F FF 00'
+ '00 00 00 00 FF FF FF FF 00 FF 0F FF 00 00 00 00'
+ '00 FF FF FF FF 00 FF 0F FF 00 00 00 02 00 00 FF'
+ 'FF FF FF FF FF 0F 00 00 00 00 00 00 FF FF FF FF'
+ 'FF FF 0F 00 00 00 00 00 00 FF FF FF FF FF FF 0F'
+ '00 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 0F F0 00 00 00 00 00 00 00 00 00 00 00'
+ '0F F0 00 00 00 00 00 00 00 00 00 00 00 0F F0 00'
+ '00 00 00 00 AD 81 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 FF 07 FF F3'
+ 'FF FF FC FF FF FF 3F F0 0F FF 80 01 FF E0 00 7F'
+ 'F8 00 1F F0 00 00 80 01 FF E0 00 3F F8 00 0F FF'
+ 'FF FF 80 00 FF E0 00 3F F8 00 0F F0 00 00 80 00'
+ 'FF E0 00 1F F8 00 07 FF F0 FF 80 00 7F E0 00 1F'
+ 'F8 00 07 F0 00 00 80 00 3F E0 00 0F F8 00 03 FF'
+ 'F0 00 80 00 3F E0 00 0F F8 00 03 FF FF FF 80 00'
+ '1F E0 00 07 F8 00 01 F0 E2 00 80 00 1F E0 00 07'
+ 'F8 00 01 FF F0 FF 80 00 0F E0 00 03 F8 00 00 F0'
+ 'FF FF 80 00 0F E0 00 03 F8 00 00 F0 00 00 80 00'
+ '07 E0 00 01 F8 00 00 7F FF FF 80 00 07 E0 00 01'
+ 'F8 00 00 70 00 00 80 00 03 E0 00 00 F8 00 00 3F'
+ 'F0 FF 80 00 01 E0 00 00 F8 00 00 30 00 0F 80 00'
+ '01 E0 00 00 78 00 00 1F FF 00 80 00 03 E0 00 00'
+ '78 00 00 1F FF FF 80 00 0F E0 00 01 F8 00 00 70'
+ 'FF FF 80 00 1F E0 00 03 F8 00 00 FF 0F FF 80 00'
+ '3F E0 00 0F F8 00 03 FF FF FF 80 00 FF E0 00 3F'
+ 'F8 00 0F F0 00 00 FF C3 FF FF F0 FF FF FC 3F FF'
+ 'FF FF FF E7 FF FF F9 FF FF FE 7F F0 00 00'
+} */
+
+/* BINRES pd32_portrait.ico */
+PD32_PORTRAIT ICON pd32_portrait.ico
+/* {
+ '00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02'
+ '00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00'
+ '00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80'
+ '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00'
+ 'FF F0 00 00 FF FF FF 00 00 00 FF FF 00 00 00 00'
+ 'FF FF 00 FF FF FF FF FF 00 0F FF FF 00 00 00 00'
+ 'FF FF F0 FF FF FF FF FF 00 FF FF FF 00 00 00 00'
+ 'FF FF F0 0F FF FF FF F0 00 FF FF FF 00 00 00 00'
+ 'FF FF FF 0F FF FF FF F0 0F FF FF FF 00 00 00 00'
+ 'FF FF FF 00 00 00 00 00 0F FF FF FF 00 00 00 00'
+ 'FF FF FF F0 FF FF FF 00 FF FF FF FF 00 00 00 00'
+ 'FF FF FF F0 0F FF F0 00 FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF 0F FF F0 0F FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF 00 FF 00 0F FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF F0 FF 00 FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF F0 00 00 FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF 00 0F FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF 00 0F FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF F0 FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF F0 FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF 0F FF F0 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF 0F FF 00 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF 0F F0 00 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF 0F 00 00 00 00 00 00'
+ 'FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 E0 00'
+ '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00'
+ '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00'
+ '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00'
+ '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00'
+ '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00'
+ '00 07 E0 00 00 07 E0 00 00 07 E0 00 00 07 E0 00'
+ '00 07 E0 00 00 07 E0 00 00 0F E0 00 00 1F E0 00'
+ '00 3F E0 00 00 7F E0 00 00 FF E0 00 01 FF'
+} */
+
+/* BINRES pd32_landscape.ico */
+PD32_LANDSCAPE ICON pd32_landscape.ico
+/* {
+ '00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02'
+ '00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00'
+ '00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80'
+ '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0F FF'
+ 'FF F0 00 00 FF FF FF 00 00 00 FF FF FF F0 0F FF'
+ 'FF FF 00 FF FF FF FF FF 00 0F FF FF FF F0 0F FF'
+ 'FF FF F0 FF FF FF FF FF 00 FF FF FF FF F0 0F FF'
+ 'FF FF F0 0F FF FF FF F0 00 FF FF FF FF F0 0F FF'
+ 'FF FF FF 0F FF FF FF F0 0F FF FF FF FF F0 0F FF'
+ 'FF FF FF 00 00 00 00 00 0F FF FF FF FF F0 0F FF'
+ 'FF FF FF F0 FF FF FF 00 FF FF FF FF FF F0 0F FF'
+ 'FF FF FF F0 0F FF F0 00 FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF 0F FF F0 0F FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF 00 FF 00 0F FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF F0 FF 00 FF FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF F0 00 00 FF FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF FF 00 0F FF FF FF FF FF FF F0 0F FF'
+ 'FF FF FF FF FF 00 0F FF FF FF F0 00 00 00 0F FF'
+ 'FF FF FF FF FF F0 FF FF FF FF F0 FF FF 00 0F FF'
+ 'FF FF FF FF FF F0 FF FF FF FF F0 FF F0 00 0F FF'
+ 'FF FF FF FF FF FF FF FF FF FF F0 FF 00 00 0F FF'
+ 'FF FF FF FF FF FF FF FF FF FF F0 F0 00 00 0F FF'
+ 'FF FF FF FF FF FF FF FF FF FF F0 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'
+ 'FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00'
+ '00 03 00 00 00 07 00 00 00 0F 00 00 00 1F 00 00'
+ '00 3F FF FF FF FF FF FF FF FF FF FF FF FF'
+} */
+
+/* BINRES 800.bmp */
+800 BITMAP DISCARDABLE LOADONCALL "800.bmp"
+/* {
+ '42 4D 36 05 00 00 00 00 00 00 36 04 00 00 28 00'
+ '00 00 10 00 00 00 10 00 00 00 01 00 08 00 00 00'
+ '00 00 00 01 00 00 12 0B 00 00 12 0B 00 00 00 01'
+ '00 00 00 01 00 00 00 00 00 00 00 00 80 00 00 80'
+ '00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
+ '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
+ '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
+ '00 00 FF FF FF 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 07 07 07 08 08 08 08 08 08 08'
+ '08 08 08 08 08 07 07 07 07 08 08 08 08 08 08 08'
+ '08 08 08 08 08 07 07 00 00 00 00 00 00 00 00 00'
+ '00 00 00 08 08 07 07 00 0F 0F 0F 00 0B 0B 00 0F'
+ '0F 0F 00 08 08 07 07 00 0F 0F 0F 00 0B 0B 00 0F'
+ '0F 0F 00 08 08 07 07 00 0F 0F 0F 00 0B 0B 00 0F'
+ '0F 0F 00 08 08 07 07 00 0F 0F 0F 00 0B 0B 00 0F'
+ '0F 0F 00 08 08 07 07 00 0F 0F 0F 00 00 00 00 0F'
+ '0F 0F 00 08 08 08 07 00 0F 0F 0F 0F 0F 0F 0F 0F'
+ '0F 0F 00 08 08 07 00 0B 00 0F 0F 0F 0F 0F 0F 0F'
+ '0F 00 0B 00 07 07 07 00 0B 00 0F 0F 0F 0F 0F 0F'
+ '00 0B 00 08 07 07 07 07 00 0B 00 0F 0F 0F 0F 00'
+ '0B 00 08 08 07 07 07 07 07 00 0B 00 0F 0F 00 0B'
+ '00 00 08 08 07 07 07 07 07 07 00 0B 00 00 0B 00'
+ '01 00 08 08 07 07 07 07 07 07 07 00 0B 0B 00 07'
+ '01 00 07 07 07 07 07 07 07 07 07 07 00 00 07 07'
+ '01 00 07 07 07 07'
+} */
+
+
+/* BINRES folder.ico */
+FOLDER ICON folder.ico
+/* {
+ '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01'
+ '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00'
+ '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0'
+ 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 77 77 77 77 77 77 77 07 77'
+ '77 77 77 77 77 77 07 FB 8B 8B 8B 8B 8B 77 07 F8'
+ 'B8 B8 B8 B8 B8 77 07 FB 8B 8B 8B 8B 8B 77 07 F8'
+ 'B8 B8 B8 B8 B8 77 07 FB 8B 8B 8B 8B 8B 77 07 F8'
+ 'B8 B8 B8 B8 B8 77 07 FB 8B 8B 8B 8B 8B 77 07 FF'
+ 'FF FF FF FF FF 77 07 B8 B8 B8 B7 77 77 70 00 7B'
+ '8B 8B 70 00 00 00 00 07 77 77 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'
+ '00 00 C0 00 00 00 80 00 00 00 80 00 00 00 80 00'
+ '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00'
+ '00 00 80 00 00 00 80 00 00 00 80 01 00 00 C0 7F'
+ '00 00 E0 FF 00 00 FF FF 00 00 FF FF 00 00'
+} */
+
+
+/* BINRES folder2.ico */
+FOLDER2 ICON folder2.ico
+/* {
+ '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01'
+ '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00'
+ '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0'
+ 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 07 77 77 77 77 77 77 00 77'
+ '77 77 77 77 77 77 00 7F B8 B8 B8 B8 B7 77 07 FB'
+ '8B 8B 8B 8B 87 77 07 F8 B8 B8 B8 B8 77 77 7F 8B'
+ '8B 8B 8B 8B 77 77 7F FF FF FF FF F7 77 77 77 77'
+ '77 77 77 77 7B 77 07 F7 B7 B7 B7 B7 B7 77 07 FB'
+ '7B 7B 7F FF FF 77 07 F7 B7 B7 F7 77 77 70 00 7F'
+ 'FF FF 70 00 00 00 00 07 77 77 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'
+ '00 00 E0 00 00 00 C0 00 00 00 C0 00 00 00 80 00'
+ '00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 80 00 00 00 80 00 00 00 80 01 00 00 C0 7F'
+ '00 00 E0 FF 00 00 FF FF 00 00 FF FF 00 00'
+} */
+
+
+/* BINRES floppy.ico */
+FLOPPY ICON floppy.ico
+/* {
+ '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01'
+ '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00'
+ '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0'
+ 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 77'
+ '77 77 77 77 77 70 00 88 AA 88 88 00 88 70 00 88'
+ 'AA 88 88 00 88 70 00 88 88 88 88 88 88 70 00 88'
+ '88 00 00 88 88 70 00 80 00 00 00 00 08 70 00 88'
+ '88 00 00 88 88 70 00 88 88 88 88 88 88 70 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'
+ '00 00 FF FF 00 00 FF FF 00 00 80 00 00 00 80 00'
+ '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00'
+ '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00'
+ '00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00'
+} */
+
+
+/* BINRES cdrom.ico */
+CDROM ICON cdrom.ico
+/* {
+ '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01'
+ '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00'
+ '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0'
+ 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 00 77 BB 88 80 00 00 00 07'
+ 'AE EB 88 88 80 00 00 7B AA EB 88 88 88 00 00 7B'
+ 'BA EE 88 88 88 00 07 BB BB BE FF F8 88 80 07 88'
+ '88 87 07 F8 88 80 07 88 88 80 00 F8 88 80 07 88'
+ '88 87 07 88 88 80 07 88 88 88 88 EB BB B0 00 78'
+ '88 88 88 AE BB 00 00 78 88 88 88 AA EB 00 00 07'
+ '88 88 88 BA E0 00 00 00 77 88 88 B0 00 00 00 00'
+ '00 77 77 70 00 00 00 00 00 00 00 00 00 00 FC 1F'
+ '00 00 F0 07 00 00 E0 03 00 00 C0 01 00 00 C0 01'
+ '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00'
+ '00 00 80 00 00 00 C0 01 00 00 C0 01 00 00 E0 03'
+ '00 00 F0 07 00 00 FC 1F 00 00 FF FF 00 00'
+} */
+
+
+/* BINRES hdisk.ico */
+HDISK ICON hdisk.ico
+/* {
+ '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01'
+ '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00'
+ '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0'
+ 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 77'
+ '77 77 77 77 77 70 00 88 88 88 88 AA 88 70 00 88'
+ '88 88 88 AA 88 70 00 77 77 77 77 77 77 70 00 88'
+ '88 88 88 88 88 70 00 88 88 88 88 88 88 70 00 88'
+ '88 88 88 88 88 70 00 88 88 88 88 88 88 70 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'
+ '00 00 FF FF 00 00 FF FF 00 00 80 00 00 00 80 00'
+ '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00'
+ '00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00'
+ '00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00'
+} */
+
+
+/* BINRES network.ico */
+NETWORK ICON network.ico
+/* {
+ '00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01'
+ '00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00'
+ '00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
+ '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0'
+ 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
+ '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 BF B0 00 00 00 08 88 88 BB B0 88 88 88 00 00'
+ '00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 07 8F FF FF FF FF 87 00 07 87'
+ '77 77 77 77 87 70 07 88 88 88 88 88 87 70 07 88'
+ '88 88 88 8A 87 70 07 FF FF FF FF FF F7 70 00 78'
+ '88 88 88 88 88 70 00 07 77 77 77 77 77 70 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'
+ '00 00 FC 3F 00 00 80 00 00 00 80 00 00 00 FE 7F'
+ '00 00 FE 7F 00 00 C0 03 00 00 80 01 00 00 80 00'
+ '00 00 80 00 00 00 80 00 00 00 80 00 00 00 C0 00'
+ '00 00 E0 01 00 00 FF FF 00 00 FF FF 00 00'
+} */
+
+/* BINRES fontpics.bmp */
+38 BITMAP DISCARDABLE LOADONCALL fontpics.bmp
+/*{
+ '42 4D E6 02 00 00 00 00 00 00 76 00 00 00 28 00'
+ '00 00 64 00 00 00 0C 00 00 00 01 00 04 00 00 00'
+ '00 00 70 02 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
+ '00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
+ '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
+ '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
+ '00 00 FF FF FF 00 CC CC CC CC C5 55 55 5C CC CC'
+ 'CC C0 00 00 00 00 00 00 00 CC CC CC CC 78 06 87'
+ 'CC CC CC CC CC CC CC 78 06 87 CC CC CC CC CC CC'
+ 'CC CC CC CC CC CC CC CC 00 00 CC CC CC CC CC C5'
+ '5C CC CC CC CC 07 77 77 77 77 77 77 77 0C CC CC'
+ 'C8 87 CC C7 67 CC CC CC CC CC C8 87 CC C7 67 CC'
+ 'CC CC CC CC C7 97 7C C7 87 CC CC CC 00 00 CC CC'
+ '66 66 66 C5 5C CC CC CC CC 07 77 77 77 77 99 AA'
+ '77 0C CC CC 70 7C CC CC 76 7C CC CC CC CC 70 7C'
+ '66 6C 76 7C CC CC CC CC C9 99 97 C9 99 97 CC CC'
+ '00 00 CC CC CC 66 CC C5 5C CC CC CC CC C0 00 08'
+ '88 88 88 00 00 CC CC CC 80 CC CC CC C8 6C CC CC'
+ 'CC CC 80 CC CC C6 C8 6C CC CC CC CC C9 99 C7 C7'
+ '99 C7 CC CC 00 00 CC CC CC 66 CC C5 5C CC CC CC'
+ 'CC C8 0F FF FF FF FF FF 08 CC CC CC 00 CC CC CC'
+ 'C7 67 CC CC CC CC 00 6C C6 66 C7 67 CC CC CC CC'
+ 'C7 99 CC 77 99 CC CC CC 00 00 CC CC CC 66 CC C5'
+ '5C CC CC CC CC C8 FF F8 88 88 88 FF F8 CC CC CC'
+ '00 CC CC CC CC 67 CC CC CC CC 00 C6 CC 6C CC 67'
+ 'CC CC CC CC C7 99 CC C8 99 7C CC CC 00 00 CC CC'
+ 'CC 65 CC C5 5C CC 5C CC CC C8 0F FF FF FF FF FF'
+ '08 CC CC CC 80 CC CC CC CC 66 CC CC CC CC 80 C6'
+ '6C 66 6C 66 CC CC CC CC CC 99 7C C7 99 7C CC CC'
+ '00 00 CC CC CC 65 5C C5 5C C5 5C CC CC C8 FF F8'
+ '88 88 88 FF F8 CC CC CC 70 7C CC CC CC 66 CC CC'
+ 'CC CC 70 7C 6C 6C CC 66 CC CC CC CC CC 89 7C CC'
+ '99 7C CC CC 00 00 CC CC CC 65 55 55 55 55 5C CC'
+ 'CC C8 0F FF FF FF FF FF 08 CC CC CC C0 8C CC CC'
+ 'CC 68 CC CC CC CC C0 8C 66 CC CC 68 CC CC CC CC'
+ 'CC C9 9C CC 99 9C CC CC 00 00 CC 6C CC 66 CC C6'
+ 'CC CC CC CC CC C8 FF F8 88 88 88 FF F8 CC CC CC'
+ 'C7 07 CC CC C7 67 CC CC CC CC C7 07 CC CC C7 67'
+ 'CC CC CC CC CC CC 77 CC 89 9C CC CC 00 00 CC 66'
+ 'CC 66 CC 66 CC CC CC CC CC C8 0F FF FF FF FF FF'
+ '08 CC CC CC CC 78 7C CC 78 7C CC CC CC CC CC 78'
+ '7C CC 78 7C CC CC CC CC CC CC CC 89 97 7C CC CC'
+ '00 00 CC 66 66 66 66 66 CC CC CC CC CC C8 88 88'
+ '88 88 88 88 88 CC CC CC CC CC 78 06 77 CC CC CC'
+ 'CC CC CC CC 78 06 77 CC CC CC CC CC CC CC CC CC'
+ 'CC CC CC CC 00 00'
+}*/ 
diff --git a/reactos/lib/comdlg32/colordlg.c b/reactos/lib/comdlg32/colordlg.c
new file mode 100644 (file)
index 0000000..4490da1
--- /dev/null
@@ -0,0 +1,1343 @@
+/*
+ * COMMDLG - Color Dialog
+ *
+ * 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
+ */
+
+/* BUGS : still seems to not refresh correctly
+   sometimes, especially when 2 instances of the
+   dialog are loaded at the same time */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "dlgs.h"
+#include "wine/debug.h"
+#include "cderr.h"
+#include "cdlg.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+static INT_PTR CALLBACK ColorDlgProc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam );
+
+#define CONV_LPARAMTOPOINT(lp,p) do { (p)->x = (short)LOWORD(lp); (p)->y = (short)HIWORD(lp); } while(0)
+
+static const COLORREF predefcolors[6][8]=
+{
+ { 0x008080FFL, 0x0080FFFFL, 0x0080FF80L, 0x0080FF00L,
+   0x00FFFF80L, 0x00FF8000L, 0x00C080FFL, 0x00FF80FFL },
+ { 0x000000FFL, 0x0000FFFFL, 0x0000FF80L, 0x0040FF00L,
+   0x00FFFF00L, 0x00C08000L, 0x00C08080L, 0x00FF00FFL },
+
+ { 0x00404080L, 0x004080FFL, 0x0000FF00L, 0x00808000L,
+   0x00804000L, 0x00FF8080L, 0x00400080L, 0x008000FFL },
+ { 0x00000080L, 0x000080FFL, 0x00008000L, 0x00408000L,
+   0x00FF0000L, 0x00A00000L, 0x00800080L, 0x00FF0080L },
+
+ { 0x00000040L, 0x00004080L, 0x00004000L, 0x00404000L,
+   0x00800000L, 0x00400000L, 0x00400040L, 0x00800040L },
+ { 0x00000000L, 0x00008080L, 0x00408080L, 0x00808080L,
+   0x00808040L, 0x00C0C0C0L, 0x00400040L, 0x00FFFFFFL },
+};
+
+/* Chose Color PRIVATE Structure:
+ *
+ * This structure is duplicated in the 16 bit code with
+ * a extra member
+ */
+
+typedef struct CCPRIVATE
+{
+    LPCHOOSECOLORW lpcc; /* points to public known data structure */
+    int nextuserdef;     /* next free place in user defined color array */
+    HDC hdcMem;          /* color graph used for BitBlt() */
+    HBITMAP hbmMem;      /* color graph bitmap */
+    RECT fullsize;       /* original dialog window size */
+    UINT msetrgb;        /* # of SETRGBSTRING message (today not used)  */
+    RECT old3angle;      /* last position of l-marker */
+    RECT oldcross;       /* last position of color/satuation marker */
+    BOOL updating;       /* to prevent recursive WM_COMMAND/EN_UPDATE processing */
+    int h;
+    int s;
+    int l;               /* for temporary storing of hue,sat,lum */
+    int capturedGraph;   /* control mouse captured */
+    RECT focusRect;      /* rectangle last focused item */
+    HWND hwndFocus;      /* handle last focused item */
+} *LCCPRIV;
+
+/***********************************************************************
+ *                             CC_HSLtoRGB                    [internal]
+ */
+int CC_HSLtoRGB(char c, int hue, int sat, int lum)
+{
+ int res = 0, maxrgb;
+
+ /* hue */
+ switch(c)
+ {
+  case 'R': if (hue > 80)  hue -= 80; else hue += 160; break;
+  case 'G': if (hue > 160) hue -= 160; else hue += 80; break;
+  case 'B': break;
+ }
+
+ /* l below 120 */
+ maxrgb = (256 * min(120,lum)) / 120;  /* 0 .. 256 */
+ if (hue < 80)
+  res = 0;
+ else
+  if (hue < 120)
+  {
+   res = (hue - 80) * maxrgb;           /* 0...10240 */
+   res /= 40;                        /* 0...256 */
+  }
+  else
+   if (hue < 200)
+    res = maxrgb;
+   else
+    {
+     res= (240 - hue) * maxrgb;
+     res /= 40;
+    }
+ res = res - maxrgb / 2;                 /* -128...128 */
+
+ /* saturation */
+ res = maxrgb / 2 + (sat * res) / 240;    /* 0..256 */
+
+ /* lum above 120 */
+ if (lum > 120 && res < 256)
+  res += ((lum - 120) * (256 - res)) / 120;
+
+ return min(res, 255);
+}
+
+/***********************************************************************
+ *                             CC_RGBtoHSL                    [internal]
+ */
+int CC_RGBtoHSL(char c, int r, int g, int b)
+{
+ WORD maxi, mini, mmsum, mmdif, result = 0;
+ int iresult = 0;
+
+ maxi = max(r, b);
+ maxi = max(maxi, g);
+ mini = min(r, b);
+ mini = min(mini, g);
+
+ mmsum = maxi + mini;
+ mmdif = maxi - mini;
+
+ switch(c)
+ {
+  /* lum */
+  case 'L': mmsum *= 120;              /* 0...61200=(255+255)*120 */
+          result = mmsum / 255;        /* 0...240 */
+          break;
+  /* saturation */
+  case 'S': if (!mmsum)
+           result = 0;
+          else
+           if (!mini || maxi == 255)
+            result = 240;
+          else
+          {
+           result = mmdif * 240;       /* 0...61200=255*240 */
+           result /= (mmsum > 255 ? mmsum = 510 - mmsum : mmsum); /* 0..255 */
+          }
+          break;
+  /* hue */
+  case 'H': if (!mmdif)
+           result = 160;
+          else
+          {
+           if (maxi == r)
+           {
+            iresult = 40 * (g - b);       /* -10200 ... 10200 */
+            iresult /= (int) mmdif;    /* -40 .. 40 */
+            if (iresult < 0)
+             iresult += 240;          /* 0..40 and 200..240 */
+           }
+           else
+            if (maxi == g)
+            {
+             iresult = 40 * (b - r);
+             iresult /= (int) mmdif;
+             iresult += 80;           /* 40 .. 120 */
+            }
+            else
+             if (maxi == b)
+             {
+              iresult = 40 * (r - g);
+              iresult /= (int) mmdif;
+              iresult += 160;         /* 120 .. 200 */
+             }
+           result = iresult;
+          }
+          break;
+ }
+ return result;    /* is this integer arithmetic precise enough ? */
+}
+
+
+/***********************************************************************
+ *                  CC_DrawCurrentFocusRect                       [internal]
+ */
+void CC_DrawCurrentFocusRect( LCCPRIV lpp )
+{
+  if (lpp->hwndFocus)
+  {
+    HDC hdc = GetDC(lpp->hwndFocus);
+    DrawFocusRect(hdc, &lpp->focusRect);
+    ReleaseDC(lpp->hwndFocus, hdc);
+  }
+}
+
+/***********************************************************************
+ *                  CC_DrawFocusRect                       [internal]
+ */
+void CC_DrawFocusRect( LCCPRIV lpp, HWND hwnd, int x, int y, int rows, int cols)
+{
+  RECT rect;
+  int dx, dy;
+  HDC hdc;
+
+  CC_DrawCurrentFocusRect(lpp); /* remove current focus rect */
+  /* calculate new rect */
+  GetClientRect(hwnd, &rect);
+  dx = (rect.right - rect.left) / cols;
+  dy = (rect.bottom - rect.top) / rows;
+  rect.left += (x * dx) - 2;
+  rect.top += (y * dy) - 2;
+  rect.right = rect.left + dx;
+  rect.bottom = rect.top + dy;
+  /* draw it */
+  hdc = GetDC(hwnd);
+  DrawFocusRect(hdc, &rect);
+  CopyRect(&lpp->focusRect, &rect);
+  lpp->hwndFocus = hwnd;
+  ReleaseDC(hwnd, hdc);
+}
+
+#define DISTANCE 4
+
+/***********************************************************************
+ *                CC_MouseCheckPredefColorArray               [internal]
+ *                returns 1 if one of the predefined colors is clicked
+ */
+static int CC_MouseCheckPredefColorArray( LCCPRIV lpp, HWND hDlg, int dlgitem, int rows, int cols,
+           LPARAM lParam )
+{
+ HWND hwnd;
+ POINT point;
+ RECT rect;
+ int dx, dy, x, y;
+
+ CONV_LPARAMTOPOINT(lParam, &point);
+ ClientToScreen(hDlg, &point);
+ hwnd = GetDlgItem(hDlg, dlgitem);
+ GetWindowRect(hwnd, &rect);
+ if (PtInRect(&rect, point))
+ {
+  dx = (rect.right - rect.left) / cols;
+  dy = (rect.bottom - rect.top) / rows;
+  ScreenToClient(hwnd, &point);
+
+  if (point.x % dx < ( dx - DISTANCE) && point.y % dy < ( dy - DISTANCE))
+  {
+   x = point.x / dx;
+   y = point.y / dy;
+   lpp->lpcc->rgbResult = predefcolors[y][x];
+   CC_DrawFocusRect(lpp, hwnd, x, y, rows, cols);
+   return 1;
+  }
+ }
+ return 0;
+}
+
+/***********************************************************************
+ *                  CC_MouseCheckUserColorArray               [internal]
+ *                  return 1 if the user clicked a color
+ */
+static int CC_MouseCheckUserColorArray( LCCPRIV lpp, HWND hDlg, int dlgitem, int rows, int cols,
+           LPARAM lParam )
+{
+ HWND hwnd;
+ POINT point;
+ RECT rect;
+ int dx, dy, x, y;
+ COLORREF *crarr = lpp->lpcc->lpCustColors;
+
+ CONV_LPARAMTOPOINT(lParam, &point);
+ ClientToScreen(hDlg, &point);
+ hwnd = GetDlgItem(hDlg, dlgitem);
+ GetWindowRect(hwnd, &rect);
+ if (PtInRect(&rect, point))
+ {
+  dx = (rect.right - rect.left) / cols;
+  dy = (rect.bottom - rect.top) / rows;
+  ScreenToClient(hwnd, &point);
+
+  if (point.x % dx < (dx - DISTANCE) && point.y % dy < (dy - DISTANCE))
+  {
+   x = point.x / dx;
+   y = point.y / dy;
+   lpp->lpcc->rgbResult = crarr[x + (cols * y) ];
+   CC_DrawFocusRect(lpp, hwnd, x, y, rows, cols);
+   return 1;
+  }
+ }
+ return 0;
+}
+
+#define MAXVERT  240
+#define MAXHORI  239
+
+/*  240  ^......        ^^ 240
+        |     .        ||
+    SAT  |     .        || LUM
+        |     .        ||
+        +-----> 239   ----
+          HUE
+*/
+/***********************************************************************
+ *                  CC_MouseCheckColorGraph                   [internal]
+ */
+static int CC_MouseCheckColorGraph( HWND hDlg, int dlgitem, int *hori, int *vert, LPARAM lParam )
+{
+ HWND hwnd;
+ POINT point;
+ RECT rect;
+ long x,y;
+
+ CONV_LPARAMTOPOINT(lParam, &point);
+ ClientToScreen(hDlg, &point);
+ hwnd = GetDlgItem( hDlg, dlgitem );
+ GetWindowRect(hwnd, &rect);
+ if (PtInRect(&rect, point))
+ {
+  GetClientRect(hwnd, &rect);
+  ScreenToClient(hwnd, &point);
+
+  x = (long) point.x * MAXHORI;
+  x /= rect.right;
+  y = (long) (rect.bottom - point.y) * MAXVERT;
+  y /= rect.bottom;
+
+  if (hori)
+   *hori = x;
+  if (vert)
+   *vert = y;
+  return 1;
+ }
+ else
+  return 0;
+}
+/***********************************************************************
+ *                  CC_MouseCheckResultWindow                 [internal]
+ *                  test if double click one of the result colors
+ */
+int CC_MouseCheckResultWindow( HWND hDlg, LPARAM lParam )
+{
+ HWND hwnd;
+ POINT point;
+ RECT rect;
+
+ CONV_LPARAMTOPOINT(lParam, &point);
+ ClientToScreen(hDlg, &point);
+ hwnd = GetDlgItem(hDlg, 0x2c5);
+ GetWindowRect(hwnd, &rect);
+ if (PtInRect(&rect, point))
+ {
+  PostMessageA(hDlg, WM_COMMAND, 0x2c9, 0);
+  return 1;
+ }
+ return 0;
+}
+
+/***********************************************************************
+ *                       CC_CheckDigitsInEdit                 [internal]
+ */
+int CC_CheckDigitsInEdit( HWND hwnd, int maxval )
+{
+ int i, k, m, result, value;
+ long editpos;
+ char buffer[30];
+
+ GetWindowTextA(hwnd, buffer, sizeof(buffer));
+ m = strlen(buffer);
+ result = 0;
+
+ for (i = 0 ; i < m ; i++)
+  if (buffer[i] < '0' || buffer[i] > '9')
+  {
+   for (k = i + 1; k <= m; k++)  /* delete bad character */
+   {
+    buffer[i] = buffer[k];
+    m--;
+   }
+   buffer[m] = 0;
+   result = 1;
+  }
+
+ value = atoi(buffer);
+ if (value > maxval)       /* build a new string */
+ {
+  sprintf(buffer, "%d", maxval);
+  result = 2;
+ }
+ if (result)
+ {
+  editpos = SendMessageA(hwnd, EM_GETSEL, 0, 0);
+  SetWindowTextA(hwnd, buffer );
+  SendMessageA(hwnd, EM_SETSEL, 0, editpos);
+ }
+ return value;
+}
+
+
+
+/***********************************************************************
+ *                    CC_PaintSelectedColor                   [internal]
+ */
+void CC_PaintSelectedColor( HWND hDlg, COLORREF cr )
+{
+ RECT rect;
+ HDC  hdc;
+ HBRUSH hBrush;
+ HWND hwnd = GetDlgItem(hDlg, 0x2c5);
+ if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6) ))   /* if full size */
+ {
+  hdc = GetDC(hwnd);
+  GetClientRect(hwnd, &rect) ;
+  hBrush = CreateSolidBrush(cr);
+  if (hBrush)
+  {
+   hBrush = SelectObject(hdc, hBrush) ;
+   Rectangle(hdc, rect.left, rect.top, rect.right/2, rect.bottom);
+   DeleteObject ( SelectObject(hdc, hBrush) ) ;
+   hBrush = CreateSolidBrush( GetNearestColor(hdc, cr) );
+   if (hBrush)
+   {
+    hBrush = SelectObject(hdc, hBrush) ;
+    Rectangle(hdc, rect.right/2-1, rect.top, rect.right, rect.bottom);
+    DeleteObject(SelectObject(hdc, hBrush)) ;
+   }
+  }
+  ReleaseDC(hwnd, hdc);
+ }
+}
+
+/***********************************************************************
+ *                    CC_PaintTriangle                        [internal]
+ */
+void CC_PaintTriangle( HWND hDlg, int y)
+{
+ HDC hDC;
+ long temp;
+ int w = LOWORD(GetDialogBaseUnits());
+ POINT points[3];
+ int height;
+ int oben;
+ RECT rect;
+ HWND hwnd = GetDlgItem(hDlg, 0x2be);
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA( hDlg, DWL_USER);
+
+ if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6)))   /* if full size */
+ {
+   GetClientRect(hwnd, &rect);
+   height = rect.bottom;
+   hDC = GetDC(hDlg);
+   points[0].y = rect.top;
+   points[0].x = rect.right;     /*  |  /|  */
+   ClientToScreen(hwnd, points); /*  | / |  */
+   ScreenToClient(hDlg, points); /*  |<  |  */
+   oben = points[0].y;           /*  | \ |  */
+                                 /*  |  \|  */
+   temp = (long)height * (long)y;
+   points[0].y = oben + height - temp / (long)MAXVERT;
+   points[1].y = points[0].y + w;
+   points[2].y = points[0].y - w;
+   points[2].x = points[1].x = points[0].x + w;
+
+   FillRect(hDC, &lpp->old3angle, (HBRUSH)GetClassLongA( hwnd, GCL_HBRBACKGROUND));
+   lpp->old3angle.left  = points[0].x;
+   lpp->old3angle.right = points[1].x + 1;
+   lpp->old3angle.top   = points[2].y - 1;
+   lpp->old3angle.bottom= points[1].y + 1;
+   Polygon(hDC, points, 3);
+   ReleaseDC(hDlg, hDC);
+ }
+}
+
+
+/***********************************************************************
+ *                    CC_PaintCross                           [internal]
+ */
+void CC_PaintCross( HWND hDlg, int x, int y)
+{
+ HDC hDC;
+ int w = GetDialogBaseUnits();
+ HWND hwnd = GetDlgItem(hDlg, 0x2c6);
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA( hDlg, DWL_USER );
+ RECT rect;
+ POINT point, p;
+ HPEN hPen;
+
+ if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6) ))   /* if full size */
+ {
+   GetClientRect(hwnd, &rect);
+   hDC = GetDC(hwnd);
+   SelectClipRgn( hDC, CreateRectRgnIndirect(&rect));
+   hPen = CreatePen(PS_SOLID, 2, 0xffffff); /* -white- color */
+   hPen = SelectObject(hDC, hPen);
+   point.x = ((long)rect.right * (long)x) / (long)MAXHORI;
+   point.y = rect.bottom - ((long)rect.bottom * (long)y) / (long)MAXVERT;
+   if ( lpp->oldcross.left != lpp->oldcross.right )
+     BitBlt(hDC, lpp->oldcross.left, lpp->oldcross.top,
+              lpp->oldcross.right - lpp->oldcross.left,
+              lpp->oldcross.bottom - lpp->oldcross.top,
+              lpp->hdcMem, lpp->oldcross.left, lpp->oldcross.top, SRCCOPY);
+   lpp->oldcross.left   = point.x - w - 1;
+   lpp->oldcross.right  = point.x + w + 1;
+   lpp->oldcross.top    = point.y - w - 1;
+   lpp->oldcross.bottom = point.y + w + 1;
+
+   MoveToEx(hDC, point.x - w, point.y, &p);
+   LineTo(hDC, point.x + w, point.y);
+   MoveToEx(hDC, point.x, point.y - w, &p);
+   LineTo(hDC, point.x, point.y + w);
+   DeleteObject( SelectObject(hDC, hPen)) ;
+   ReleaseDC(hwnd, hDC);
+ }
+}
+
+
+#define XSTEPS 48
+#define YSTEPS 24
+
+
+/***********************************************************************
+ *                    CC_PrepareColorGraph                    [internal]
+ */
+static void CC_PrepareColorGraph( HWND hDlg )
+{
+ int sdif, hdif, xdif, ydif, r, g, b, hue, sat;
+ HWND hwnd = GetDlgItem(hDlg, 0x2c6);
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+ HBRUSH hbrush;
+ HDC hdc ;
+ RECT rect, client;
+ HCURSOR hcursor = SetCursor( LoadCursorA(0, (LPSTR)IDC_WAIT) );
+
+ GetClientRect(hwnd, &client);
+ hdc = GetDC(hwnd);
+ lpp->hdcMem = CreateCompatibleDC(hdc);
+ lpp->hbmMem = CreateCompatibleBitmap(hdc, client.right, client.bottom);
+ SelectObject(lpp->hdcMem, lpp->hbmMem);
+
+ xdif = client.right / XSTEPS;
+ ydif = client.bottom / YSTEPS+1;
+ hdif = 239 / XSTEPS;
+ sdif = 240 / YSTEPS;
+ for (rect.left = hue = 0; hue < 239 + hdif; hue += hdif)
+ {
+  rect.right = rect.left + xdif;
+  rect.bottom = client.bottom;
+  for(sat = 0; sat < 240 + sdif; sat += sdif)
+  {
+   rect.top = rect.bottom - ydif;
+   r = CC_HSLtoRGB('R', hue, sat, 120);
+   g = CC_HSLtoRGB('G', hue, sat, 120);
+   b = CC_HSLtoRGB('B', hue, sat, 120);
+   hbrush = CreateSolidBrush( RGB(r, g, b));
+   FillRect(lpp->hdcMem, &rect, hbrush);
+   DeleteObject(hbrush);
+   rect.bottom = rect.top;
+  }
+  rect.left = rect.right;
+ }
+ ReleaseDC(hwnd, hdc);
+ SetCursor(hcursor);
+}
+
+/***********************************************************************
+ *                          CC_PaintColorGraph                [internal]
+ */
+static void CC_PaintColorGraph( HWND hDlg )
+{
+ HWND hwnd = GetDlgItem( hDlg, 0x2c6 );
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+ HDC  hDC;
+ RECT rect;
+ if (IsWindowVisible(hwnd))   /* if full size */
+ {
+  if (!lpp->hdcMem)
+   CC_PrepareColorGraph(hDlg);   /* should not be necessary */
+
+  hDC = GetDC(hwnd);
+  GetClientRect(hwnd, &rect);
+  if (lpp->hdcMem)
+      BitBlt(hDC, 0, 0, rect.right, rect.bottom, lpp->hdcMem, 0, 0, SRCCOPY);
+  else
+      WARN("choose color: hdcMem is not defined\n");
+  ReleaseDC(hwnd, hDC);
+ }
+}
+
+/***********************************************************************
+ *                           CC_PaintLumBar                   [internal]
+ */
+static void CC_PaintLumBar( HWND hDlg, int hue, int sat )
+{
+ HWND hwnd = GetDlgItem(hDlg, 0x2be);
+ RECT rect, client;
+ int lum, ldif, ydif, r, g, b;
+ HBRUSH hbrush;
+ HDC hDC;
+
+ if (IsWindowVisible(hwnd))
+ {
+  hDC = GetDC(hwnd);
+  GetClientRect(hwnd, &client);
+  rect = client;
+
+  ldif = 240 / YSTEPS;
+  ydif = client.bottom / YSTEPS+1;
+  for (lum = 0; lum < 240 + ldif; lum += ldif)
+  {
+   rect.top = max(0, rect.bottom - ydif);
+   r = CC_HSLtoRGB('R', hue, sat, lum);
+   g = CC_HSLtoRGB('G', hue, sat, lum);
+   b = CC_HSLtoRGB('B', hue, sat, lum);
+   hbrush = CreateSolidBrush( RGB(r, g, b) );
+   FillRect(hDC, &rect, hbrush);
+   DeleteObject(hbrush);
+   rect.bottom = rect.top;
+  }
+  GetClientRect(hwnd, &rect);
+  FrameRect(hDC, &rect, GetStockObject(BLACK_BRUSH) );
+  ReleaseDC(hwnd, hDC);
+ }
+}
+
+/***********************************************************************
+ *                             CC_EditSetRGB                  [internal]
+ */
+void CC_EditSetRGB( HWND hDlg, COLORREF cr )
+{
+ char buffer[10];
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+ int r = GetRValue(cr);
+ int g = GetGValue(cr);
+ int b = GetBValue(cr);
+ if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6) ))   /* if full size */
+ {
+   lpp->updating = TRUE;
+   sprintf(buffer, "%d", r);
+   SetWindowTextA( GetDlgItem(hDlg, 0x2c2), buffer);
+   sprintf(buffer, "%d", g);
+   SetWindowTextA( GetDlgItem(hDlg, 0x2c3), buffer);
+   sprintf( buffer, "%d", b );
+   SetWindowTextA( GetDlgItem(hDlg, 0x2c4),buffer);
+   lpp->updating = FALSE;
+ }
+}
+
+/***********************************************************************
+ *                             CC_EditSetHSL                  [internal]
+ */
+void CC_EditSetHSL( HWND hDlg, int h, int s, int l )
+{
+ char buffer[10];
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+ lpp->updating = TRUE;
+ if (IsWindowVisible( GetDlgItem(hDlg, 0x2c6) ))   /* if full size */
+ {
+   lpp->updating = TRUE;
+   sprintf(buffer, "%d", h);
+   SetWindowTextA( GetDlgItem(hDlg, 0x2bf), buffer);
+   sprintf(buffer, "%d", s);
+   SetWindowTextA( GetDlgItem(hDlg, 0x2c0), buffer);
+   sprintf(buffer, "%d", l);
+   SetWindowTextA( GetDlgItem(hDlg, 0x2c1), buffer);
+   lpp->updating = FALSE;
+ }
+ CC_PaintLumBar(hDlg, h, s);
+}
+
+/***********************************************************************
+ *                       CC_SwitchToFullSize                  [internal]
+ */
+void CC_SwitchToFullSize( HWND hDlg, COLORREF result, LPRECT lprect )
+{
+ int i;
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+
+ EnableWindow( GetDlgItem(hDlg, 0x2cf), FALSE);
+ CC_PrepareColorGraph(hDlg);
+ for (i = 0x2bf; i < 0x2c5; i++)
+   ShowWindow( GetDlgItem(hDlg, i), SW_SHOW);
+ for (i = 0x2d3; i < 0x2d9; i++)
+   ShowWindow( GetDlgItem(hDlg, i), SW_SHOW);
+ ShowWindow( GetDlgItem(hDlg, 0x2c9), SW_SHOW);
+ ShowWindow( GetDlgItem(hDlg, 0x2c8), SW_SHOW);
+ ShowWindow( GetDlgItem(hDlg, 1090), SW_SHOW);
+
+ if (lprect)
+  SetWindowPos(hDlg, 0, 0, 0, lprect->right-lprect->left,
+   lprect->bottom-lprect->top, SWP_NOMOVE|SWP_NOZORDER);
+
+ ShowWindow( GetDlgItem(hDlg, 0x2be), SW_SHOW);
+ ShowWindow( GetDlgItem(hDlg, 0x2c5), SW_SHOW);
+
+ CC_EditSetRGB(hDlg, result);
+ CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l);
+ ShowWindow( GetDlgItem( hDlg, 0x2c6), SW_SHOW);
+ UpdateWindow( GetDlgItem(hDlg, 0x2c6) );
+}
+
+/***********************************************************************
+ *                           CC_PaintPredefColorArray         [internal]
+ *                Paints the default standard 48 colors
+ */
+static void CC_PaintPredefColorArray( HWND hDlg, int rows, int cols)
+{
+ HWND hwnd = GetDlgItem(hDlg, 0x2d0);
+ RECT rect;
+ HDC  hdc;
+ HBRUSH hBrush;
+ int dx, dy, i, j, k;
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+
+ GetClientRect(hwnd, &rect);
+ dx = rect.right / cols;
+ dy = rect.bottom / rows;
+ k = rect.left;
+
+ hdc = GetDC(hwnd);
+ GetClientRect(hwnd, &rect);
+ FillRect(hdc, &rect, (HBRUSH)GetClassLongA(hwnd, GCL_HBRBACKGROUND));
+ for ( j = 0; j < rows; j++ )
+ {
+  for ( i = 0; i < cols; i++ )
+  {
+   hBrush = CreateSolidBrush(predefcolors[j][i]);
+   if (hBrush)
+   {
+    hBrush = SelectObject(hdc, hBrush);
+    Rectangle(hdc, rect.left, rect.top,
+                rect.left + dx - DISTANCE, rect.top + dy - DISTANCE);
+    rect.left = rect.left + dx;
+    DeleteObject(SelectObject(hdc, hBrush)) ;
+   }
+  }
+  rect.top = rect.top + dy;
+  rect.left = k;
+ }
+ ReleaseDC(hwnd, hdc);
+ if (lpp->hwndFocus == hwnd)
+   CC_DrawCurrentFocusRect(lpp);
+}
+/***********************************************************************
+ *                             CC_PaintUserColorArray         [internal]
+ *               Paint the 16 user-selected colors
+ */
+void CC_PaintUserColorArray( HWND hDlg, int rows, int cols, COLORREF* lpcr )
+{
+ HWND hwnd = GetDlgItem(hDlg, 0x2d1);
+ RECT rect;
+ HDC  hdc;
+ HBRUSH hBrush;
+ int dx, dy, i, j, k;
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+
+ GetClientRect(hwnd, &rect);
+
+ dx = rect.right / cols;
+ dy = rect.bottom / rows;
+ k = rect.left;
+
+ hdc = GetDC(hwnd);
+ if (hdc)
+ {
+  FillRect(hdc, &rect, (HBRUSH)GetClassLongA(hwnd, GCL_HBRBACKGROUND) );
+  for (j = 0; j < rows; j++)
+  {
+   for (i = 0; i < cols; i++)
+   {
+    hBrush = CreateSolidBrush(lpcr[i+j*cols]);
+    if (hBrush)
+    {
+     hBrush = SelectObject(hdc, hBrush) ;
+     Rectangle(hdc, rect.left, rect.top,
+                  rect.left + dx - DISTANCE, rect.top + dy - DISTANCE);
+     rect.left = rect.left + dx;
+     DeleteObject( SelectObject(hdc, hBrush) ) ;
+    }
+   }
+   rect.top = rect.top + dy;
+   rect.left = k;
+  }
+  ReleaseDC(hwnd, hdc);
+ }
+ if (lpp->hwndFocus == hwnd)
+   CC_DrawCurrentFocusRect(lpp);
+}
+
+
+
+/***********************************************************************
+ *                             CC_HookCallChk                 [internal]
+ */
+BOOL CC_HookCallChk( LPCHOOSECOLORW lpcc )
+{
+ if (lpcc)
+  if(lpcc->Flags & CC_ENABLEHOOK)
+   if (lpcc->lpfnHook)
+    return TRUE;
+ return FALSE;
+}
+
+/***********************************************************************
+ *                              CC_WMInitDialog                  [internal]
+ */
+LONG CC_WMInitDialog( HWND hDlg, WPARAM wParam, LPARAM lParam )
+{
+   int i, res;
+   int r, g, b;
+   HWND hwnd;
+   RECT rect;
+   POINT point;
+   LCCPRIV lpp;
+
+   TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
+   lpp = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct CCPRIVATE) );
+
+   lpp->lpcc = (LPCHOOSECOLORW) lParam;
+   if (lpp->lpcc->lStructSize != sizeof(CHOOSECOLORW) )
+   {
+       HeapFree(GetProcessHeap(), 0, lpp);
+       EndDialog (hDlg, 0) ;
+       return FALSE;
+   }
+
+   SetWindowLongA(hDlg, DWL_USER, (LONG)lpp);
+
+   if (!(lpp->lpcc->Flags & CC_SHOWHELP))
+      ShowWindow( GetDlgItem(hDlg,0x40e), SW_HIDE);
+   lpp->msetrgb = RegisterWindowMessageA(SETRGBSTRINGA);
+
+#if 0
+   cpos = MAKELONG(5,7); /* init */
+   if (lpp->lpcc->Flags & CC_RGBINIT)
+   {
+     for (i = 0; i < 6; i++)
+       for (j = 0; j < 8; j++)
+        if (predefcolors[i][j] == lpp->lpcc->rgbResult)
+        {
+          cpos = MAKELONG(i,j);
+          goto found;
+        }
+   }
+   found:
+   /* FIXME: Draw_a_focus_rect & set_init_values */
+#endif
+
+   GetWindowRect(hDlg, &lpp->fullsize);
+   if (lpp->lpcc->Flags & CC_FULLOPEN || lpp->lpcc->Flags & CC_PREVENTFULLOPEN)
+   {
+      hwnd = GetDlgItem(hDlg, 0x2cf);
+      EnableWindow(hwnd, FALSE);
+   }
+   if (!(lpp->lpcc->Flags & CC_FULLOPEN ) || lpp->lpcc->Flags & CC_PREVENTFULLOPEN)
+   {
+      rect = lpp->fullsize;
+      res = rect.bottom - rect.top;
+      hwnd = GetDlgItem(hDlg, 0x2c6); /* cut at left border */
+      point.x = point.y = 0;
+      ClientToScreen(hwnd, &point);
+      ScreenToClient(hDlg,&point);
+      GetClientRect(hDlg, &rect);
+      point.x += GetSystemMetrics(SM_CXDLGFRAME);
+      SetWindowPos(hDlg, 0, 0, 0, point.x, res, SWP_NOMOVE|SWP_NOZORDER);
+
+      for (i = 0x2bf; i < 0x2c5; i++)
+         ShowWindow( GetDlgItem(hDlg, i), SW_HIDE);
+      for (i = 0x2d3; i < 0x2d9; i++)
+         ShowWindow( GetDlgItem(hDlg, i), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 0x2c9), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 0x2c8), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 0x2c6), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 0x2c5), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 1090 ), SW_HIDE);
+   }
+   else
+      CC_SwitchToFullSize(hDlg, lpp->lpcc->rgbResult, NULL);
+   res = TRUE;
+   for (i = 0x2bf; i < 0x2c5; i++)
+     SendMessageA( GetDlgItem(hDlg, i), EM_LIMITTEXT, 3, 0);  /* max 3 digits:  xyz  */
+   if (CC_HookCallChk(lpp->lpcc))
+   {
+          res = CallWindowProcA( (WNDPROC)lpp->lpcc->lpfnHook, hDlg, WM_INITDIALOG, wParam, lParam);
+   }
+
+   /* Set the initial values of the color chooser dialog */
+   r = GetRValue(lpp->lpcc->rgbResult);
+   g = GetGValue(lpp->lpcc->rgbResult);
+   b = GetBValue(lpp->lpcc->rgbResult);
+
+   CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+   lpp->h = CC_RGBtoHSL('H', r, g, b);
+   lpp->s = CC_RGBtoHSL('S', r, g, b);
+   lpp->l = CC_RGBtoHSL('L', r, g, b);
+
+   /* Doing it the long way because CC_EditSetRGB/HSL doesn't seem to work */
+   SetDlgItemInt(hDlg, 703, lpp->h, TRUE);
+   SetDlgItemInt(hDlg, 704, lpp->s, TRUE);
+   SetDlgItemInt(hDlg, 705, lpp->l, TRUE);
+   SetDlgItemInt(hDlg, 706, r, TRUE);
+   SetDlgItemInt(hDlg, 707, g, TRUE);
+   SetDlgItemInt(hDlg, 708, b, TRUE);
+
+   CC_PaintCross(hDlg, lpp->h, lpp->s);
+   CC_PaintTriangle(hDlg, lpp->l);
+
+   return res;
+}
+
+
+/***********************************************************************
+ *                              CC_WMCommand                  [internal]
+ */
+LRESULT CC_WMCommand( HWND hDlg, WPARAM wParam, LPARAM lParam, WORD notifyCode, HWND hwndCtl )
+{
+    int  r, g, b, i, xx;
+    UINT cokmsg;
+    HDC hdc;
+    COLORREF *cr;
+    LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+    TRACE("CC_WMCommand wParam=%x lParam=%lx\n", wParam, lParam);
+    switch (wParam)
+    {
+          case 0x2c2:  /* edit notify RGB */
+         case 0x2c3:
+         case 0x2c4:
+              if (notifyCode == EN_UPDATE && !lpp->updating)
+                        {
+                          i = CC_CheckDigitsInEdit(hwndCtl, 255);
+                          r = GetRValue(lpp->lpcc->rgbResult);
+                          g = GetGValue(lpp->lpcc->rgbResult);
+                          b= GetBValue(lpp->lpcc->rgbResult);
+                          xx = 0;
+                          switch (wParam)
+                          {
+                           case 0x2c2: if ((xx = (i != r))) r = i; break;
+                           case 0x2c3: if ((xx = (i != g))) g = i; break;
+                           case 0x2c4: if ((xx = (i != b))) b = i; break;
+                          }
+                          if (xx) /* something has changed */
+                          {
+                           lpp->lpcc->rgbResult = RGB(r, g, b);
+                           CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+                           lpp->h = CC_RGBtoHSL('H', r, g, b);
+                           lpp->s = CC_RGBtoHSL('S', r, g, b);
+                           lpp->l = CC_RGBtoHSL('L', r, g, b);
+                           CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l);
+                           CC_PaintCross(hDlg, lpp->h, lpp->s);
+                           CC_PaintTriangle(hDlg, lpp->l);
+                          }
+                        }
+                break;
+
+         case 0x2bf:  /* edit notify HSL */
+         case 0x2c0:
+         case 0x2c1:
+              if (notifyCode == EN_UPDATE && !lpp->updating)
+                        {
+                          i = CC_CheckDigitsInEdit(hwndCtl , wParam == 0x2bf ? 239:240);
+                          xx = 0;
+                          switch (wParam)
+                          {
+                           case 0x2bf: if ((xx = ( i != lpp->h))) lpp->h = i; break;
+                           case 0x2c0: if ((xx = ( i != lpp->s))) lpp->s = i; break;
+                           case 0x2c1: if ((xx = ( i != lpp->l))) lpp->l = i; break;
+                          }
+                          if (xx) /* something has changed */
+                          {
+                           r = CC_HSLtoRGB('R', lpp->h, lpp->s, lpp->l);
+                           g = CC_HSLtoRGB('G', lpp->h, lpp->s, lpp->l);
+                           b = CC_HSLtoRGB('B', lpp->h, lpp->s, lpp->l);
+                           lpp->lpcc->rgbResult = RGB(r, g, b);
+                           CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+                           CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult);
+                           CC_PaintCross(hDlg, lpp->h, lpp->s);
+                           CC_PaintTriangle(hDlg, lpp->l);
+                          }
+                        }
+              break;
+
+          case 0x2cf:
+               CC_SwitchToFullSize(hDlg, lpp->lpcc->rgbResult, &lpp->fullsize);
+              SetFocus( GetDlgItem(hDlg, 0x2bf));
+              break;
+
+          case 0x2c8:    /* add colors ... column by column */
+               cr = lpp->lpcc->lpCustColors;
+               cr[(lpp->nextuserdef % 2) * 8 + lpp->nextuserdef / 2] = lpp->lpcc->rgbResult;
+               if (++lpp->nextuserdef == 16)
+                  lpp->nextuserdef = 0;
+              CC_PaintUserColorArray(hDlg, 2, 8, lpp->lpcc->lpCustColors);
+              break;
+
+          case 0x2c9:              /* resulting color */
+              hdc = GetDC(hDlg);
+              lpp->lpcc->rgbResult = GetNearestColor(hdc, lpp->lpcc->rgbResult);
+              ReleaseDC(hDlg, hdc);
+              CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult);
+              CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+              r = GetRValue(lpp->lpcc->rgbResult);
+              g = GetGValue(lpp->lpcc->rgbResult);
+              b = GetBValue(lpp->lpcc->rgbResult);
+              lpp->h = CC_RGBtoHSL('H', r, g, b);
+              lpp->s = CC_RGBtoHSL('S', r, g, b);
+              lpp->l = CC_RGBtoHSL('L', r, g, b);
+              CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l);
+              CC_PaintCross(hDlg, lpp->h, lpp->s);
+              CC_PaintTriangle(hDlg, lpp->l);
+              break;
+
+         case 0x40e:           /* Help! */ /* The Beatles, 1965  ;-) */
+              i = RegisterWindowMessageA(HELPMSGSTRINGA);
+                   if (lpp->lpcc->hwndOwner)
+                      SendMessageA(lpp->lpcc->hwndOwner, i, 0, (LPARAM)lpp->lpcc);
+                   if ( CC_HookCallChk(lpp->lpcc))
+                      CallWindowProcA( (WNDPROC) lpp->lpcc->lpfnHook, hDlg,
+                         WM_COMMAND, psh15, (LPARAM)lpp->lpcc);
+              break;
+
+          case IDOK :
+               cokmsg = RegisterWindowMessageA(COLOROKSTRINGA);
+                   if (lpp->lpcc->hwndOwner)
+                       if (SendMessageA(lpp->lpcc->hwndOwner, cokmsg, 0, (LPARAM)lpp->lpcc))
+                       break;    /* do NOT close */
+               EndDialog(hDlg, 1) ;
+               return TRUE ;
+
+         case IDCANCEL :
+               EndDialog(hDlg, 0) ;
+               return TRUE ;
+
+       }
+       return FALSE;
+}
+
+/***********************************************************************
+ *                              CC_WMPaint                    [internal]
+ */
+LRESULT CC_WMPaint( HWND hDlg, WPARAM wParam, LPARAM lParam )
+{
+    HDC hdc;
+    PAINTSTRUCT ps;
+    LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+
+    hdc = BeginPaint(hDlg, &ps);
+    /* we have to paint dialog children except text and buttons */
+    CC_PaintPredefColorArray(hDlg, 6, 8);
+    CC_PaintUserColorArray(hDlg, 2, 8, lpp->lpcc->lpCustColors);
+    CC_PaintLumBar(hDlg, lpp->h, lpp->s);
+    CC_PaintCross(hDlg, lpp->h, lpp->s);
+    CC_PaintTriangle(hDlg, lpp->l);
+    CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+    CC_PaintColorGraph(hDlg);
+    EndPaint(hDlg, &ps);
+
+ return TRUE;
+}
+
+/***********************************************************************
+ *                              CC_WMLButtonUp              [internal]
+ */
+LRESULT CC_WMLButtonUp( HWND hDlg, WPARAM wParam, LPARAM lParam )
+{
+   LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+   if (lpp->capturedGraph)
+   {
+       lpp->capturedGraph = 0;
+       ReleaseCapture();
+       CC_PaintCross(hDlg, lpp->h, lpp->s);
+       return 1;
+   }
+   return 0;
+}
+
+/***********************************************************************
+ *                              CC_WMMouseMove              [internal]
+ */
+LRESULT CC_WMMouseMove( HWND hDlg, LPARAM lParam )
+{
+   LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+   int r, g, b;
+
+   if (lpp->capturedGraph)
+   {
+      int *ptrh = NULL, *ptrs = &lpp->l;
+      if (lpp->capturedGraph == 0x2c6)
+      {
+          ptrh = &lpp->h;
+          ptrs = &lpp->s;
+      }
+      if (CC_MouseCheckColorGraph( hDlg, lpp->capturedGraph, ptrh, ptrs, lParam))
+      {
+          r = CC_HSLtoRGB('R', lpp->h, lpp->s, lpp->l);
+          g = CC_HSLtoRGB('G', lpp->h, lpp->s, lpp->l);
+          b = CC_HSLtoRGB('B', lpp->h, lpp->s, lpp->l);
+          lpp->lpcc->rgbResult = RGB(r, g, b);
+          CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult);
+          CC_EditSetHSL(hDlg,lpp->h, lpp->s, lpp->l);
+          CC_PaintCross(hDlg, lpp->h, lpp->s);
+          CC_PaintTriangle(hDlg, lpp->l);
+          CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+      }
+      else
+      {
+          ReleaseCapture();
+          lpp->capturedGraph = 0;
+      }
+      return 1;
+   }
+   return 0;
+}
+
+/***********************************************************************
+ *                              CC_WMLButtonDown              [internal]
+ */
+LRESULT CC_WMLButtonDown( HWND hDlg, WPARAM wParam, LPARAM lParam )
+{
+   LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+   int r, g, b, i;
+   i = 0;
+
+   if (CC_MouseCheckPredefColorArray(lpp, hDlg, 0x2d0, 6, 8, lParam))
+      i = 1;
+   else
+      if (CC_MouseCheckUserColorArray(lpp, hDlg, 0x2d1, 2, 8, lParam))
+         i = 1;
+      else
+        if (CC_MouseCheckColorGraph(hDlg, 0x2c6, &lpp->h, &lpp->s, lParam))
+         {
+           i = 2;
+            lpp->capturedGraph = 0x2c6;
+         }
+        else
+           if (CC_MouseCheckColorGraph(hDlg, 0x2be, NULL, &lpp->l, lParam))
+            {
+              i = 2;
+               lpp->capturedGraph = 0x2be;
+            }
+   if ( i == 2 )
+   {
+      SetCapture(hDlg);
+      r = CC_HSLtoRGB('R', lpp->h, lpp->s, lpp->l);
+      g = CC_HSLtoRGB('G', lpp->h, lpp->s, lpp->l);
+      b = CC_HSLtoRGB('B', lpp->h, lpp->s, lpp->l);
+      lpp->lpcc->rgbResult = RGB(r, g, b);
+   }
+   if ( i == 1 )
+   {
+      r = GetRValue(lpp->lpcc->rgbResult);
+      g = GetGValue(lpp->lpcc->rgbResult);
+      b = GetBValue(lpp->lpcc->rgbResult);
+      lpp->h = CC_RGBtoHSL('H', r, g, b);
+      lpp->s = CC_RGBtoHSL('S', r, g, b);
+      lpp->l = CC_RGBtoHSL('L', r, g, b);
+   }
+   if (i)
+   {
+      CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult);
+      CC_EditSetHSL(hDlg,lpp->h, lpp->s, lpp->l);
+      CC_PaintCross(hDlg, lpp->h, lpp->s);
+      CC_PaintTriangle(hDlg, lpp->l);
+      CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+      return TRUE;
+   }
+   return FALSE;
+}
+
+/***********************************************************************
+ *           ColorDlgProc32 [internal]
+ *
+ */
+static INT_PTR CALLBACK ColorDlgProc( HWND hDlg, UINT message,
+                                   WPARAM wParam, LPARAM lParam )
+{
+
+ int res;
+ LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+ if (message != WM_INITDIALOG)
+ {
+  if (!lpp)
+     return FALSE;
+  res = 0;
+  if (CC_HookCallChk(lpp->lpcc))
+     res = CallWindowProcA( (WNDPROC)lpp->lpcc->lpfnHook, hDlg, message, wParam, lParam);
+  if ( res )
+     return res;
+ }
+
+ /* FIXME: SetRGB message
+ if (message && message == msetrgb)
+    return HandleSetRGB(hDlg, lParam);
+ */
+
+ switch (message)
+       {
+         case WM_INITDIALOG:
+                       return CC_WMInitDialog(hDlg, wParam, lParam);
+         case WM_NCDESTROY:
+                       DeleteDC(lpp->hdcMem);
+                       DeleteObject(lpp->hbmMem);
+                        HeapFree(GetProcessHeap(), 0, lpp);
+                       SetWindowLongA(hDlg, DWL_USER, 0L); /* we don't need it anymore */
+                       break;
+         case WM_COMMAND:
+                       if (CC_WMCommand( hDlg, wParam, lParam, HIWORD(wParam), (HWND) lParam))
+                          return TRUE;
+                       break;
+         case WM_PAINT:
+                       if ( CC_WMPaint(hDlg, wParam, lParam))
+                          return TRUE;
+                       break;
+         case WM_LBUTTONDBLCLK:
+                       if (CC_MouseCheckResultWindow(hDlg, lParam))
+                         return TRUE;
+                       break;
+         case WM_MOUSEMOVE:
+                       if (CC_WMMouseMove(hDlg, lParam))
+                         return TRUE;
+                       break;
+         case WM_LBUTTONUP:  /* FIXME: ClipCursor off (if in color graph)*/
+                        if (CC_WMLButtonUp(hDlg, wParam, lParam))
+                           return TRUE;
+                       break;
+         case WM_LBUTTONDOWN:/* FIXME: ClipCursor on  (if in color graph)*/
+                       if (CC_WMLButtonDown(hDlg, wParam, lParam))
+                          return TRUE;
+                       break;
+       }
+     return FALSE ;
+}
+
+/***********************************************************************
+ *            ChooseColorW  (COMDLG32.@)
+ */
+BOOL WINAPI ChooseColorW( LPCHOOSECOLORW lpChCol )
+{
+    HANDLE hDlgTmpl = 0;
+    BOOL bRet = FALSE;
+    LPCVOID template;
+
+    TRACE("ChooseColor\n");
+    if (!lpChCol) return FALSE;
+
+    if (lpChCol->Flags & CC_ENABLETEMPLATEHANDLE)
+    {
+        if (!(template = LockResource(lpChCol->hInstance)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return FALSE;
+        }
+    }
+    else if (lpChCol->Flags & CC_ENABLETEMPLATE)
+    {
+       HRSRC hResInfo;
+        if (!(hResInfo = FindResourceW((HINSTANCE)lpChCol->hInstance,
+                                        lpChCol->lpTemplateName,
+                                        (LPWSTR)RT_DIALOG)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+            return FALSE;
+        }
+        if (!(hDlgTmpl = LoadResource((HINSTANCE)lpChCol->hInstance, hResInfo)) ||
+            !(template = LockResource(hDlgTmpl)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return FALSE;
+        }
+    }
+    else
+    {
+       HRSRC hResInfo;
+       HGLOBAL hDlgTmpl;
+       if (!(hResInfo = FindResourceA(COMDLG32_hInstance, "CHOOSE_COLOR", (LPSTR)RT_DIALOG)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+           return FALSE;
+       }
+       if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo )) ||
+           !(template = LockResource(hDlgTmpl)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+    }
+
+    bRet = DialogBoxIndirectParamW(COMDLG32_hInstance, template, lpChCol->hwndOwner,
+                     ColorDlgProc, (DWORD)lpChCol);
+    return bRet;
+}
+
+/***********************************************************************
+ *            ChooseColorA  (COMDLG32.@)
+ */
+BOOL WINAPI ChooseColorA( LPCHOOSECOLORA lpChCol )
+
+{
+  BOOL ret;
+  LPCHOOSECOLORW lpcc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CHOOSECOLORW));
+  lpcc->lStructSize = sizeof(*lpcc);
+  lpcc->hwndOwner = lpChCol->hwndOwner;
+  lpcc->hInstance = lpChCol->hInstance;
+  lpcc->rgbResult = lpChCol->rgbResult;
+  lpcc->lpCustColors = lpChCol->lpCustColors;
+  lpcc->Flags = lpChCol->Flags;
+  lpcc->lCustData = lpChCol->lCustData;
+  lpcc->lpfnHook = (LPCCHOOKPROC) lpChCol->lpfnHook;
+  if ((lpcc->Flags & CC_ENABLETEMPLATE) && (lpChCol->lpTemplateName)) {
+      if (HIWORD(lpChCol->lpTemplateName)) {
+         INT len = MultiByteToWideChar( CP_ACP, 0, lpChCol->lpTemplateName, -1, NULL, 0);
+         lpcc->lpTemplateName = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
+         MultiByteToWideChar( CP_ACP, 0, lpChCol->lpTemplateName, -1, (LPWSTR)lpcc->lpTemplateName, len );
+      } else {
+         lpcc->lpTemplateName = (LPWSTR)lpChCol->lpTemplateName;
+      }
+  }
+
+  ret = ChooseColorW(lpcc);
+
+  if (ret)
+      lpChCol->rgbResult = lpcc->rgbResult;
+  if (HIWORD(lpcc->lpTemplateName)) HeapFree(GetProcessHeap(), 0, (LPSTR)lpcc->lpTemplateName);
+  HeapFree(GetProcessHeap(), 0, lpcc);
+  return ret;
+}
diff --git a/reactos/lib/comdlg32/colordlg16.c b/reactos/lib/comdlg32/colordlg16.c
new file mode 100644 (file)
index 0000000..0159e47
--- /dev/null
@@ -0,0 +1,476 @@
+/*
+ * COMMDLG - Color Dialog
+ *
+ * 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
+ */
+
+/* BUGS : still seems to not refresh correctly
+   sometimes, especially when 2 instances of the
+   dialog are loaded at the same time */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "dlgs.h"
+#include "wine/debug.h"
+#include "cderr.h"
+#include "cdlg.h"
+#include "cdlg16.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+/* Chose Color PRIVATE Structure:
+ *
+ * This is a duplicate of the 32bit code with
+ * a extra member
+ */
+typedef struct CCPRIVATE
+{
+    LPCHOOSECOLORW lpcc; /* points to public known data structure */
+    LPCHOOSECOLOR16 lpcc16; /* save the 16 bits pointer */
+    int nextuserdef;     /* next free place in user defined color array */
+    HDC hdcMem;          /* color graph used for BitBlt() */
+    HBITMAP hbmMem;      /* color graph bitmap */
+    RECT fullsize;       /* original dialog window size */
+    UINT msetrgb;        /* # of SETRGBSTRING message (today not used)  */
+    RECT old3angle;      /* last position of l-marker */
+    RECT oldcross;       /* last position of color/satuation marker */
+    BOOL updating;       /* to prevent recursive WM_COMMAND/EN_UPDATE processing */
+    int h;
+    int s;
+    int l;               /* for temporary storing of hue,sat,lum */
+    int capturedGraph;   /* control mouse captured */
+    RECT focusRect;      /* rectangle last focused item */
+    HWND hwndFocus;      /* handle last focused item */
+} *LCCPRIV;
+
+/***********************************************************************
+ *                              CC_WMInitDialog16                  [internal]
+ */
+LONG CC_WMInitDialog16( HWND hDlg, WPARAM wParam, LPARAM lParam )
+{
+   int i, res;
+   int r, g, b;
+   HWND hwnd;
+   RECT rect;
+   POINT point;
+   LCCPRIV lpp;
+   CHOOSECOLORW *ch32;
+   CHOOSECOLOR16 *ch16 = (CHOOSECOLOR16 *) lParam;
+
+   TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
+   lpp = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct CCPRIVATE) );
+
+   if (ch16->lStructSize != sizeof(CHOOSECOLOR16) )
+   {
+       HeapFree(GetProcessHeap(), 0, lpp);
+       EndDialog (hDlg, 0) ;
+       return FALSE;
+   }
+   ch32 = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CHOOSECOLORW) );
+   lpp->lpcc = ch32;
+   lpp->lpcc16 = ch16;
+   ch32->lStructSize = sizeof(CHOOSECOLORW);
+   ch32->hwndOwner = HWND_32(ch16->hwndOwner);
+   /* Should be an HINSTANCE but MS made a typo */
+   ch32->hInstance = HWND_32(ch16->hInstance);
+   ch32->lpCustColors = MapSL(ch16->lpCustColors);
+   ch32->lpfnHook = (LPCCHOOKPROC) ch16->lpfnHook; /* only used as flag */
+   ch32->Flags = ch16->Flags;
+
+   SetWindowLongA(hDlg, DWL_USER, (LONG)lpp);
+
+   if (!(lpp->lpcc->Flags & CC_SHOWHELP))
+      ShowWindow( GetDlgItem(hDlg,0x40e), SW_HIDE);
+   lpp->msetrgb = RegisterWindowMessageA(SETRGBSTRINGA);
+
+#if 0
+   cpos = MAKELONG(5,7); /* init */
+   if (lpp->lpcc->Flags & CC_RGBINIT)
+   {
+     for (i = 0; i < 6; i++)
+       for (j = 0; j < 8; j++)
+        if (predefcolors[i][j] == lpp->lpcc->rgbResult)
+        {
+          cpos = MAKELONG(i,j);
+          goto found;
+        }
+   }
+   found:
+   /* FIXME: Draw_a_focus_rect & set_init_values */
+#endif
+
+   GetWindowRect(hDlg, &lpp->fullsize);
+   if (lpp->lpcc->Flags & CC_FULLOPEN || lpp->lpcc->Flags & CC_PREVENTFULLOPEN)
+   {
+      hwnd = GetDlgItem(hDlg, 0x2cf);
+      EnableWindow(hwnd, FALSE);
+   }
+   if (!(lpp->lpcc->Flags & CC_FULLOPEN ) || lpp->lpcc->Flags & CC_PREVENTFULLOPEN)
+   {
+      rect = lpp->fullsize;
+      res = rect.bottom - rect.top;
+      hwnd = GetDlgItem(hDlg, 0x2c6); /* cut at left border */
+      point.x = point.y = 0;
+      ClientToScreen(hwnd, &point);
+      ScreenToClient(hDlg,&point);
+      GetClientRect(hDlg, &rect);
+      point.x += GetSystemMetrics(SM_CXDLGFRAME);
+      SetWindowPos(hDlg, 0, 0, 0, point.x, res, SWP_NOMOVE|SWP_NOZORDER);
+
+      for (i = 0x2bf; i < 0x2c5; i++)
+         ShowWindow( GetDlgItem(hDlg, i), SW_HIDE);
+      for (i = 0x2d3; i < 0x2d9; i++)
+         ShowWindow( GetDlgItem(hDlg, i), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 0x2c9), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 0x2c8), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 0x2c6), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 0x2c5), SW_HIDE);
+      ShowWindow( GetDlgItem(hDlg, 1090 ), SW_HIDE);
+   }
+   else
+      CC_SwitchToFullSize(hDlg, lpp->lpcc->rgbResult, NULL);
+   res = TRUE;
+   for (i = 0x2bf; i < 0x2c5; i++)
+     SendMessageA( GetDlgItem(hDlg, i), EM_LIMITTEXT, 3, 0);  /* max 3 digits:  xyz  */
+   if (CC_HookCallChk(lpp->lpcc))
+   {
+          res = CallWindowProc16( (WNDPROC16)lpp->lpcc16->lpfnHook,
+                                 HWND_16(hDlg), WM_INITDIALOG, wParam, lParam);
+   }
+
+   /* Set the initial values of the color chooser dialog */
+   r = GetRValue(lpp->lpcc->rgbResult);
+   g = GetGValue(lpp->lpcc->rgbResult);
+   b = GetBValue(lpp->lpcc->rgbResult);
+
+   CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+   lpp->h = CC_RGBtoHSL('H', r, g, b);
+   lpp->s = CC_RGBtoHSL('S', r, g, b);
+   lpp->l = CC_RGBtoHSL('L', r, g, b);
+
+   /* Doing it the long way because CC_EditSetRGB/HSL doesn't seem to work */
+   SetDlgItemInt(hDlg, 703, lpp->h, TRUE);
+   SetDlgItemInt(hDlg, 704, lpp->s, TRUE);
+   SetDlgItemInt(hDlg, 705, lpp->l, TRUE);
+   SetDlgItemInt(hDlg, 706, r, TRUE);
+   SetDlgItemInt(hDlg, 707, g, TRUE);
+   SetDlgItemInt(hDlg, 708, b, TRUE);
+
+   CC_PaintCross(hDlg, lpp->h, lpp->s);
+   CC_PaintTriangle(hDlg, lpp->l);
+
+   return res;
+}
+
+/***********************************************************************
+ *                              CC_WMCommand16                  [internal]
+ */
+LRESULT CC_WMCommand16( HWND hDlg, WPARAM wParam, LPARAM lParam, WORD notifyCode, HWND hwndCtl )
+{
+    int  r, g, b, i, xx;
+    UINT cokmsg;
+    HDC hdc;
+    COLORREF *cr;
+    LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+    TRACE("CC_WMCommand wParam=%x lParam=%lx\n", wParam, lParam);
+    switch (wParam)
+    {
+          case 0x2c2:  /* edit notify RGB */
+         case 0x2c3:
+         case 0x2c4:
+              if (notifyCode == EN_UPDATE && !lpp->updating)
+                        {
+                          i = CC_CheckDigitsInEdit(hwndCtl, 255);
+                          r = GetRValue(lpp->lpcc->rgbResult);
+                          g = GetGValue(lpp->lpcc->rgbResult);
+                          b= GetBValue(lpp->lpcc->rgbResult);
+                          xx = 0;
+                          switch (wParam)
+                          {
+                           case 0x2c2: if ((xx = (i != r))) r = i; break;
+                           case 0x2c3: if ((xx = (i != g))) g = i; break;
+                           case 0x2c4: if ((xx = (i != b))) b = i; break;
+                          }
+                          if (xx) /* something has changed */
+                          {
+                           lpp->lpcc->rgbResult = RGB(r, g, b);
+                           CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+                           lpp->h = CC_RGBtoHSL('H', r, g, b);
+                           lpp->s = CC_RGBtoHSL('S', r, g, b);
+                           lpp->l = CC_RGBtoHSL('L', r, g, b);
+                           CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l);
+                           CC_PaintCross(hDlg, lpp->h, lpp->s);
+                           CC_PaintTriangle(hDlg, lpp->l);
+                          }
+                        }
+                break;
+
+         case 0x2bf:  /* edit notify HSL */
+         case 0x2c0:
+         case 0x2c1:
+              if (notifyCode == EN_UPDATE && !lpp->updating)
+                        {
+                          i = CC_CheckDigitsInEdit(hwndCtl , wParam == 0x2bf ? 239:240);
+                          xx = 0;
+                          switch (wParam)
+                          {
+                           case 0x2bf: if ((xx = ( i != lpp->h))) lpp->h = i; break;
+                           case 0x2c0: if ((xx = ( i != lpp->s))) lpp->s = i; break;
+                           case 0x2c1: if ((xx = ( i != lpp->l))) lpp->l = i; break;
+                          }
+                          if (xx) /* something has changed */
+                          {
+                           r = CC_HSLtoRGB('R', lpp->h, lpp->s, lpp->l);
+                           g = CC_HSLtoRGB('G', lpp->h, lpp->s, lpp->l);
+                           b = CC_HSLtoRGB('B', lpp->h, lpp->s, lpp->l);
+                           lpp->lpcc->rgbResult = RGB(r, g, b);
+                           CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+                           CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult);
+                           CC_PaintCross(hDlg, lpp->h, lpp->s);
+                           CC_PaintTriangle(hDlg, lpp->l);
+                          }
+                        }
+              break;
+
+          case 0x2cf:
+               CC_SwitchToFullSize(hDlg, lpp->lpcc->rgbResult, &lpp->fullsize);
+              SetFocus( GetDlgItem(hDlg, 0x2bf));
+              break;
+
+          case 0x2c8:    /* add colors ... column by column */
+               cr = lpp->lpcc->lpCustColors;
+               cr[(lpp->nextuserdef % 2) * 8 + lpp->nextuserdef / 2] = lpp->lpcc->rgbResult;
+               if (++lpp->nextuserdef == 16)
+                  lpp->nextuserdef = 0;
+              CC_PaintUserColorArray(hDlg, 2, 8, lpp->lpcc->lpCustColors);
+              break;
+
+          case 0x2c9:              /* resulting color */
+              hdc = GetDC(hDlg);
+              lpp->lpcc->rgbResult = GetNearestColor(hdc, lpp->lpcc->rgbResult);
+              ReleaseDC(hDlg, hdc);
+              CC_EditSetRGB(hDlg, lpp->lpcc->rgbResult);
+              CC_PaintSelectedColor(hDlg, lpp->lpcc->rgbResult);
+              r = GetRValue(lpp->lpcc->rgbResult);
+              g = GetGValue(lpp->lpcc->rgbResult);
+              b = GetBValue(lpp->lpcc->rgbResult);
+              lpp->h = CC_RGBtoHSL('H', r, g, b);
+              lpp->s = CC_RGBtoHSL('S', r, g, b);
+              lpp->l = CC_RGBtoHSL('L', r, g, b);
+              CC_EditSetHSL(hDlg, lpp->h, lpp->s, lpp->l);
+              CC_PaintCross(hDlg, lpp->h, lpp->s);
+              CC_PaintTriangle(hDlg, lpp->l);
+              break;
+
+         case 0x40e:           /* Help! */ /* The Beatles, 1965  ;-) */
+              i = RegisterWindowMessageA(HELPMSGSTRINGA);
+               if (lpp->lpcc16)
+               {
+                   if (lpp->lpcc->hwndOwner)
+                      SendMessageA(lpp->lpcc->hwndOwner, i, 0, (LPARAM)lpp->lpcc16);
+                   if ( CC_HookCallChk(lpp->lpcc))
+                      CallWindowProc16( (WNDPROC16) lpp->lpcc16->lpfnHook,
+                                        HWND_16(hDlg), WM_COMMAND, psh15,
+                                        (LPARAM)lpp->lpcc16);
+               }
+              break;
+
+          case IDOK :
+               cokmsg = RegisterWindowMessageA(COLOROKSTRINGA);
+                if (lpp->lpcc16)
+                {
+                   if (lpp->lpcc->hwndOwner)
+                       if (SendMessageA(lpp->lpcc->hwndOwner, cokmsg, 0, (LPARAM)lpp->lpcc16))
+                          break;    /* do NOT close */
+                }
+                if (lpp->lpcc16)
+                {
+                    BYTE *ptr = MapSL(lpp->lpcc16->lpCustColors);
+                    memcpy(ptr, lpp->lpcc->lpCustColors, sizeof(COLORREF)*16);
+                    lpp->lpcc16->rgbResult = lpp->lpcc->rgbResult;
+                }
+               EndDialog(hDlg, 1) ;
+               return TRUE ;
+
+         case IDCANCEL :
+               EndDialog(hDlg, 0) ;
+               return TRUE ;
+
+       }
+       return FALSE;
+}
+
+/***********************************************************************
+ *           ColorDlgProc   (COMMDLG.8)
+ */
+BOOL16 CALLBACK ColorDlgProc16( HWND16 hDlg16, UINT16 message,
+                            WPARAM16 wParam, LONG lParam )
+{
+    BOOL16 res;
+    HWND hDlg = HWND_32(hDlg16);
+
+    LCCPRIV lpp = (LCCPRIV)GetWindowLongA(hDlg, DWL_USER);
+    if (message != WM_INITDIALOG)
+    {
+        if (!lpp)
+            return FALSE;
+        res=0;
+        if (CC_HookCallChk(lpp->lpcc))
+            res = CallWindowProc16( (WNDPROC16)lpp->lpcc16->lpfnHook, hDlg16, message, wParam, lParam);
+        if (res)
+            return res;
+    }
+
+    /* FIXME: SetRGB message
+       if (message && message == msetrgb)
+       return HandleSetRGB(hDlg, lParam);
+    */
+
+    switch (message)
+    {
+         case WM_INITDIALOG:
+                       return CC_WMInitDialog16(hDlg, wParam, lParam);
+         case WM_NCDESTROY:
+                       DeleteDC(lpp->hdcMem);
+                       DeleteObject(lpp->hbmMem);
+                        HeapFree(GetProcessHeap(), 0, lpp->lpcc);
+                        HeapFree(GetProcessHeap(), 0, lpp);
+                       SetWindowLongA(hDlg, DWL_USER, 0L); /* we don't need it anymore */
+                       break;
+         case WM_COMMAND:
+                       if (CC_WMCommand16(hDlg, wParam, lParam,
+                                        HIWORD(lParam), HWND_32(LOWORD(lParam))))
+                          return TRUE;
+                       break;
+         case WM_PAINT:
+                       if (CC_WMPaint(hDlg, wParam, lParam))
+                          return TRUE;
+                       break;
+         case WM_LBUTTONDBLCLK:
+                       if (CC_MouseCheckResultWindow(hDlg,lParam))
+                         return TRUE;
+                       break;
+         case WM_MOUSEMOVE:
+                       if (CC_WMMouseMove(hDlg, lParam))
+                         return TRUE;
+                       break;
+         case WM_LBUTTONUP:  /* FIXME: ClipCursor off (if in color graph)*/
+                        if (CC_WMLButtonUp(hDlg, wParam, lParam))
+                           return TRUE;
+                       break;
+         case WM_LBUTTONDOWN:/* FIXME: ClipCursor on  (if in color graph)*/
+                       if (CC_WMLButtonDown(hDlg, wParam, lParam))
+                          return TRUE;
+                       break;
+    }
+    return FALSE ;
+}
+
+/***********************************************************************
+ *            ChooseColor  (COMMDLG.5)
+ */
+BOOL16 WINAPI ChooseColor16( LPCHOOSECOLOR16 lpChCol )
+{
+    HINSTANCE16 hInst;
+    HANDLE16 hDlgTmpl16 = 0, hResource16 = 0;
+    HGLOBAL16 hGlobal16 = 0;
+    BOOL16 bRet = FALSE;
+    LPCVOID template;
+    FARPROC16 ptr;
+
+    TRACE("ChooseColor\n");
+    if (!lpChCol) return FALSE;
+
+    if (lpChCol->Flags & CC_ENABLETEMPLATEHANDLE)
+        hDlgTmpl16 = lpChCol->hInstance;
+    else if (lpChCol->Flags & CC_ENABLETEMPLATE)
+    {
+        HANDLE16 hResInfo;
+        if (!(hResInfo = FindResource16(lpChCol->hInstance,
+                                        MapSL(lpChCol->lpTemplateName),
+                                        (LPSTR)RT_DIALOG)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+            return FALSE;
+        }
+        if (!(hDlgTmpl16 = LoadResource16(lpChCol->hInstance, hResInfo)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return FALSE;
+        }
+        hResource16 = hDlgTmpl16;
+    }
+    else
+    {
+       HRSRC hResInfo;
+       HGLOBAL hDlgTmpl32;
+        LPCVOID template32;
+        DWORD size;
+       if (!(hResInfo = FindResourceA(COMDLG32_hInstance, "CHOOSE_COLOR", (LPSTR)RT_DIALOG)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+           return FALSE;
+       }
+       if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo)) ||
+           !(template32 = LockResource(hDlgTmpl32)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+        size = SizeofResource(GetModuleHandleA("COMDLG32"), hResInfo);
+        hGlobal16 = GlobalAlloc16(0, size);
+        if (!hGlobal16)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE);
+            ERR("alloc failure for %ld bytes\n", size);
+            return FALSE;
+        }
+        template = GlobalLock16(hGlobal16);
+        if (!template)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE);
+            ERR("global lock failure for %x handle\n", hDlgTmpl16);
+            GlobalFree16(hGlobal16);
+            return FALSE;
+        }
+        ConvertDialog32To16((LPVOID)template32, size, (LPVOID)template);
+        hDlgTmpl16 = hGlobal16;
+    }
+
+    ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 8);
+    hInst = GetWindowLongA(HWND_32(lpChCol->hwndOwner), GWL_HINSTANCE);
+    bRet = DialogBoxIndirectParam16(hInst, hDlgTmpl16, lpChCol->hwndOwner,
+                     (DLGPROC16) ptr, (DWORD)lpChCol);
+    if (hResource16) FreeResource16(hDlgTmpl16);
+    if (hGlobal16)
+    {
+        GlobalUnlock16(hGlobal16);
+        GlobalFree16(hGlobal16);
+    }
+    return bRet;
+}
diff --git a/reactos/lib/comdlg32/comdlg32.spec b/reactos/lib/comdlg32/comdlg32.spec
new file mode 100644 (file)
index 0000000..618ccd0
--- /dev/null
@@ -0,0 +1,25 @@
+@ stdcall ChooseColorA(ptr)
+@ stdcall ChooseColorW(ptr)
+@ stdcall ChooseFontA(ptr)
+@ stdcall ChooseFontW(ptr)
+@ stdcall CommDlgExtendedError()
+@ stdcall FindTextA(ptr)
+@ stdcall FindTextW(ptr)
+@ stdcall GetFileTitleA(str ptr long)
+@ stdcall GetFileTitleW(wstr ptr long)
+@ stdcall GetOpenFileNameA(ptr)
+@ stdcall GetOpenFileNameW(ptr)
+@ stdcall GetSaveFileNameA(ptr)
+@ stdcall GetSaveFileNameW(ptr)
+@ stub LoadAlterBitmap
+@ stdcall PageSetupDlgA(ptr)
+@ stdcall PageSetupDlgW(ptr)
+@ stdcall PrintDlgA(ptr)
+@ stdcall PrintDlgExA(ptr)
+@ stdcall PrintDlgExW(ptr)
+@ stdcall PrintDlgW(ptr)
+@ stdcall ReplaceTextA(ptr)
+@ stdcall ReplaceTextW(ptr)
+@ stub WantArrows
+@ stub dwLBSubclass
+@ stub dwOKSubclass
diff --git a/reactos/lib/comdlg32/commdlg.spec b/reactos/lib/comdlg32/commdlg.spec
new file mode 100644 (file)
index 0000000..d551dc6
--- /dev/null
@@ -0,0 +1,27 @@
+1   pascal -ret16 GetOpenFileName(segptr) GetOpenFileName16
+2   pascal -ret16 GetSaveFileName(segptr) GetSaveFileName16
+5   pascal -ret16 ChooseColor(ptr) ChooseColor16
+6   pascal   FileOpenDlgProc(word word word long) FileOpenDlgProc16
+7   pascal   FileSaveDlgProc(word word word long) FileSaveDlgProc16
+8   pascal   ColorDlgProc(word word word long) ColorDlgProc16
+#9   pascal  LOADALTERBITMAP exported, shared data
+11  pascal -ret16 FindText(segptr) FindText16
+12  pascal -ret16 ReplaceText(segptr) ReplaceText16
+13  pascal   FindTextDlgProc(word word word long) FindTextDlgProc16
+14  pascal   ReplaceTextDlgProc(word word word long) ReplaceTextDlgProc16
+15  pascal -ret16 ChooseFont(ptr) ChooseFont16
+16  pascal -ret16 FormatCharDlgProc(word word word long) FormatCharDlgProc16
+18  pascal -ret16 FontStyleEnumProc(ptr ptr word long)   FontStyleEnumProc16
+19  pascal -ret16 FontFamilyEnumProc(ptr ptr word long)  FontFamilyEnumProc16
+20  pascal -ret16 PrintDlg(ptr) PrintDlg16
+21  pascal   PrintDlgProc(word word word long) PrintDlgProc16
+22  pascal   PrintSetupDlgProc(word word word long) PrintSetupDlgProc16
+#23  pascal  EDITINTEGERONLY exported, shared data
+#25  pascal  WANTARROWS exported, shared data
+26  pascal   CommDlgExtendedError() CommDlgExtendedError
+27  pascal -ret16 GetFileTitle(str ptr word) GetFileTitle16
+#28  pascal  WEP exported, shared data
+#29  pascal  DWLBSUBCLASS exported, shared data
+#30  pascal  DWUPARROWHACK exported, shared data
+#31  pascal  DWOKSUBCLASS exported, shared data
+32 pascal DllEntryPoint(long word word word long word) COMMDLG_DllEntryPoint
diff --git a/reactos/lib/comdlg32/filedlg.c b/reactos/lib/comdlg32/filedlg.c
new file mode 100644 (file)
index 0000000..9fff80d
--- /dev/null
@@ -0,0 +1,3283 @@
+/*
+ * COMMDLG - File Open Dialogs Win95 look and feel
+ *
+ * Copyright 1999 Francois Boisvert
+ * Copyright 1999, 2000 Juergen Schmied
+ *
+ * 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
+ *
+ * FIXME: The whole concept of handling unicode is badly broken.
+ *     many hook-messages expect a pointer to a
+ *     OPENFILENAMEA or W structure. With the current architecture
+ *     we would have to convert the beast at every call to a hook.
+ *     we have to find a better solution but it would likely cause
+ *     a complete rewrite after which we should handle the
+ *     OPENFILENAME structure without any converting (jsch).
+ *
+ * FIXME: any hook gets a OPENFILENAMEA structure
+ *
+ * FIXME: CDN_FILEOK is wrong implemented, other CDN_ messages likely too
+ *
+ * FIXME: old style hook messages are not implemented (except FILEOKSTRING)
+ *
+ * FIXME: lpstrCustomFilter not handled
+ *
+ * FIXME: if the size of lpstrFile (nMaxFile) is too small the first
+ * two bytes of lpstrFile should contain the needed size
+ *
+ * FIXME: algorithm for selecting the initial directory is too simple
+ *
+ * FIXME: add to recent docs
+ *
+ * FIXME: flags not implemented: OFN_CREATEPROMPT, OFN_DONTADDTORECENT,
+ * OFN_ENABLEINCLUDENOTIFY, OFN_ENABLESIZING,
+ * OFN_NODEREFERENCELINKS, OFN_NOREADONLYRETURN,
+ * OFN_NOTESTFILECREATE, OFN_USEMONIKERS
+ *
+ * FIXME: lCustData for lpfnHook (WM_INITDIALOG)
+ *
+ *
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#include "windef.h"
+#include "winbase.h"
+#include "winreg.h"
+#include "winternl.h"
+#include "winnls.h"
+#include "wine/unicode.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "dlgs.h"
+#include "cdlg.h"
+#include "wine/debug.h"
+#include "cderr.h"
+#include "shellapi.h"
+#include "shlguid.h"
+#include "shlobj.h"
+#include "filedlgbrowser.h"
+#include "shlwapi.h"
+
+#include "ros.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#define UNIMPLEMENTED_FLAGS \
+(OFN_CREATEPROMPT | OFN_DONTADDTORECENT |\
+OFN_ENABLEINCLUDENOTIFY | OFN_ENABLESIZING |\
+OFN_NODEREFERENCELINKS | OFN_NOREADONLYRETURN |\
+OFN_NOTESTFILECREATE /*| OFN_USEMONIKERS*/)
+
+#define IsHooked(fodInfos) \
+       ((fodInfos->ofnInfos->Flags & OFN_ENABLEHOOK) && fodInfos->ofnInfos->lpfnHook)
+/***********************************************************************
+ * Data structure and global variables
+ */
+typedef struct SFolder
+{
+  int m_iImageIndex;    /* Index of picture in image list */
+  HIMAGELIST hImgList;
+  int m_iIndent;      /* Indentation index */
+  LPITEMIDLIST pidlItem;  /* absolute pidl of the item */
+
+} SFOLDER,*LPSFOLDER;
+
+typedef struct tagLookInInfo
+{
+  int iMaxIndentation;
+  UINT uSelectedItem;
+} LookInInfos;
+
+
+/***********************************************************************
+ * Defines and global variables
+ */
+
+/* Draw item constant */
+#define ICONWIDTH 18
+#define XTEXTOFFSET 3
+
+/* AddItem flags*/
+#define LISTEND -1
+
+/* SearchItem methods */
+#define SEARCH_PIDL 1
+#define SEARCH_EXP  2
+#define ITEM_NOTFOUND -1
+
+/* Undefined windows message sent by CreateViewObject*/
+#define WM_GETISHELLBROWSER  WM_USER+7
+
+/* NOTE
+ * Those macros exist in windowsx.h. However, you can't really use them since
+ * they rely on the UNICODE defines and can't be used inside Wine itself.
+ */
+
+/* Combo box macros */
+#define CBAddString(hwnd,str) \
+  SendMessageA(hwnd,CB_ADDSTRING,0,(LPARAM)str);
+#define CBAddStringW(hwnd,str) \
+  SendMessageW(hwnd,CB_ADDSTRING,0,(LPARAM)str);
+
+#define CBInsertString(hwnd,str,pos) \
+  SendMessageA(hwnd,CB_INSERTSTRING,(WPARAM)pos,(LPARAM)str);
+
+#define CBDeleteString(hwnd,pos) \
+  SendMessageA(hwnd,CB_DELETESTRING,(WPARAM)pos,0);
+
+#define CBSetItemDataPtr(hwnd,iItemId,dataPtr) \
+  SendMessageA(hwnd,CB_SETITEMDATA,(WPARAM)iItemId,(LPARAM)dataPtr);
+
+#define CBGetItemDataPtr(hwnd,iItemId) \
+  SendMessageA(hwnd,CB_GETITEMDATA,(WPARAM)iItemId,0)
+
+#define CBGetLBText(hwnd,iItemId,str) \
+  SendMessageA(hwnd,CB_GETLBTEXT,(WPARAM)iItemId,(LPARAM)str);
+
+#define CBGetCurSel(hwnd) \
+  SendMessageA(hwnd,CB_GETCURSEL,0,0);
+
+#define CBSetCurSel(hwnd,pos) \
+  SendMessageA(hwnd,CB_SETCURSEL,(WPARAM)pos,0);
+
+#define CBGetCount(hwnd) \
+    SendMessageA(hwnd,CB_GETCOUNT,0,0);
+#define CBShowDropDown(hwnd,show) \
+  SendMessageA(hwnd,CB_SHOWDROPDOWN,(WPARAM)show,0);
+#define CBSetItemHeight(hwnd,index,height) \
+  SendMessageA(hwnd,CB_SETITEMHEIGHT,(WPARAM)index,(LPARAM)height);
+
+#define CBSetExtendedUI(hwnd,flag) \
+  SendMessageA(hwnd,CB_SETEXTENDEDUI,(WPARAM)(flag),0)
+
+const char *FileOpenDlgInfosStr = "FileOpenDlgInfos"; /* windows property description string */
+const char *LookInInfosStr = "LookInInfos"; /* LOOKIN combo box property */
+
+/***********************************************************************
+ * Prototypes
+ */
+
+/* Internal functions used by the dialog */
+static LRESULT FILEDLG95_FillControls(HWND hwnd, WPARAM wParam, LPARAM lParam);
+static LRESULT FILEDLG95_OnWMCommand(HWND hwnd, WPARAM wParam, LPARAM lParam);
+static LRESULT FILEDLG95_OnWMGetIShellBrowser(HWND hwnd);
+       BOOL    FILEDLG95_OnOpen(HWND hwnd);
+static LRESULT FILEDLG95_InitControls(HWND hwnd);
+static void    FILEDLG95_Clean(HWND hwnd);
+
+/* Functions used by the shell navigation */
+static LRESULT FILEDLG95_SHELL_Init(HWND hwnd);
+static BOOL    FILEDLG95_SHELL_UpFolder(HWND hwnd);
+static BOOL    FILEDLG95_SHELL_ExecuteCommand(HWND hwnd, LPCSTR lpVerb);
+static void    FILEDLG95_SHELL_Clean(HWND hwnd);
+static BOOL    FILEDLG95_SHELL_BrowseToDesktop(HWND hwnd);
+
+/* Functions used by the filetype combo box */
+static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd);
+static BOOL    FILEDLG95_FILETYPE_OnCommand(HWND hwnd, WORD wNotifyCode);
+static int     FILEDLG95_FILETYPE_SearchExt(HWND hwnd,LPCWSTR lpstrExt);
+static void    FILEDLG95_FILETYPE_Clean(HWND hwnd);
+
+/* Functions used by the Look In combo box */
+static HRESULT FILEDLG95_LOOKIN_Init(HWND hwndCombo);
+static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct);
+static BOOL    FILEDLG95_LOOKIN_OnCommand(HWND hwnd, WORD wNotifyCode);
+static int     FILEDLG95_LOOKIN_AddItem(HWND hwnd,LPITEMIDLIST pidl, int iInsertId);
+static int     FILEDLG95_LOOKIN_SearchItem(HWND hwnd,WPARAM searchArg,int iSearchMethod);
+static int     FILEDLG95_LOOKIN_InsertItemAfterParent(HWND hwnd,LPITEMIDLIST pidl);
+static int     FILEDLG95_LOOKIN_RemoveMostExpandedItem(HWND hwnd);
+       int     FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl);
+static void    FILEDLG95_LOOKIN_Clean(HWND hwnd);
+
+/* Miscellaneous tool functions */
+HRESULT       GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrFileName);
+HRESULT       GetFileName(HWND hwnd, LPITEMIDLIST pidl, LPSTR lpstrFileName);
+IShellFolder* GetShellFolderFromPidl(LPITEMIDLIST pidlAbs);
+LPITEMIDLIST  GetParentPidl(LPITEMIDLIST pidl);
+LPITEMIDLIST  GetPidlFromName(IShellFolder *psf,LPWSTR lpcstrFileName);
+
+/* Shell memory allocation */
+static void *MemAlloc(UINT size);
+static void MemFree(void *mem);
+
+BOOL WINAPI GetFileName95(FileOpenDlgInfos *fodInfos);
+INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+HRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode);
+HRESULT FILEDLG95_HandleCustomDialogMessages(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCount, UINT sizeUsed);
+static BOOL BrowseSelectedFolder(HWND hwnd);
+
+/***********************************************************************
+ *      GetFileName95
+ *
+ * Creates an Open common dialog box that lets the user select
+ * the drive, directory, and the name of a file or set of files to open.
+ *
+ * IN  : The FileOpenDlgInfos structure associated with the dialog
+ * OUT : TRUE on success
+ *       FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
+ */
+BOOL WINAPI GetFileName95(FileOpenDlgInfos *fodInfos)
+{
+
+    LRESULT lRes;
+    LPCVOID template;
+    HRSRC hRes;
+    HANDLE hDlgTmpl = 0;
+
+    /* test for missing functionality */
+    if (fodInfos->ofnInfos->Flags & UNIMPLEMENTED_FLAGS)
+    {
+      FIXME("Flags 0x%08lx not yet implemented\n",
+         fodInfos->ofnInfos->Flags & UNIMPLEMENTED_FLAGS);
+    }
+
+    /* Create the dialog from a template */
+
+    if(!(hRes = FindResourceA(COMDLG32_hInstance,MAKEINTRESOURCEA(NEWFILEOPENORD),(LPSTR)RT_DIALOG)))
+    {
+        COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+        return FALSE;
+    }
+    if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hRes )) ||
+        !(template = LockResource( hDlgTmpl )))
+    {
+        COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+        return FALSE;
+    }
+
+    /* old style hook messages */
+    if (IsHooked(fodInfos))
+    {
+      fodInfos->HookMsg.fileokstring = RegisterWindowMessageA(FILEOKSTRINGA);
+      fodInfos->HookMsg.lbselchstring = RegisterWindowMessageA(LBSELCHSTRINGA);
+      fodInfos->HookMsg.helpmsgstring = RegisterWindowMessageA(HELPMSGSTRINGA);
+      fodInfos->HookMsg.sharevistring = RegisterWindowMessageA(SHAREVISTRINGA);
+    }
+
+    lRes = DialogBoxIndirectParamA(COMDLG32_hInstance,
+                                  (LPDLGTEMPLATEA) template,
+                                  fodInfos->ofnInfos->hwndOwner,
+                                  FileOpenDlgProc95,
+                                  (LPARAM) fodInfos);
+
+    /* Unable to create the dialog */
+    if( lRes == -1)
+        return FALSE;
+
+    return lRes;
+}
+
+/***********************************************************************
+ *      GetFileDialog95A
+ *
+ * Call GetFileName95 with this structure and clean the memory.
+ *
+ * IN  : The OPENFILENAMEA initialisation structure passed to
+ *       GetOpenFileNameA win api function (see filedlg.c)
+ */
+BOOL  WINAPI GetFileDialog95A(LPOPENFILENAMEA ofn,UINT iDlgType)
+{
+  BOOL ret;
+  FileOpenDlgInfos fodInfos;
+  LPSTR lpstrSavDir = NULL;
+  LPWSTR title = NULL;
+  LPWSTR defext = NULL;
+  LPWSTR filter = NULL;
+  LPWSTR customfilter = NULL;
+
+  /* Initialize FileOpenDlgInfos structure */
+  ZeroMemory(&fodInfos, sizeof(FileOpenDlgInfos));
+
+  /* Pass in the original ofn */
+  fodInfos.ofnInfos = ofn;
+
+  /* save current directory */
+  if (ofn->Flags & OFN_NOCHANGEDIR)
+  {
+     lpstrSavDir = MemAlloc(MAX_PATH);
+     GetCurrentDirectoryA(MAX_PATH, lpstrSavDir);
+  }
+
+  fodInfos.unicode = FALSE;
+
+  /* convert all the input strings to unicode */
+  if(ofn->lpstrInitialDir)
+  {
+    DWORD len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrInitialDir, -1, NULL, 0 );
+    fodInfos.initdir = MemAlloc((len+1)*sizeof(WCHAR));
+    MultiByteToWideChar( CP_ACP, 0, ofn->lpstrInitialDir, -1, fodInfos.initdir, len);
+  }
+  else
+    fodInfos.initdir = NULL;
+
+  if(ofn->lpstrFile)
+  {
+    fodInfos.filename = MemAlloc(ofn->nMaxFile*sizeof(WCHAR));
+    MultiByteToWideChar( CP_ACP, 0, ofn->lpstrFile, -1, fodInfos.filename, ofn->nMaxFile);
+  }
+  else
+    fodInfos.filename = NULL;
+
+  if(ofn->lpstrDefExt)
+  {
+    DWORD len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrDefExt, -1, NULL, 0 );
+    defext = MemAlloc((len+1)*sizeof(WCHAR));
+    MultiByteToWideChar( CP_ACP, 0, ofn->lpstrDefExt, -1, defext, len);
+  }
+  fodInfos.defext = defext;
+
+  if(ofn->lpstrTitle)
+  {
+    DWORD len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrTitle, -1, NULL, 0 );
+    title = MemAlloc((len+1)*sizeof(WCHAR));
+    MultiByteToWideChar( CP_ACP, 0, ofn->lpstrTitle, -1, title, len);
+  }
+  fodInfos.title = title;
+
+  if (ofn->lpstrFilter)
+  {
+    LPCSTR s;
+    int n, len;
+
+    /* filter is a list...  title\0ext\0......\0\0 */
+    s = ofn->lpstrFilter;
+    while (*s) s = s+strlen(s)+1;
+    s++;
+    n = s - ofn->lpstrFilter;
+    len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrFilter, n, NULL, 0 );
+    filter = MemAlloc(len*sizeof(WCHAR));
+    MultiByteToWideChar( CP_ACP, 0, ofn->lpstrFilter, n, filter, len );
+  }
+  fodInfos.filter = filter;
+
+  /* convert lpstrCustomFilter */
+  if (ofn->lpstrCustomFilter)
+  {
+    LPCSTR s;
+    int n, len;
+
+    /* filter is a list...  title\0ext\0......\0\0 */
+    s = ofn->lpstrCustomFilter;
+    while (*s) s = s+strlen(s)+1;
+    s++;
+    n = s - ofn->lpstrCustomFilter;
+    len = MultiByteToWideChar( CP_ACP, 0, ofn->lpstrCustomFilter, n, NULL, 0 );
+    customfilter = MemAlloc(len*sizeof(WCHAR));
+    MultiByteToWideChar( CP_ACP, 0, ofn->lpstrCustomFilter, n, customfilter, len );
+  }
+  fodInfos.customfilter = customfilter;
+
+  /* Initialize the dialog property */
+  fodInfos.DlgInfos.dwDlgProp = 0;
+  fodInfos.DlgInfos.hwndCustomDlg = NULL;
+
+  switch(iDlgType)
+  {
+    case OPEN_DIALOG :
+      ret = GetFileName95(&fodInfos);
+      break;
+    case SAVE_DIALOG :
+      fodInfos.DlgInfos.dwDlgProp |= FODPROP_SAVEDLG;
+      ret = GetFileName95(&fodInfos);
+      break;
+    default :
+      ret = 0;
+  }
+
+  if (lpstrSavDir)
+  {
+      SetCurrentDirectoryA(lpstrSavDir);
+      MemFree(lpstrSavDir);
+  }
+
+  if(title)
+    MemFree(title);
+  if(defext)
+    MemFree(defext);
+  if(filter)
+    MemFree(filter);
+  if(customfilter)
+    MemFree(customfilter);
+  if(fodInfos.initdir)
+    MemFree(fodInfos.initdir);
+
+  if(fodInfos.filename)
+    MemFree(fodInfos.filename);
+
+  TRACE("selected file: %s\n",ofn->lpstrFile);
+
+  return ret;
+}
+
+/***********************************************************************
+ *      GetFileDialog95W
+ *
+ * Copy the OPENFILENAMEW structure in a FileOpenDlgInfos structure.
+ * Call GetFileName95 with this structure and clean the memory.
+ *
+ * FIXME: lpstrCustomFilter has to be converted back
+ *
+ */
+BOOL  WINAPI GetFileDialog95W(LPOPENFILENAMEW ofn,UINT iDlgType)
+{
+  BOOL ret;
+  FileOpenDlgInfos fodInfos;
+  LPSTR lpstrSavDir = NULL;
+
+  /* Initialize FileOpenDlgInfos structure */
+  ZeroMemory(&fodInfos, sizeof(FileOpenDlgInfos));
+
+  /*  Pass in the original ofn */
+  fodInfos.ofnInfos = (LPOPENFILENAMEA) ofn;
+
+  fodInfos.title = ofn->lpstrTitle;
+  fodInfos.defext = ofn->lpstrDefExt;
+  fodInfos.filter = ofn->lpstrFilter;
+  fodInfos.customfilter = ofn->lpstrCustomFilter;
+
+  /* convert string arguments, save others */
+  if(ofn->lpstrFile)
+  {
+    fodInfos.filename = MemAlloc(ofn->nMaxFile*sizeof(WCHAR));
+    strncpyW(fodInfos.filename,ofn->lpstrFile,ofn->nMaxFile);
+  }
+  else
+    fodInfos.filename = NULL;
+
+  if(ofn->lpstrInitialDir)
+  {
+    DWORD len = strlenW(ofn->lpstrInitialDir);
+    fodInfos.initdir = MemAlloc((len+1)*sizeof(WCHAR));
+    strcpyW(fodInfos.initdir,ofn->lpstrInitialDir);
+  }
+  else
+    fodInfos.initdir = NULL;
+
+  /* save current directory */
+  if (ofn->Flags & OFN_NOCHANGEDIR)
+  {
+     lpstrSavDir = MemAlloc(MAX_PATH);
+     GetCurrentDirectoryA(MAX_PATH, lpstrSavDir);
+  }
+
+  fodInfos.unicode = TRUE;
+
+  switch(iDlgType)
+  {
+  case OPEN_DIALOG :
+      ret = GetFileName95(&fodInfos);
+      break;
+  case SAVE_DIALOG :
+      fodInfos.DlgInfos.dwDlgProp |= FODPROP_SAVEDLG;
+      ret = GetFileName95(&fodInfos);
+      break;
+  default :
+      ret = 0;
+  }
+
+  if (lpstrSavDir)
+  {
+      SetCurrentDirectoryA(lpstrSavDir);
+      MemFree(lpstrSavDir);
+  }
+
+  /* restore saved IN arguments and convert OUT arguments back */
+  MemFree(fodInfos.filename);
+  MemFree(fodInfos.initdir);
+  return ret;
+}
+
+/***********************************************************************
+ *      ArrangeCtrlPositions [internal]
+ *
+ * NOTE: Do not change anything here without a lot of testing.
+ */
+static void ArrangeCtrlPositions(HWND hwndChildDlg, HWND hwndParentDlg, BOOL hide_help)
+{
+    HWND hwndChild, hwndStc32;
+    RECT rectParent, rectChild, rectStc32;
+    INT help_fixup = 0;
+
+    /* Take into account if open as read only checkbox and help button
+     * are hidden
+     */
+     if (hide_help)
+     {
+         RECT rectHelp, rectCancel;
+         GetWindowRect(GetDlgItem(hwndParentDlg, pshHelp), &rectHelp);
+         GetWindowRect(GetDlgItem(hwndParentDlg, IDCANCEL), &rectCancel);
+         /* subtract the height of the help button plus the space between
+          * the help button and the cancel button to the height of the dialog
+          */
+          help_fixup = rectHelp.bottom - rectCancel.bottom;
+    }
+
+    /*
+      There are two possibilities to add components to the default file dialog box.
+
+      By default, all the new components are added below the standard dialog box (the else case).
+
+      However, if there is a static text component with the stc32 id, a special case happens.
+      The x and y coordinates of stc32 indicate the top left corner where to place the standard file dialog box
+      in the window and the cx and cy indicate how to size the window.
+      Moreover, if the new component's coordinates are on the left of the stc32 , it is placed on the left 
+      of the standard file dialog box. If they are above the stc32 component, it is placed above and so on....
+      
+     */
+
+    GetClientRect(hwndParentDlg, &rectParent);
+
+    /* when arranging controls we have to use fixed parent size */
+    rectParent.bottom -= help_fixup;
+
+    hwndStc32 = GetDlgItem(hwndChildDlg, stc32);
+    if (hwndStc32)
+    {
+        GetWindowRect(hwndStc32, &rectStc32);
+        MapWindowPoints(0, hwndChildDlg, (LPPOINT)&rectStc32, 2);
+
+        /* set the size of the stc32 control according to the size of
+         * client area of the parent dialog
+         */
+        SetWindowPos(hwndStc32, 0,
+                     0, 0,
+                     rectParent.right, rectParent.bottom,
+                     SWP_NOMOVE | SWP_NOZORDER);
+    }
+    else
+        SetRectEmpty(&rectStc32);
+
+    /* this part moves controls of the child dialog */
+    hwndChild = GetWindow(hwndChildDlg, GW_CHILD);
+    while (hwndChild)
+    {
+        if (hwndChild != hwndStc32)
+        {
+            GetWindowRect(hwndChild, &rectChild);
+            MapWindowPoints(0, hwndChildDlg, (LPPOINT)&rectChild, 2);
+
+            /* move only if stc32 exist */
+            if (hwndStc32 && rectChild.left > rectStc32.right)
+            {
+                /* move to the right of visible controls of the parent dialog */
+                rectChild.left += rectParent.right;
+                rectChild.left -= rectStc32.right;
+            }
+            /* move even if stc32 doesn't exist */
+            if (rectChild.top > rectStc32.bottom)
+            {
+                /* move below visible controls of the parent dialog */
+                rectChild.top += rectParent.bottom;
+                rectChild.top -= rectStc32.bottom - rectStc32.top;
+            }
+
+            SetWindowPos(hwndChild, 0, rectChild.left, rectChild.top,
+                         0, 0, SWP_NOSIZE | SWP_NOZORDER);
+        }
+        hwndChild = GetWindow(hwndChild, GW_HWNDNEXT);
+    }
+
+    /* this part moves controls of the parent dialog */
+    hwndChild = GetWindow(hwndParentDlg, GW_CHILD);
+    while (hwndChild)
+    {
+        if (hwndChild != hwndChildDlg)
+        {
+            GetWindowRect(hwndChild, &rectChild);
+            MapWindowPoints(0, hwndParentDlg, (LPPOINT)&rectChild, 2);
+
+            /* left,top of stc32 marks the position of controls
+             * from the parent dialog
+             */
+            rectChild.left += rectStc32.left;
+            rectChild.top += rectStc32.top;
+
+            SetWindowPos(hwndChild, 0, rectChild.left, rectChild.top,
+                         0, 0, SWP_NOSIZE | SWP_NOZORDER);
+        }
+        hwndChild = GetWindow(hwndChild, GW_HWNDNEXT);
+    }
+
+    /* calculate the size of the resulting dialog */
+
+    /* here we have to use original parent size */
+    GetClientRect(hwndParentDlg, &rectParent);
+    GetClientRect(hwndChildDlg, &rectChild);
+
+    if (hwndStc32)
+    {
+        if (rectParent.right > rectChild.right)
+        {
+            rectParent.right += rectChild.right;
+            rectParent.right -= rectStc32.right - rectStc32.left;
+        }
+        else
+        {
+            rectParent.right = rectChild.right;
+        }
+
+        if (rectParent.bottom > rectChild.bottom)
+        {
+            rectParent.bottom += rectChild.bottom;
+            rectParent.bottom -= rectStc32.bottom - rectStc32.top;
+        }
+        else
+        {
+            rectParent.bottom = rectChild.bottom;
+        }
+    }
+    else
+    {
+        rectParent.bottom += rectChild.bottom;
+    }
+
+    /* finally use fixed parent size */
+    rectParent.bottom -= help_fixup;
+
+    /* save the size of the parent's client area */
+    rectChild.right = rectParent.right;
+    rectChild.bottom = rectParent.bottom;
+
+    /* set the size of the parent dialog */
+    AdjustWindowRectEx(&rectParent, GetWindowLongW(hwndParentDlg, GWL_STYLE),
+                       FALSE, GetWindowLongW(hwndParentDlg, GWL_EXSTYLE));
+    SetWindowPos(hwndParentDlg, 0,
+                 0, 0,
+                 rectParent.right - rectParent.left,
+                 rectParent.bottom - rectParent.top,
+                 SWP_NOMOVE | SWP_NOZORDER);
+
+    /* set the size of the child dialog */
+    SetWindowPos(hwndChildDlg, HWND_BOTTOM,
+                 0, 0, rectChild.right, rectChild.bottom, SWP_NOACTIVATE);
+}
+
+INT_PTR CALLBACK FileOpenDlgProcUserTemplate(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+    FileOpenDlgInfos *fodInfos;
+
+#if 0
+    TRACE("0x%04x\n", uMsg);
+#endif
+
+    switch(uMsg)
+    {
+      case WM_INITDIALOG:
+      {
+        fodInfos = (FileOpenDlgInfos *)lParam;
+        lParam = (LPARAM) fodInfos->ofnInfos;
+
+        if(fodInfos && IsHooked(fodInfos))
+          return CallWindowProcA((WNDPROC)fodInfos->ofnInfos->lpfnHook,hwnd,uMsg,wParam,lParam);
+        return 0;
+      }
+    }
+
+    fodInfos = (FileOpenDlgInfos *) GetPropA(GetParent(hwnd),FileOpenDlgInfosStr);
+    if(fodInfos && IsHooked(fodInfos))
+      return CallWindowProcA((WNDPROC)fodInfos->ofnInfos->lpfnHook,hwnd,uMsg,wParam,lParam);
+
+    return 0;
+}
+
+HWND CreateTemplateDialog(FileOpenDlgInfos *fodInfos, HWND hwnd)
+{
+    LPCVOID template;
+    HRSRC hRes;
+    HANDLE hDlgTmpl = 0;
+    HWND hChildDlg = 0;
+
+    TRACE("\n");
+
+    /*
+     * If OFN_ENABLETEMPLATEHANDLE is specified, the OPENFILENAME
+     * structure's hInstance parameter is not a HINSTANCE, but
+     * instead a pointer to a template resource to use.
+     */
+    if (fodInfos->ofnInfos->Flags & (OFN_ENABLETEMPLATE | OFN_ENABLETEMPLATEHANDLE))
+    {
+      HINSTANCE hinst;
+      if (fodInfos->ofnInfos->Flags  & OFN_ENABLETEMPLATEHANDLE)
+      {
+        hinst = 0;
+        if( !(template = LockResource( fodInfos->ofnInfos->hInstance)))
+        {
+          COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+          return NULL;
+        }
+      }
+      else
+      {
+        hinst = fodInfos->ofnInfos->hInstance;
+        if(fodInfos->unicode)
+        {
+            LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos;
+            hRes = FindResourceW( hinst, ofn->lpTemplateName, (LPWSTR)RT_DIALOG);
+        }
+        else
+        {
+            LPOPENFILENAMEA ofn = fodInfos->ofnInfos;
+            hRes = FindResourceA( hinst, ofn->lpTemplateName, (LPSTR)RT_DIALOG);
+        }
+        if (!hRes)
+        {
+          COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+          return NULL;
+        }
+        if (!(hDlgTmpl = LoadResource( hinst, hRes )) ||
+            !(template = LockResource( hDlgTmpl )))
+        {
+          COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+          return NULL;
+       }
+      }
+      hChildDlg= CreateDialogIndirectParamA(COMDLG32_hInstance, template,
+           hwnd, FileOpenDlgProcUserTemplate, (LPARAM)fodInfos);
+      if(hChildDlg)
+      {
+        ShowWindow(hChildDlg,SW_SHOW);
+        return hChildDlg;
+      }
+    }
+    else if( IsHooked(fodInfos))
+    {
+      RECT rectHwnd;
+      struct  {
+         DLGTEMPLATE tmplate;
+         WORD menu,class,title;
+         } temp;
+      GetClientRect(hwnd,&rectHwnd);
+      temp.tmplate.style = WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE | DS_CONTROL | DS_3DLOOK;
+      temp.tmplate.dwExtendedStyle = 0;
+      temp.tmplate.cdit = 0;
+      temp.tmplate.x = 0;
+      temp.tmplate.y = 0;
+      temp.tmplate.cx = 0;
+      temp.tmplate.cy = 0;
+      temp.menu = temp.class = temp.title = 0;
+
+      hChildDlg = CreateDialogIndirectParamA(COMDLG32_hInstance, &temp.tmplate,
+                  hwnd, FileOpenDlgProcUserTemplate, (LPARAM)fodInfos);
+
+      return hChildDlg;
+    }
+    return NULL;
+}
+
+/***********************************************************************
+*          SendCustomDlgNotificationMessage
+*
+* Send CustomDialogNotification (CDN_FIRST -- CDN_LAST) message to the custom template dialog
+*/
+
+HRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode)
+{
+    FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwndParentDlg,FileOpenDlgInfosStr);
+
+    TRACE("%p 0x%04x\n",hwndParentDlg, uCode);
+
+    if(!fodInfos) return 0;
+
+    if(fodInfos->unicode)
+      FIXME("sending OPENFILENAMEA structure. Hook is expecting OPENFILENAMEW!\n");
+
+    if(fodInfos->DlgInfos.hwndCustomDlg)
+    {
+        OFNOTIFYA ofnNotify;
+       HRESULT ret;
+        ofnNotify.hdr.hwndFrom=hwndParentDlg;
+        ofnNotify.hdr.idFrom=0;
+        ofnNotify.hdr.code = uCode;
+        ofnNotify.lpOFN = fodInfos->ofnInfos;
+        ofnNotify.pszFile = NULL;
+       TRACE("CALL NOTIFY for %x\n", uCode);
+       ret = SendMessageA(fodInfos->DlgInfos.hwndCustomDlg,WM_NOTIFY,0,(LPARAM)&ofnNotify);
+       TRACE("RET NOTIFY\n");
+       return ret;
+    }
+    return TRUE;
+}
+
+HRESULT FILEDLG95_Handle_GetFilePath(HWND hwnd, DWORD size, LPSTR buffer)
+{
+    UINT sizeUsed = 0, n, total;
+    LPWSTR lpstrFileList = NULL;
+    WCHAR lpstrCurrentDir[MAX_PATH];
+    FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+    TRACE("CDM_GETFILEPATH:\n");
+
+    if ( ! (fodInfos->ofnInfos->Flags & OFN_EXPLORER ) )
+        return -1;
+
+    /* get path and filenames */
+    SHGetPathFromIDListW(fodInfos->ShellInfos.pidlAbsCurrent,lpstrCurrentDir);
+    n = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed);
+
+    TRACE("path >%s< filespec >%s< %d files\n",
+         debugstr_w(lpstrCurrentDir),debugstr_w(lpstrFileList),n);
+
+    total = WideCharToMultiByte(CP_ACP, 0, lpstrCurrentDir, -1, 
+                                NULL, 0, NULL, NULL);
+    total += WideCharToMultiByte(CP_ACP, 0, lpstrFileList, sizeUsed, 
+                                NULL, 0, NULL, NULL);
+
+    /* Prepend the current path */
+    n = WideCharToMultiByte(CP_ACP, 0, lpstrCurrentDir, -1, 
+                            buffer, size, NULL, NULL);
+
+    if(n<size)
+    {
+        /* 'n' includes trailing \0 */
+        buffer[n-1] = '\\';
+        WideCharToMultiByte(CP_ACP, 0, lpstrFileList, sizeUsed, 
+                            &buffer[n], size-n, NULL, NULL);
+    }
+    MemFree(lpstrFileList);
+
+    TRACE("returned -> %s\n",debugstr_a(buffer));
+
+    return total;
+}
+
+HRESULT FILEDLG95_Handle_GetFileSpec(HWND hwnd, DWORD size, LPSTR buffer)
+{
+    UINT sizeUsed = 0;
+    LPWSTR lpstrFileList = NULL;
+
+    TRACE("CDM_GETSPEC:\n");
+
+    FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed);
+    WideCharToMultiByte(CP_ACP, 0, lpstrFileList, sizeUsed, buffer, size, NULL, NULL);
+    MemFree(lpstrFileList);
+
+    return sizeUsed;
+}
+
+/***********************************************************************
+*         FILEDLG95_HandleCustomDialogMessages
+*
+* Handle Custom Dialog Messages (CDM_FIRST -- CDM_LAST) messages
+*/
+HRESULT FILEDLG95_HandleCustomDialogMessages(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+    char lpstrPath[MAX_PATH];
+    FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+    if(!fodInfos) return -1;
+
+    switch(uMsg)
+    {
+        case CDM_GETFILEPATH:
+            return FILEDLG95_Handle_GetFilePath(hwnd, (UINT)wParam, (LPSTR)lParam);
+
+        case CDM_GETFOLDERPATH:
+            TRACE("CDM_GETFOLDERPATH:\n");
+           SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrPath);
+            if ((LPSTR)lParam!=NULL)
+                lstrcpynA((LPSTR)lParam,lpstrPath,(int)wParam);
+            return strlen(lpstrPath);
+
+        case CDM_GETSPEC:
+            return FILEDLG95_Handle_GetFileSpec(hwnd, (UINT)wParam, (LPSTR)lParam);
+
+        case CDM_SETCONTROLTEXT:
+            TRACE("CDM_SETCONTROLTEXT:\n");
+           if ( 0 != lParam )
+               SetDlgItemTextA( hwnd, (UINT) wParam, (LPSTR) lParam );
+           return TRUE;
+
+        case CDM_HIDECONTROL:
+        case CDM_SETDEFEXT:
+            FIXME("CDM_HIDECONTROL,CDM_SETCONTROLTEXT,CDM_SETDEFEXT not implemented\n");
+            return -1;
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *          FileOpenDlgProc95
+ *
+ * File open dialog procedure
+ */
+INT_PTR CALLBACK FileOpenDlgProc95(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+#if 0
+  TRACE("0x%04x 0x%04x\n", hwnd, uMsg);
+#endif
+
+  switch(uMsg)
+  {
+    case WM_INITDIALOG:
+      {
+         FileOpenDlgInfos * fodInfos = (FileOpenDlgInfos *)lParam;
+
+        /* Adds the FileOpenDlgInfos in the property list of the dialog
+            so it will be easily accessible through a GetPropA(...) */
+        SetPropA(hwnd, FileOpenDlgInfosStr, (HANDLE) fodInfos);
+
+        fodInfos->DlgInfos.hwndCustomDlg =
+          CreateTemplateDialog((FileOpenDlgInfos *)lParam, hwnd);
+
+         FILEDLG95_InitControls(hwnd);
+
+         if (fodInfos->DlgInfos.hwndCustomDlg)
+             ArrangeCtrlPositions(fodInfos->DlgInfos.hwndCustomDlg, hwnd,
+                 (fodInfos->ofnInfos->Flags & (OFN_HIDEREADONLY | OFN_SHOWHELP)) == OFN_HIDEREADONLY);
+
+        FILEDLG95_FillControls(hwnd, wParam, lParam);
+
+         SendCustomDlgNotificationMessage(hwnd,CDN_INITDONE);
+         SendCustomDlgNotificationMessage(hwnd,CDN_FOLDERCHANGE);
+         SendCustomDlgNotificationMessage(hwnd,CDN_SELCHANGE);
+         return 0;
+       }
+    case WM_COMMAND:
+      return FILEDLG95_OnWMCommand(hwnd, wParam, lParam);
+    case WM_DRAWITEM:
+      {
+        switch(((LPDRAWITEMSTRUCT)lParam)->CtlID)
+        {
+        case IDC_LOOKIN:
+          FILEDLG95_LOOKIN_DrawItem((LPDRAWITEMSTRUCT) lParam);
+          return TRUE;
+        }
+      }
+      return FALSE;
+
+    case WM_GETISHELLBROWSER:
+      return FILEDLG95_OnWMGetIShellBrowser(hwnd);
+
+    case WM_DESTROY:
+      RemovePropA(hwnd, FileOpenDlgInfosStr);
+      return FALSE;
+
+    case WM_NOTIFY:
+    {
+       LPNMHDR lpnmh = (LPNMHDR)lParam;
+       UINT stringId = -1;
+
+       /* set up the button tooltips strings */
+       if(TTN_GETDISPINFOA == lpnmh->code )
+       {
+           LPNMTTDISPINFOA lpdi = (LPNMTTDISPINFOA)lParam;
+           switch(lpnmh->idFrom )
+           {
+               /* Up folder button */
+               case FCIDM_TB_UPFOLDER:
+                   stringId = IDS_UPFOLDER;
+                   break;
+               /* New folder button */
+               case FCIDM_TB_NEWFOLDER:
+                   stringId = IDS_NEWFOLDER;
+                   break;
+               /* List option button */
+               case FCIDM_TB_SMALLICON:
+                   stringId = IDS_LISTVIEW;
+                   break;
+               /* Details option button */
+               case FCIDM_TB_REPORTVIEW:
+                   stringId = IDS_REPORTVIEW;
+                   break;
+               /* Desktop button */
+               case FCIDM_TB_DESKTOP:
+                   stringId = IDS_TODESKTOP;
+                   break;
+               default:
+                   stringId = 0;
+           }
+           lpdi->hinst = COMDLG32_hInstance;
+           lpdi->lpszText =  (LPSTR) stringId;
+       }
+        return FALSE;
+    }
+    default :
+      if(uMsg >= CDM_FIRST && uMsg <= CDM_LAST)
+        return FILEDLG95_HandleCustomDialogMessages(hwnd, uMsg, wParam, lParam);
+      return FALSE;
+  }
+}
+
+/***********************************************************************
+ *      FILEDLG95_InitControls
+ *
+ * WM_INITDIALOG message handler (before hook notification)
+ */
+static LRESULT FILEDLG95_InitControls(HWND hwnd)
+{
+  int win2000plus = 0;
+  int win98plus   = 0;
+  int handledPath = FALSE;
+  OSVERSIONINFOA osVi;
+  const WCHAR szwSlash[] = { '\\', 0 };
+  const WCHAR szwStar[] = { '*',0 };
+
+  TBBUTTON tbb[] =
+  {
+   {0,                 0,                   TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0 },
+   {VIEW_PARENTFOLDER, FCIDM_TB_UPFOLDER,   TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 },
+   {0,                 0,                   TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0 },
+   {VIEW_NEWFOLDER+1,  FCIDM_TB_DESKTOP,    TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 },
+   {0,                 0,                   TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0 },
+   {VIEW_NEWFOLDER,    FCIDM_TB_NEWFOLDER,  TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 },
+   {0,                 0,                   TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0 },
+   {VIEW_LIST,         FCIDM_TB_SMALLICON,  TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 },
+   {VIEW_DETAILS,      FCIDM_TB_REPORTVIEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 0 },
+  };
+  TBADDBITMAP tba[2];
+  RECT rectTB;
+  RECT rectlook;
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  tba[0].hInst = HINST_COMMCTRL;
+  tba[0].nID   = IDB_VIEW_SMALL_COLOR;
+  tba[1].hInst = COMDLG32_hInstance;
+  tba[1].nID   = 800;
+
+  TRACE("%p\n", fodInfos);
+
+  /* Get windows version emulating */
+  osVi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
+  GetVersionExA(&osVi);
+  if (osVi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
+    win98plus   = ((osVi.dwMajorVersion > 4) || ((osVi.dwMajorVersion == 4) && (osVi.dwMinorVersion > 0)));
+  } else if (osVi.dwPlatformId == VER_PLATFORM_WIN32_NT) {
+    win2000plus = (osVi.dwMajorVersion > 4);
+    if (win2000plus) win98plus = TRUE;
+  }
+  TRACE("Running on 2000+ %d, 98+ %d\n", win2000plus, win98plus);
+
+  /* Get the hwnd of the controls */
+  fodInfos->DlgInfos.hwndFileName = GetDlgItem(hwnd,IDC_FILENAME);
+  fodInfos->DlgInfos.hwndFileTypeCB = GetDlgItem(hwnd,IDC_FILETYPE);
+  fodInfos->DlgInfos.hwndLookInCB = GetDlgItem(hwnd,IDC_LOOKIN);
+
+  GetWindowRect( fodInfos->DlgInfos.hwndLookInCB,&rectlook);
+  MapWindowPoints( 0, hwnd,(LPPOINT)&rectlook,2);
+
+  /* construct the toolbar */
+  GetWindowRect(GetDlgItem(hwnd,IDC_TOOLBARSTATIC),&rectTB);
+  MapWindowPoints( 0, hwnd,(LPPOINT)&rectTB,2);
+
+  rectTB.right = rectlook.right + rectTB.right - rectTB.left;
+  rectTB.bottom = rectlook.top - 1 + rectTB.bottom - rectTB.top;
+  rectTB.left = rectlook.right;
+  rectTB.top = rectlook.top-1;
+
+  fodInfos->DlgInfos.hwndTB = CreateWindowExA(0, TOOLBARCLASSNAMEA, NULL,
+        WS_CHILD | WS_GROUP | WS_VISIBLE | WS_CLIPSIBLINGS | TBSTYLE_TOOLTIPS | CCS_NODIVIDER | CCS_NORESIZE,
+        rectTB.left, rectTB.top,
+        rectTB.right - rectTB.left, rectTB.bottom - rectTB.top,
+        hwnd, (HMENU)IDC_TOOLBAR, COMDLG32_hInstance, NULL);
+
+  SendMessageA(fodInfos->DlgInfos.hwndTB, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0);
+
+/* FIXME: use TB_LOADIMAGES when implemented */
+/*  SendMessageA(fodInfos->DlgInfos.hwndTB, TB_LOADIMAGES, (WPARAM) IDB_VIEW_SMALL_COLOR, HINST_COMMCTRL);*/
+  SendMessageA(fodInfos->DlgInfos.hwndTB, TB_ADDBITMAP, (WPARAM) 12, (LPARAM) &tba[0]);
+  SendMessageA(fodInfos->DlgInfos.hwndTB, TB_ADDBITMAP, (WPARAM) 1, (LPARAM) &tba[1]);
+
+  SendMessageA(fodInfos->DlgInfos.hwndTB, TB_ADDBUTTONSA, (WPARAM) 9,(LPARAM) &tbb);
+  SendMessageA(fodInfos->DlgInfos.hwndTB, TB_AUTOSIZE, 0, 0);
+
+  /* Set the window text with the text specified in the OPENFILENAME structure */
+  if(fodInfos->title)
+  {
+      SetWindowTextW(hwnd,fodInfos->title);
+  }
+  else if (fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG)
+  {
+      SetWindowTextA(hwnd,"Save");
+  }
+
+  /* Initialise the file name edit control */
+  handledPath = FALSE;
+  TRACE("Before manipilation, file = %s, dir = %s\n", debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir));
+
+  if(fodInfos->filename)
+  {
+      /* 1. If win2000 or higher and filename contains a path, use it
+         in preference over the lpstrInitialDir                       */
+      if (win2000plus && *fodInfos->filename && strpbrkW(fodInfos->filename, szwSlash)) {
+         WCHAR tmpBuf[MAX_PATH];
+         WCHAR *nameBit;
+         DWORD result;
+
+         result = GetFullPathNameW(fodInfos->filename, MAX_PATH, tmpBuf, &nameBit);
+         if (result) {
+
+            /* nameBit is always shorter than the original filename */
+            strcpyW(fodInfos->filename,nameBit);
+
+            *nameBit = 0x00;
+            if (fodInfos->initdir == NULL)
+                MemFree(fodInfos->initdir);
+            fodInfos->initdir = MemAlloc((strlenW(tmpBuf) + 1)*sizeof(WCHAR));
+            strcpyW(fodInfos->initdir, tmpBuf);
+            handledPath = TRUE;
+            TRACE("Value in Filename includes path, overriding InitialDir: %s, %s\n",
+                    debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir));
+         }
+         SetDlgItemTextW(hwnd, IDC_FILENAME, fodInfos->filename);
+
+      } else {
+         SetDlgItemTextW(hwnd, IDC_FILENAME, fodInfos->filename);
+      }
+  }
+
+  /* 2. (All platforms) If initdir is not null, then use it */
+  if ((handledPath == FALSE) && (fodInfos->initdir!=NULL) &&
+                                (*fodInfos->initdir!=0x00))
+  {
+      /* Work out the proper path as supplied one might be relative          */
+      /* (Here because supplying '.' as dir browses to My Computer)          */
+      if (handledPath==FALSE) {
+          WCHAR tmpBuf[MAX_PATH];
+          WCHAR tmpBuf2[MAX_PATH];
+          WCHAR *nameBit;
+          DWORD result;
+
+          strcpyW(tmpBuf, fodInfos->initdir);
+          if (tmpBuf[strlenW(tmpBuf)-1] != '\\') {
+             strcatW(tmpBuf, szwSlash);
+          }
+          strcatW(tmpBuf, szwStar);
+          result = GetFullPathNameW(tmpBuf, MAX_PATH, tmpBuf2, &nameBit);
+          if (result) {
+             *nameBit = 0x00;
+             if (fodInfos->initdir)
+                MemFree(fodInfos->initdir);
+             fodInfos->initdir = MemAlloc((strlenW(tmpBuf2) + 1)*sizeof(WCHAR));
+             strcpyW(fodInfos->initdir, tmpBuf2);
+             handledPath = TRUE;
+             TRACE("Value in InitDir changed to %s\n", debugstr_w(fodInfos->initdir));
+          }
+      }
+  }
+
+  if ((handledPath == FALSE) && ((fodInfos->initdir==NULL) ||
+                                 (*fodInfos->initdir==0x00)))
+  {
+      /* 3. All except w2k+: if filename contains a path use it */
+      if (!win2000plus && fodInfos->filename &&
+          *fodInfos->filename &&
+          strpbrkW(fodInfos->filename, szwSlash)) {
+         WCHAR tmpBuf[MAX_PATH];
+         WCHAR *nameBit;
+         DWORD result;
+
+         result = GetFullPathNameW(fodInfos->filename, MAX_PATH,
+                                  tmpBuf, &nameBit);
+         if (result) {
+            int len;
+
+            /* nameBit is always shorter than the original filename */
+            strcpyW(fodInfos->filename, nameBit);
+            *nameBit = 0x00;
+
+            len = strlenW(tmpBuf);
+            if(fodInfos->initdir)
+               MemFree(fodInfos->initdir);
+            fodInfos->initdir = MemAlloc((len+1)*sizeof(WCHAR));
+            strcpyW(fodInfos->initdir, tmpBuf);
+
+            handledPath = TRUE;
+            TRACE("Value in Filename includes path, overriding initdir: %s, %s\n",
+                 debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir));
+         }
+         SetDlgItemTextW(hwnd, IDC_FILENAME, fodInfos->filename);
+      }
+
+      /* 4. win98+ and win2000+ if any files of specified filter types in
+            current directory, use it                                      */
+      if ( win98plus && handledPath == FALSE &&
+           fodInfos->filter && *fodInfos->filter) {
+
+         BOOL   searchMore = TRUE;
+         LPCWSTR lpstrPos = fodInfos->filter;
+         WIN32_FIND_DATAW FindFileData;
+         HANDLE hFind;
+
+         while (searchMore)
+         {
+           /* filter is a list...  title\0ext\0......\0\0 */
+
+           /* Skip the title */
+           if(! *lpstrPos) break;      /* end */
+           lpstrPos += strlenW(lpstrPos) + 1;
+
+           /* See if any files exist in the current dir with this extension */
+           if(! *lpstrPos) break;      /* end */
+
+           hFind = FindFirstFileW(lpstrPos, &FindFileData);
+
+           if (hFind == INVALID_HANDLE_VALUE) {
+               /* None found - continue search */
+               lpstrPos += strlenW(lpstrPos) + 1;
+
+           } else {
+               searchMore = FALSE;
+
+               if(fodInfos->initdir)
+                  MemFree(fodInfos->initdir);
+               fodInfos->initdir = MemAlloc(MAX_PATH*sizeof(WCHAR));
+               GetCurrentDirectoryW(MAX_PATH, fodInfos->initdir);
+
+               handledPath = TRUE;
+               TRACE("No initial dir specified, but files of type %s found in current, so using it\n",
+                 debugstr_w(lpstrPos));
+               break;
+           }
+         }
+      }
+
+      /* 5. Win2000+: FIXME: Next, Recently used? Not sure how windows does this */
+
+      /* 6. Win98+ and 2000+: Use personal files dir, others use current dir */
+      if (handledPath == FALSE && (win2000plus || win98plus)) {
+          fodInfos->initdir = MemAlloc(MAX_PATH*sizeof(WCHAR));
+
+          if(FAILED(COMDLG32_SHGetFolderPathW(hwnd, CSIDL_PERSONAL, 0, 0, fodInfos->initdir)))
+          {
+            if(FAILED(COMDLG32_SHGetFolderPathW(hwnd, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, 0, 0, fodInfos->initdir)))
+            {
+                /* last fallback */
+                GetCurrentDirectoryW(MAX_PATH, fodInfos->initdir);
+                TRACE("No personal or desktop dir, using cwd as failsafe: %s\n", debugstr_w(fodInfos->initdir));
+            } else {
+                TRACE("No personal dir, using desktop instead: %s\n", debugstr_w(fodInfos->initdir));
+            }
+          } else {
+            TRACE("No initial dir specified, using personal files dir of %s\n", debugstr_w(fodInfos->initdir));
+          }
+          handledPath = TRUE;
+      } else if (handledPath==FALSE) {
+          fodInfos->initdir = MemAlloc(MAX_PATH*sizeof(WCHAR));
+          GetCurrentDirectoryW(MAX_PATH, fodInfos->initdir);
+          handledPath = TRUE;
+          TRACE("No initial dir specified, using current dir of %s\n", debugstr_w(fodInfos->initdir));
+      }
+  }
+  SetFocus(GetDlgItem(hwnd, IDC_FILENAME));
+  TRACE("After manipulation, file = %s, dir = %s\n", debugstr_w(fodInfos->filename), debugstr_w(fodInfos->initdir));
+
+  /* Must the open as read only check box be checked ?*/
+  if(fodInfos->ofnInfos->Flags & OFN_READONLY)
+  {
+    SendDlgItemMessageA(hwnd,IDC_OPENREADONLY,BM_SETCHECK,(WPARAM)TRUE,0);
+  }
+
+  /* Must the open as read only check box be hidden? */
+  if(fodInfos->ofnInfos->Flags & OFN_HIDEREADONLY)
+  {
+    ShowWindow(GetDlgItem(hwnd,IDC_OPENREADONLY),SW_HIDE);
+    EnableWindow(GetDlgItem(hwnd, IDC_OPENREADONLY), FALSE);
+  }
+
+  /* Must the help button be hidden? */
+  if (!(fodInfos->ofnInfos->Flags & OFN_SHOWHELP))
+  {
+    ShowWindow(GetDlgItem(hwnd, pshHelp), SW_HIDE);
+    EnableWindow(GetDlgItem(hwnd, pshHelp), FALSE);
+  }
+
+  /* Resize the height, if open as read only checkbox ad help button
+     are hidden and we are not using a custom template nor a customDialog
+     */
+  if ( (fodInfos->ofnInfos->Flags & OFN_HIDEREADONLY) &&
+       (!(fodInfos->ofnInfos->Flags &
+         (OFN_SHOWHELP|OFN_ENABLETEMPLATE|OFN_ENABLETEMPLATEHANDLE))) && 
+       (!fodInfos->DlgInfos.hwndCustomDlg ))
+  {
+    RECT rectDlg, rectHelp, rectCancel;
+    GetWindowRect(hwnd, &rectDlg);
+    GetWindowRect(GetDlgItem(hwnd, pshHelp), &rectHelp);
+    GetWindowRect(GetDlgItem(hwnd, IDCANCEL), &rectCancel);
+    /* subtract the height of the help button plus the space between
+       the help button and the cancel button to the height of the dialog */
+    SetWindowPos(hwnd, 0, 0, 0, rectDlg.right-rectDlg.left,
+                 (rectDlg.bottom-rectDlg.top) - (rectHelp.bottom - rectCancel.bottom),
+                 SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER);
+  }
+  /* change Open to Save FIXME: use resources */
+  if (fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG)
+  {
+      SetDlgItemTextA(hwnd,IDOK,"&Save");
+      SetDlgItemTextA(hwnd,IDC_LOOKINSTATIC,"Save &in");
+  }
+  return 0;
+}
+
+/***********************************************************************
+ *      FILEDLG95_FillControls
+ *
+ * WM_INITDIALOG message handler (after hook notification)
+ */
+static LRESULT FILEDLG95_FillControls(HWND hwnd, WPARAM wParam, LPARAM lParam)
+{
+  LPITEMIDLIST pidlItemId = NULL;
+
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) lParam;
+
+  TRACE("dir=%s file=%s\n",
+  debugstr_w(fodInfos->initdir), debugstr_w(fodInfos->filename));
+
+  /* Get the initial directory pidl */
+
+  if(!(pidlItemId = GetPidlFromName(fodInfos->Shell.FOIShellFolder,fodInfos->initdir)))
+  {
+    WCHAR path[MAX_PATH];
+
+    GetCurrentDirectoryW(MAX_PATH,path);
+    pidlItemId = GetPidlFromName(fodInfos->Shell.FOIShellFolder, path);
+  }
+
+  /* Initialise shell objects */
+  FILEDLG95_SHELL_Init(hwnd);
+
+  /* Initialize the Look In combo box */
+  FILEDLG95_LOOKIN_Init(fodInfos->DlgInfos.hwndLookInCB);
+
+  /* Initialize the filter combo box */
+  FILEDLG95_FILETYPE_Init(hwnd);
+
+  /* Browse to the initial directory */
+  IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser,pidlItemId, SBSP_ABSOLUTE);
+
+  /* Free pidlItem memory */
+  COMDLG32_SHFree(pidlItemId);
+
+  return TRUE;
+}
+/***********************************************************************
+ *      FILEDLG95_Clean
+ *
+ * Regroups all the cleaning functions of the filedlg
+ */
+void FILEDLG95_Clean(HWND hwnd)
+{
+      FILEDLG95_FILETYPE_Clean(hwnd);
+      FILEDLG95_LOOKIN_Clean(hwnd);
+      FILEDLG95_SHELL_Clean(hwnd);
+}
+/***********************************************************************
+ *      FILEDLG95_OnWMCommand
+ *
+ * WM_COMMAND message handler
+ */
+static LRESULT FILEDLG95_OnWMCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
+{
+  WORD wNotifyCode = HIWORD(wParam); /* notification code */
+  WORD wID = LOWORD(wParam);         /* item, control, or accelerator identifier */
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  switch(wID)
+  {
+    /* OK button */
+  case IDOK:
+    FILEDLG95_OnOpen(hwnd);
+    break;
+    /* Cancel button */
+  case IDCANCEL:
+    FILEDLG95_Clean(hwnd);
+    EndDialog(hwnd, FALSE);
+    break;
+    /* Filetype combo box */
+  case IDC_FILETYPE:
+    FILEDLG95_FILETYPE_OnCommand(hwnd,wNotifyCode);
+    break;
+    /* LookIn combo box */
+  case IDC_LOOKIN:
+    FILEDLG95_LOOKIN_OnCommand(hwnd,wNotifyCode);
+    break;
+
+  /* --- toolbar --- */
+    /* Up folder button */
+  case FCIDM_TB_UPFOLDER:
+    FILEDLG95_SHELL_UpFolder(hwnd);
+    break;
+    /* New folder button */
+  case FCIDM_TB_NEWFOLDER:
+    FILEDLG95_SHELL_ExecuteCommand(hwnd,CMDSTR_NEWFOLDERA);
+    break;
+    /* List option button */
+  case FCIDM_TB_SMALLICON:
+    FILEDLG95_SHELL_ExecuteCommand(hwnd,CMDSTR_VIEWLISTA);
+    break;
+    /* Details option button */
+  case FCIDM_TB_REPORTVIEW:
+    FILEDLG95_SHELL_ExecuteCommand(hwnd,CMDSTR_VIEWDETAILSA);
+    break;
+    /* Details option button */
+  case FCIDM_TB_DESKTOP:
+    FILEDLG95_SHELL_BrowseToDesktop(hwnd);
+    break;
+
+  case IDC_FILENAME:
+    break;
+
+  }
+  /* Do not use the listview selection anymore */
+  fodInfos->DlgInfos.dwDlgProp &= ~FODPROP_USEVIEW;
+  return 0;
+}
+
+/***********************************************************************
+ *      FILEDLG95_OnWMGetIShellBrowser
+ *
+ * WM_GETISHELLBROWSER message handler
+ */
+static LRESULT FILEDLG95_OnWMGetIShellBrowser(HWND hwnd)
+{
+
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  TRACE("\n");
+
+  SetWindowLongA(hwnd,DWL_MSGRESULT,(LONG)fodInfos->Shell.FOIShellBrowser);
+
+  return TRUE;
+}
+
+
+/***********************************************************************
+ *      FILEDLG95_SendFileOK
+ *
+ * Sends the CDN_FILEOK notification if required
+ *
+ * RETURNS
+ *  TRUE if the dialog should close
+ *  FALSE if the dialog should not be closed
+ */
+static BOOL FILEDLG95_SendFileOK( HWND hwnd, FileOpenDlgInfos *fodInfos )
+{
+    /* ask the hook if we can close */
+    if(IsHooked(fodInfos))
+    {
+        TRACE("---\n");
+        /* First send CDN_FILEOK as MSDN doc says */
+        SendCustomDlgNotificationMessage(hwnd,CDN_FILEOK);
+
+        /* fodInfos->ofnInfos points to an ASCII or UNICODE structure as appropriate */
+        CallWindowProcA((WNDPROC)fodInfos->ofnInfos->lpfnHook,
+                            fodInfos->DlgInfos.hwndCustomDlg,
+                            fodInfos->HookMsg.fileokstring, 0, (LPARAM)fodInfos->ofnInfos);
+        if (GetWindowLongA(fodInfos->DlgInfos.hwndCustomDlg, DWL_MSGRESULT))
+        {
+            TRACE("canceled\n");
+            return FALSE;
+        }
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *      FILEDLG95_OnOpenMultipleFiles
+ *
+ * Handles the opening of multiple files.
+ *
+ * FIXME
+ *  check destination buffer size
+ */
+BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCount, UINT sizeUsed)
+{
+  WCHAR   lpstrPathSpec[MAX_PATH] = {0};
+  UINT   nCount, nSizePath;
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  TRACE("\n");
+
+  if(fodInfos->unicode)
+  {
+     LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos;
+     ofn->lpstrFile[0] = '\0';
+  }
+  else
+  {
+     LPOPENFILENAMEA ofn = fodInfos->ofnInfos;
+     ofn->lpstrFile[0] = '\0';
+  }
+
+  SHGetPathFromIDListW( fodInfos->ShellInfos.pidlAbsCurrent, lpstrPathSpec );
+
+  if ( !(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE) &&
+      ( fodInfos->ofnInfos->Flags & OFN_FILEMUSTEXIST) &&
+       ! ( fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG ) )
+  {
+    LPWSTR lpstrTemp = lpstrFileList;
+
+    for ( nCount = 0; nCount < nFileCount; nCount++ )
+    {
+      LPITEMIDLIST pidl;
+
+      pidl = GetPidlFromName(fodInfos->Shell.FOIShellFolder, lpstrTemp);
+      if (!pidl)
+      {
+        WCHAR lpstrNotFound[100];
+        WCHAR lpstrMsg[100];
+        WCHAR tmp[400];
+        WCHAR nl[] = {'\n',0};
+
+        LoadStringW(COMDLG32_hInstance, IDS_FILENOTFOUND, lpstrNotFound, 100);
+        LoadStringW(COMDLG32_hInstance, IDS_VERIFYFILE, lpstrMsg, 100);
+
+        strcpyW(tmp, lpstrTemp);
+        strcatW(tmp, nl);
+        strcatW(tmp, lpstrNotFound);
+        strcatW(tmp, nl);
+        strcatW(tmp, lpstrMsg);
+
+        MessageBoxW(hwnd, tmp, fodInfos->title, MB_OK | MB_ICONEXCLAMATION);
+        return FALSE;
+      }
+
+      /* move to the next file in the list of files */
+      lpstrTemp += strlenW(lpstrTemp) + 1;
+      COMDLG32_SHFree(pidl);
+    }
+  }
+
+  nSizePath = strlenW(lpstrPathSpec) + 1;
+  if ( !(fodInfos->ofnInfos->Flags & OFN_EXPLORER) )
+  {
+    /* For "oldstyle" dialog the components have to
+       be spearated by blanks (not '\0'!) and short
+       filenames have to be used! */
+    FIXME("Components have to be separated by blanks");
+  }
+  if(fodInfos->unicode)
+  {
+    LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos;
+    strcpyW( ofn->lpstrFile, lpstrPathSpec);
+    memcpy( ofn->lpstrFile + nSizePath, lpstrFileList, sizeUsed*sizeof(WCHAR) );
+  }
+  else
+  {
+    LPOPENFILENAMEA ofn = fodInfos->ofnInfos;
+
+    if (ofn->lpstrFile != NULL)
+    {
+      WideCharToMultiByte(CP_ACP, 0, lpstrPathSpec, -1,
+                         ofn->lpstrFile, ofn->nMaxFile, NULL, NULL);
+      if (ofn->nMaxFile > nSizePath)
+      {
+       WideCharToMultiByte(CP_ACP, 0, lpstrFileList, sizeUsed,
+                           ofn->lpstrFile + nSizePath,
+                           ofn->nMaxFile - nSizePath, NULL, NULL);
+      }
+    }
+  }
+
+  fodInfos->ofnInfos->nFileOffset = nSizePath + 1;
+  fodInfos->ofnInfos->nFileExtension = 0;
+
+  if ( !FILEDLG95_SendFileOK(hwnd, fodInfos) )
+    return FALSE;
+
+  /* clean and exit */
+  FILEDLG95_Clean(hwnd);
+  return EndDialog(hwnd,TRUE);
+}
+
+/***********************************************************************
+ *      FILEDLG95_OnOpen
+ *
+ * Ok button WM_COMMAND message handler
+ *
+ * If the function succeeds, the return value is nonzero.
+ */
+#define ONOPEN_BROWSE 1
+#define ONOPEN_OPEN   2
+#define ONOPEN_SEARCH 3
+static void FILEDLG95_OnOpenMessage(HWND hwnd, int idCaption, int idText)
+{
+  char strMsgTitle[MAX_PATH];
+  char strMsgText [MAX_PATH];
+  if (idCaption)
+    LoadStringA(COMDLG32_hInstance, idCaption, strMsgTitle, sizeof(strMsgTitle));
+  else
+    strMsgTitle[0] = '\0';
+  LoadStringA(COMDLG32_hInstance, idText, strMsgText, sizeof(strMsgText));
+  MessageBoxA(hwnd,strMsgText, strMsgTitle, MB_OK | MB_ICONHAND);
+}
+
+BOOL FILEDLG95_OnOpen(HWND hwnd)
+{
+  LPWSTR lpstrFileList;
+  UINT nFileCount = 0;
+  UINT sizeUsed = 0;
+  BOOL ret = TRUE;
+  WCHAR lpstrPathAndFile[MAX_PATH];
+  WCHAR lpstrTemp[MAX_PATH];
+  LPSHELLFOLDER lpsf = NULL;
+  int nOpenAction;
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  TRACE("hwnd=%p\n", hwnd);
+
+  /* get the files from the edit control */
+  nFileCount = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed);
+
+  /* try if the user selected a folder in the shellview */
+  if(nFileCount == 0)
+  {
+      BrowseSelectedFolder(hwnd);
+      return FALSE;
+  }
+
+  if(nFileCount > 1)
+  {
+      ret = FILEDLG95_OnOpenMultipleFiles(hwnd, lpstrFileList, nFileCount, sizeUsed);
+      goto ret;
+  }
+
+  TRACE("count=%u len=%u file=%s\n", nFileCount, sizeUsed, debugstr_w(lpstrFileList));
+
+/*
+  Step 1:  Build a complete path name from the current folder and
+  the filename or path in the edit box.
+  Special cases:
+  - the path in the edit box is a root path
+    (with or without drive letter)
+  - the edit box contains ".." (or a path with ".." in it)
+*/
+
+  /* Get the current directory name */
+  if (!SHGetPathFromIDListW(fodInfos->ShellInfos.pidlAbsCurrent, lpstrPathAndFile))
+  {
+    /* we are in a special folder, default to desktop */
+    if(FAILED(COMDLG32_SHGetFolderPathW(hwnd, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, 0, 0, lpstrPathAndFile)))
+    {
+      /* last fallback */
+      GetCurrentDirectoryW(MAX_PATH, lpstrPathAndFile);
+    }
+  }
+  PathAddBackslashW(lpstrPathAndFile);
+
+  TRACE("current directory=%s\n", debugstr_w(lpstrPathAndFile));
+
+  /* if the user specifyed a fully qualified path use it */
+  if(PathIsRelativeW(lpstrFileList))
+  {
+    strcatW(lpstrPathAndFile, lpstrFileList);
+  }
+  else
+  {
+    /* does the path have a drive letter? */
+    if (PathGetDriveNumberW(lpstrFileList) == -1)
+      strcpyW(lpstrPathAndFile+2, lpstrFileList);
+    else
+      strcpyW(lpstrPathAndFile, lpstrFileList);
+  }
+
+  /* resolve "." and ".." */
+  PathCanonicalizeW(lpstrTemp, lpstrPathAndFile );
+  strcpyW(lpstrPathAndFile, lpstrTemp);
+  TRACE("canon=%s\n", debugstr_w(lpstrPathAndFile));
+
+  MemFree(lpstrFileList);
+
+/*
+  Step 2: here we have a cleaned up path
+
+  We have to parse the path step by step to see if we have to browse
+  to a folder if the path points to a directory or the last
+  valid element is a directory.
+
+  valid variables:
+    lpstrPathAndFile: cleaned up path
+ */
+
+  nOpenAction = ONOPEN_BROWSE;
+
+  /* dont apply any checks with OFN_NOVALIDATE */
+  {
+    LPWSTR lpszTemp, lpszTemp1;
+    LPITEMIDLIST pidl = NULL;
+    WCHAR szwInvalid[] = { '/',':','<','>','|', 0};
+
+    /* check for invalid chars */
+    if((strpbrkW(lpstrPathAndFile+3, szwInvalid) != NULL) && !(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE))
+    {
+      FILEDLG95_OnOpenMessage(hwnd, IDS_INVALID_FILENAME_TITLE, IDS_INVALID_FILENAME);
+      ret = FALSE;
+      goto ret;
+    }
+
+    if (FAILED (SHGetDesktopFolder(&lpsf))) return FALSE;
+
+    lpszTemp1 = lpszTemp = lpstrPathAndFile;
+    while (lpszTemp1)
+    {
+      LPSHELLFOLDER lpsfChild;
+      WCHAR lpwstrTemp[MAX_PATH];
+      DWORD dwEaten, dwAttributes;
+      LPWSTR p;
+
+      strcpyW(lpwstrTemp, lpszTemp);
+      p = PathFindNextComponentW(lpwstrTemp);
+
+      if (!p) break; /* end of path */
+
+      *p = 0;
+      lpszTemp = lpszTemp + strlenW(lpwstrTemp);
+
+      if(*lpszTemp==0)
+      {
+        WCHAR wszWild[] = { '*', '?', 0 };
+       /* if the last element is a wildcard do a search */
+        if(strpbrkW(lpszTemp1, wszWild) != NULL)
+        {
+         nOpenAction = ONOPEN_SEARCH;
+         break;
+       }
+      }
+      lpszTemp1 = lpszTemp;
+
+      TRACE("parse now=%s next=%s sf=%p\n",debugstr_w(lpwstrTemp), debugstr_w(lpszTemp), lpsf);
+
+      if(lstrlenW(lpwstrTemp)==2) PathAddBackslashW(lpwstrTemp);
+
+      dwAttributes = SFGAO_FOLDER;
+      if(SUCCEEDED(IShellFolder_ParseDisplayName(lpsf, hwnd, NULL, lpwstrTemp, &dwEaten, &pidl, &dwAttributes)))
+      {
+        /* the path component is valid, we have a pidl of the next path component */
+        TRACE("parse OK attr=0x%08lx pidl=%p\n", dwAttributes, pidl);
+        if(dwAttributes & SFGAO_FOLDER)
+        {
+          if(FAILED(IShellFolder_BindToObject(lpsf, pidl, 0, &IID_IShellFolder, (LPVOID*)&lpsfChild)))
+          {
+            ERR("bind to failed\n"); /* should not fail */
+            break;
+          }
+          IShellFolder_Release(lpsf);
+          lpsf = lpsfChild;
+          lpsfChild = NULL;
+        }
+        else
+        {
+          TRACE("value\n");
+
+         /* end dialog, return value */
+          nOpenAction = ONOPEN_OPEN;
+         break;
+        }
+       COMDLG32_SHFree(pidl);
+       pidl = NULL;
+      }
+      else if (!(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE))
+      {
+       if(*lpszTemp)   /* points to trailing null for last path element */
+        {
+         if(fodInfos->ofnInfos->Flags & OFN_PATHMUSTEXIST)
+         {
+            FILEDLG95_OnOpenMessage(hwnd, 0, IDS_PATHNOTEXISTING);
+           break;
+         }
+       }
+        else
+       {
+          if( (fodInfos->ofnInfos->Flags & OFN_FILEMUSTEXIST) &&
+             !( fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG ) )
+         {
+            FILEDLG95_OnOpenMessage(hwnd, 0, IDS_FILENOTEXISTING);
+           break;
+         }
+       }
+       /* change to the current folder */
+        nOpenAction = ONOPEN_OPEN;
+       break;
+      }
+      else
+      {
+       nOpenAction = ONOPEN_OPEN;
+       break;
+      }
+    }
+    if(pidl) COMDLG32_SHFree(pidl);
+  }
+
+/*
+  Step 3: here we have a cleaned up and validated path
+
+  valid variables:
+   lpsf:             ShellFolder bound to the rightmost valid path component
+   lpstrPathAndFile: cleaned up path
+   nOpenAction:      action to do
+*/
+  TRACE("end validate sf=%p\n", lpsf);
+
+  switch(nOpenAction)
+  {
+    case ONOPEN_SEARCH:   /* set the current filter to the file mask and refresh */
+      TRACE("ONOPEN_SEARCH %s\n", debugstr_w(lpstrPathAndFile));
+      {
+        int iPos;
+        LPWSTR lpszTemp = PathFindFileNameW(lpstrPathAndFile);
+        DWORD len;
+
+        /* replace the current filter */
+        if(fodInfos->ShellInfos.lpstrCurrentFilter)
+         MemFree((LPVOID)fodInfos->ShellInfos.lpstrCurrentFilter);
+        len = strlenW(lpszTemp)+1;
+        fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc(len * sizeof(WCHAR));
+        strcpyW( fodInfos->ShellInfos.lpstrCurrentFilter, lpszTemp);
+
+        /* set the filter cb to the extension when possible */
+        if(-1 < (iPos = FILEDLG95_FILETYPE_SearchExt(fodInfos->DlgInfos.hwndFileTypeCB, lpszTemp)))
+        CBSetCurSel(fodInfos->DlgInfos.hwndFileTypeCB, iPos);
+      }
+      /* fall through */
+    case ONOPEN_BROWSE:   /* browse to the highest folder we could bind to */
+      TRACE("ONOPEN_BROWSE\n");
+      {
+       IPersistFolder2 * ppf2;
+        if(SUCCEEDED(IShellFolder_QueryInterface( lpsf, &IID_IPersistFolder2, (LPVOID*)&ppf2)))
+        {
+          LPITEMIDLIST pidlCurrent;
+          IPersistFolder2_GetCurFolder(ppf2, &pidlCurrent);
+          IPersistFolder2_Release(ppf2);
+         if( ! COMDLG32_PIDL_ILIsEqual(pidlCurrent, fodInfos->ShellInfos.pidlAbsCurrent))
+         {
+           IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, pidlCurrent, SBSP_ABSOLUTE);
+         }
+         else if( nOpenAction == ONOPEN_SEARCH )
+         {
+            IShellView_Refresh(fodInfos->Shell.FOIShellView);
+         }
+          COMDLG32_SHFree(pidlCurrent);
+        }
+      }
+      ret = FALSE;
+      break;
+    case ONOPEN_OPEN:   /* fill in the return struct and close the dialog */
+      TRACE("ONOPEN_OPEN %s\n", debugstr_w(lpstrPathAndFile));
+      {
+       /* add default extension */
+       if (fodInfos->defext)
+       {
+         WCHAR *ext = PathFindExtensionW(lpstrPathAndFile);
+         
+         if (! *ext)
+         {
+           /* only add "." in case a default extension does exist */
+           if (*fodInfos->defext != '\0')
+           {
+                const WCHAR szwDot[] = {'.',0};
+               int PathLength = strlenW(lpstrPathAndFile);
+
+               strcatW(lpstrPathAndFile, szwDot);
+               strcatW(lpstrPathAndFile, fodInfos->defext);
+
+               /* In Open dialog: if file does not exist try without extension */
+               if (!(fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG)
+                   && !PathFileExistsW(lpstrPathAndFile))
+                 lpstrPathAndFile[PathLength] = '\0';
+           }
+         }
+
+         /* Set/clear the output OFN_EXTENSIONDIFFERENT flag */
+         if (*ext)
+           ext++;
+         if (!lstrcmpiW(fodInfos->defext, ext))
+           fodInfos->ofnInfos->Flags &= ~OFN_EXTENSIONDIFFERENT;
+         else
+           fodInfos->ofnInfos->Flags |= OFN_EXTENSIONDIFFERENT;
+       }
+
+       /* In Save dialog: check if the file already exists */
+       if (fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG
+           && fodInfos->ofnInfos->Flags & OFN_OVERWRITEPROMPT
+           && PathFileExistsW(lpstrPathAndFile))
+       {
+         WCHAR lpstrOverwrite[100];
+         int answer;
+
+         LoadStringW(COMDLG32_hInstance, IDS_OVERWRITEFILE, lpstrOverwrite, 100);
+         answer = MessageBoxW(hwnd, lpstrOverwrite, fodInfos->title,
+                              MB_YESNO | MB_ICONEXCLAMATION);
+         if (answer == IDNO)
+         {
+           ret = FALSE;
+           goto ret;
+         }
+       }
+
+        /* Check that the size of the file does not exceed buffer size.
+             (Allow for extra \0 if OFN_MULTISELECT is set.) */
+        if(strlenW(lpstrPathAndFile) < fodInfos->ofnInfos->nMaxFile -
+            ((fodInfos->ofnInfos->Flags & OFN_ALLOWMULTISELECT) ? 1 : 0))
+        {
+          LPWSTR lpszTemp;
+
+          /* fill destination buffer */
+          if (fodInfos->ofnInfos->lpstrFile)
+          {
+             if(fodInfos->unicode)
+             {
+               LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos;
+
+               strncpyW(ofn->lpstrFile, lpstrPathAndFile, ofn->nMaxFile);
+               if (ofn->Flags & OFN_ALLOWMULTISELECT)
+                 ofn->lpstrFile[lstrlenW(ofn->lpstrFile) + 1] = '\0';
+             }
+             else
+             {
+               LPOPENFILENAMEA ofn = fodInfos->ofnInfos;
+
+               WideCharToMultiByte(CP_ACP, 0, lpstrPathAndFile, -1,
+                                   ofn->lpstrFile, ofn->nMaxFile, NULL, NULL);
+               if (ofn->Flags & OFN_ALLOWMULTISELECT)
+                 ofn->lpstrFile[lstrlenA(ofn->lpstrFile) + 1] = '\0';
+             }
+          }
+
+          /* set filename offset */
+          lpszTemp = PathFindFileNameW(lpstrPathAndFile);
+          fodInfos->ofnInfos->nFileOffset = (lpszTemp - lpstrPathAndFile);
+
+          /* set extension offset */
+          lpszTemp = PathFindExtensionW(lpstrPathAndFile);
+          fodInfos->ofnInfos->nFileExtension = (*lpszTemp) ? (lpszTemp - lpstrPathAndFile) + 1 : 0;
+
+          /* set the lpstrFileTitle */
+          if(fodInfos->ofnInfos->lpstrFileTitle)
+         {
+            LPWSTR lpstrFileTitle = PathFindFileNameW(lpstrPathAndFile);
+            if(fodInfos->unicode)
+            {
+              LPOPENFILENAMEW ofn = (LPOPENFILENAMEW) fodInfos->ofnInfos;
+             strncpyW(ofn->lpstrFileTitle, lpstrFileTitle, ofn->nMaxFileTitle);
+            }
+            else
+            {
+              LPOPENFILENAMEA ofn = fodInfos->ofnInfos;
+              WideCharToMultiByte(CP_ACP, 0, lpstrFileTitle, -1,
+                    ofn->lpstrFileTitle, ofn->nMaxFileTitle, NULL, NULL);
+            }
+         }
+
+          if ( !FILEDLG95_SendFileOK(hwnd, fodInfos) )
+             goto ret;
+
+          TRACE("close\n");
+         FILEDLG95_Clean(hwnd);
+          ret = EndDialog(hwnd, TRUE);
+       }
+       else
+        {
+          /* FIXME set error FNERR_BUFFERTOSMALL */
+          FILEDLG95_Clean(hwnd);
+          ret = EndDialog(hwnd, FALSE);
+        }
+        goto ret;
+      }
+      break;
+  }
+
+ret:
+  if(lpsf) IShellFolder_Release(lpsf);
+  return ret;
+}
+
+/***********************************************************************
+ *      FILEDLG95_SHELL_Init
+ *
+ * Initialisation of the shell objects
+ */
+static HRESULT FILEDLG95_SHELL_Init(HWND hwnd)
+{
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  TRACE("\n");
+
+  /*
+   * Initialisation of the FileOpenDialogInfos structure
+   */
+
+  /* Shell */
+
+  /*ShellInfos */
+  fodInfos->ShellInfos.hwndOwner = hwnd;
+
+  /* Disable multi-select if flag not set */
+  if (!(fodInfos->ofnInfos->Flags & OFN_ALLOWMULTISELECT))
+  {
+     fodInfos->ShellInfos.folderSettings.fFlags |= FWF_SINGLESEL;
+  }
+  fodInfos->ShellInfos.folderSettings.fFlags |= FWF_AUTOARRANGE | FWF_ALIGNLEFT;
+  fodInfos->ShellInfos.folderSettings.ViewMode = FVM_LIST;
+
+  /* Construct the IShellBrowser interface */
+  fodInfos->Shell.FOIShellBrowser = IShellBrowserImpl_Construct(hwnd);
+
+  return NOERROR;
+}
+
+/***********************************************************************
+ *      FILEDLG95_SHELL_ExecuteCommand
+ *
+ * Change the folder option and refresh the view
+ * If the function succeeds, the return value is nonzero.
+ */
+static BOOL FILEDLG95_SHELL_ExecuteCommand(HWND hwnd, LPCSTR lpVerb)
+{
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  IContextMenu * pcm;
+  TRACE("(%p,%p)\n", hwnd, lpVerb);
+
+  if(SUCCEEDED(IShellView_GetItemObject(fodInfos->Shell.FOIShellView,
+                                       SVGIO_BACKGROUND,
+                                       &IID_IContextMenu,
+                                       (LPVOID*)&pcm)))
+  {
+    CMINVOKECOMMANDINFO ci;
+    ZeroMemory(&ci, sizeof(CMINVOKECOMMANDINFO));
+    ci.cbSize = sizeof(CMINVOKECOMMANDINFO);
+    ci.lpVerb = lpVerb;
+    ci.hwnd = hwnd;
+
+    IContextMenu_InvokeCommand(pcm, &ci);
+    IContextMenu_Release(pcm);
+  }
+
+  return FALSE;
+}
+
+/***********************************************************************
+ *      FILEDLG95_SHELL_UpFolder
+ *
+ * Browse to the specified object
+ * If the function succeeds, the return value is nonzero.
+ */
+static BOOL FILEDLG95_SHELL_UpFolder(HWND hwnd)
+{
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  TRACE("\n");
+
+  if(SUCCEEDED(IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser,
+                                          NULL,
+                                          SBSP_PARENT)))
+  {
+    return TRUE;
+  }
+  return FALSE;
+}
+
+/***********************************************************************
+ *      FILEDLG95_SHELL_BrowseToDesktop
+ *
+ * Browse to the Desktop
+ * If the function succeeds, the return value is nonzero.
+ */
+static BOOL FILEDLG95_SHELL_BrowseToDesktop(HWND hwnd)
+{
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+  LPITEMIDLIST pidl;
+  HRESULT hres;
+
+  TRACE("\n");
+
+  SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,&pidl);
+  hres = IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, pidl, SBSP_ABSOLUTE);
+  COMDLG32_SHFree(pidl);
+  return SUCCEEDED(hres);
+}
+/***********************************************************************
+ *      FILEDLG95_SHELL_Clean
+ *
+ * Cleans the memory used by shell objects
+ */
+static void FILEDLG95_SHELL_Clean(HWND hwnd)
+{
+    FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+    TRACE("\n");
+
+    COMDLG32_SHFree(fodInfos->ShellInfos.pidlAbsCurrent);
+
+    /* clean Shell interfaces */
+    IShellView_DestroyViewWindow(fodInfos->Shell.FOIShellView);
+    IShellView_Release(fodInfos->Shell.FOIShellView);
+    IShellFolder_Release(fodInfos->Shell.FOIShellFolder);
+    IShellBrowser_Release(fodInfos->Shell.FOIShellBrowser);
+    if (fodInfos->Shell.FOIDataObject)
+      IDataObject_Release(fodInfos->Shell.FOIDataObject);
+}
+
+/***********************************************************************
+ *      FILEDLG95_FILETYPE_Init
+ *
+ * Initialisation of the file type combo box
+ */
+static HRESULT FILEDLG95_FILETYPE_Init(HWND hwnd)
+{
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  TRACE("\n");
+
+  if(fodInfos->filter)
+  {
+    int nFilters = 0;  /* number of filters */
+    LPWSTR lpstrFilter;
+    LPCWSTR lpstrPos = fodInfos->filter;
+
+    for(;;)
+    {
+      /* filter is a list...  title\0ext\0......\0\0
+       * Set the combo item text to the title and the item data
+       *  to the ext
+       */
+      LPCWSTR lpstrDisplay;
+      LPWSTR lpstrExt;
+
+      /* Get the title */
+      if(! *lpstrPos) break;   /* end */
+      lpstrDisplay = lpstrPos;
+      lpstrPos += strlenW(lpstrPos) + 1;
+
+      /* Copy the extensions */
+      if (! *lpstrPos) return E_FAIL;  /* malformed filter */
+      if (!(lpstrExt = MemAlloc((strlenW(lpstrPos)+1)*sizeof(WCHAR)))) return E_FAIL;
+      strcpyW(lpstrExt,lpstrPos);
+      lpstrPos += strlenW(lpstrPos) + 1;
+
+      /* Add the item at the end of the combo */
+      CBAddStringW(fodInfos->DlgInfos.hwndFileTypeCB, lpstrDisplay);
+      CBSetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB, nFilters, lpstrExt);
+      nFilters++;
+    }
+    /*
+     * Set the current filter to the one specified
+     * in the initialisation structure
+     * FIXME: lpstrCustomFilter not handled at all
+     */
+
+    /* set default filter index */
+    if(fodInfos->ofnInfos->nFilterIndex == 0 && fodInfos->customfilter == NULL)
+      fodInfos->ofnInfos->nFilterIndex = 1;
+
+    /* First, check to make sure our index isn't out of bounds. */
+    if ( fodInfos->ofnInfos->nFilterIndex > nFilters )
+      fodInfos->ofnInfos->nFilterIndex = nFilters;
+
+    /* Set the current index selection. */
+    CBSetCurSel(fodInfos->DlgInfos.hwndFileTypeCB, fodInfos->ofnInfos->nFilterIndex-1);
+
+    /* Get the corresponding text string from the combo box. */
+    lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB,
+                                             fodInfos->ofnInfos->nFilterIndex-1);
+
+    if ((INT)lpstrFilter == CB_ERR)  /* control is empty */
+      lpstrFilter = NULL;
+
+    if(lpstrFilter)
+    {
+      DWORD len;
+      CharLowerW(lpstrFilter); /* lowercase */
+      len = strlenW(lpstrFilter)+1;
+      fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc( len * sizeof(WCHAR) );
+      strcpyW(fodInfos->ShellInfos.lpstrCurrentFilter,lpstrFilter);
+    }
+  }
+  return NOERROR;
+}
+
+/***********************************************************************
+ *      FILEDLG95_FILETYPE_OnCommand
+ *
+ * WM_COMMAND of the file type combo box
+ * If the function succeeds, the return value is nonzero.
+ */
+static BOOL FILEDLG95_FILETYPE_OnCommand(HWND hwnd, WORD wNotifyCode)
+{
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  switch(wNotifyCode)
+  {
+    case CBN_SELENDOK:
+    {
+      LPWSTR lpstrFilter;
+
+      /* Get the current item of the filetype combo box */
+      int iItem = CBGetCurSel(fodInfos->DlgInfos.hwndFileTypeCB);
+
+      /* set the current filter index - indexed from 1 */
+      fodInfos->ofnInfos->nFilterIndex = iItem + 1;
+
+      /* Set the current filter with the current selection */
+      if(fodInfos->ShellInfos.lpstrCurrentFilter)
+         MemFree((LPVOID)fodInfos->ShellInfos.lpstrCurrentFilter);
+
+      lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB,
+                                             iItem);
+      if((int)lpstrFilter != CB_ERR)
+      {
+          DWORD len;
+          CharLowerW(lpstrFilter); /* lowercase */
+          len = strlenW(lpstrFilter)+1;
+          fodInfos->ShellInfos.lpstrCurrentFilter = MemAlloc( len * sizeof(WCHAR) );
+          strcpyW(fodInfos->ShellInfos.lpstrCurrentFilter,lpstrFilter);
+          SendCustomDlgNotificationMessage(hwnd,CDN_TYPECHANGE);
+      }
+
+      /* Refresh the actual view to display the included items*/
+      IShellView_Refresh(fodInfos->Shell.FOIShellView);
+    }
+  }
+  return FALSE;
+}
+/***********************************************************************
+ *      FILEDLG95_FILETYPE_SearchExt
+ *
+ * searches for a extension in the filetype box
+ */
+static int FILEDLG95_FILETYPE_SearchExt(HWND hwnd,LPCWSTR lpstrExt)
+{
+  int i, iCount = CBGetCount(hwnd);
+
+  TRACE("%s\n", debugstr_w(lpstrExt));
+
+  if(iCount != CB_ERR)
+  {
+    for(i=0;i<iCount;i++)
+    {
+      if(!lstrcmpiW(lpstrExt,(LPWSTR)CBGetItemDataPtr(hwnd,i)))
+          return i;
+    }
+  }
+  return -1;
+}
+
+/***********************************************************************
+ *      FILEDLG95_FILETYPE_Clean
+ *
+ * Clean the memory used by the filetype combo box
+ */
+static void FILEDLG95_FILETYPE_Clean(HWND hwnd)
+{
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+  int iPos;
+  int iCount = CBGetCount(fodInfos->DlgInfos.hwndFileTypeCB);
+
+  TRACE("\n");
+
+  /* Delete each string of the combo and their associated data */
+  if(iCount != CB_ERR)
+  {
+    for(iPos = iCount-1;iPos>=0;iPos--)
+    {
+      MemFree((LPSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB,iPos));
+      CBDeleteString(fodInfos->DlgInfos.hwndFileTypeCB,iPos);
+    }
+  }
+  /* Current filter */
+  if(fodInfos->ShellInfos.lpstrCurrentFilter)
+     MemFree(fodInfos->ShellInfos.lpstrCurrentFilter);
+
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_Init
+ *
+ * Initialisation of the look in combo box
+ */
+static HRESULT FILEDLG95_LOOKIN_Init(HWND hwndCombo)
+{
+  IShellFolder *psfRoot, *psfDrives;
+  IEnumIDList  *lpeRoot, *lpeDrives;
+  LPITEMIDLIST pidlDrives, pidlTmp, pidlTmp1, pidlAbsTmp;
+
+  LookInInfos *liInfos = MemAlloc(sizeof(LookInInfos));
+
+  TRACE("\n");
+
+  liInfos->iMaxIndentation = 0;
+
+  SetPropA(hwndCombo, LookInInfosStr, (HANDLE) liInfos);
+
+  /* set item height for both text field and listbox */
+  CBSetItemHeight(hwndCombo,-1,GetSystemMetrics(SM_CYSMICON));
+  CBSetItemHeight(hwndCombo,0,GetSystemMetrics(SM_CYSMICON));
+   
+  /* Turn on the extended UI for the combo box like Windows does */
+  CBSetExtendedUI(hwndCombo, TRUE);
+
+  /* Initialise data of Desktop folder */
+  SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,&pidlTmp);
+  FILEDLG95_LOOKIN_AddItem(hwndCombo, pidlTmp,LISTEND);
+  COMDLG32_SHFree(pidlTmp);
+
+  SHGetSpecialFolderLocation(0,CSIDL_DRIVES,&pidlDrives);
+
+  SHGetDesktopFolder(&psfRoot);
+
+  if (psfRoot)
+  {
+    /* enumerate the contents of the desktop */
+    if(SUCCEEDED(IShellFolder_EnumObjects(psfRoot, hwndCombo, SHCONTF_FOLDERS, &lpeRoot)))
+    {
+      while (S_OK == IEnumIDList_Next(lpeRoot, 1, &pidlTmp, NULL))
+      {
+       FILEDLG95_LOOKIN_AddItem(hwndCombo, pidlTmp,LISTEND);
+
+       /* special handling for CSIDL_DRIVES */
+       if (COMDLG32_PIDL_ILIsEqual(pidlTmp, pidlDrives))
+       {
+         if(SUCCEEDED(IShellFolder_BindToObject(psfRoot, pidlTmp, NULL, &IID_IShellFolder, (LPVOID*)&psfDrives)))
+         {
+           /* enumerate the drives */
+           if(SUCCEEDED(IShellFolder_EnumObjects(psfDrives, hwndCombo,SHCONTF_FOLDERS, &lpeDrives)))
+           {
+             while (S_OK == IEnumIDList_Next(lpeDrives, 1, &pidlTmp1, NULL))
+             {
+               pidlAbsTmp = COMDLG32_PIDL_ILCombine(pidlTmp, pidlTmp1);
+               FILEDLG95_LOOKIN_AddItem(hwndCombo, pidlAbsTmp,LISTEND);
+               COMDLG32_SHFree(pidlAbsTmp);
+               COMDLG32_SHFree(pidlTmp1);
+             }
+             IEnumIDList_Release(lpeDrives);
+           }
+           IShellFolder_Release(psfDrives);
+         }
+       }
+        COMDLG32_SHFree(pidlTmp);
+      }
+      IEnumIDList_Release(lpeRoot);
+    }
+  }
+
+  IShellFolder_Release(psfRoot);
+  COMDLG32_SHFree(pidlDrives);
+  return NOERROR;
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_DrawItem
+ *
+ * WM_DRAWITEM message handler
+ */
+static LRESULT FILEDLG95_LOOKIN_DrawItem(LPDRAWITEMSTRUCT pDIStruct)
+{
+  COLORREF crWin = GetSysColor(COLOR_WINDOW);
+  COLORREF crHighLight = GetSysColor(COLOR_HIGHLIGHT);
+  COLORREF crText = GetSysColor(COLOR_WINDOWTEXT);
+  RECT rectText;
+  RECT rectIcon;
+  SHFILEINFOA sfi;
+  HIMAGELIST ilItemImage;
+  int iIndentation;
+  TEXTMETRICA tm;
+  LPSFOLDER tmpFolder;
+
+
+  LookInInfos *liInfos = (LookInInfos *)GetPropA(pDIStruct->hwndItem,LookInInfosStr);
+
+  TRACE("\n");
+
+  if(pDIStruct->itemID == -1)
+    return 0;
+
+  if(!(tmpFolder = (LPSFOLDER) CBGetItemDataPtr(pDIStruct->hwndItem,
+                            pDIStruct->itemID)))
+    return 0;
+
+
+  if(pDIStruct->itemID == liInfos->uSelectedItem)
+  {
+    ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
+                                               0,
+                                               &sfi,
+                                               sizeof (SHFILEINFOA),
+                                               SHGFI_PIDL | SHGFI_SMALLICON |
+                                               SHGFI_OPENICON | SHGFI_SYSICONINDEX    |
+                                               SHGFI_DISPLAYNAME );
+  }
+  else
+  {
+    ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
+                                                  0,
+                                                  &sfi,
+                                                  sizeof (SHFILEINFOA),
+                                                  SHGFI_PIDL | SHGFI_SMALLICON |
+                                                  SHGFI_SYSICONINDEX |
+                                                  SHGFI_DISPLAYNAME);
+  }
+
+  /* Is this item selected ? */
+  if(pDIStruct->itemState & ODS_SELECTED)
+  {
+    SetTextColor(pDIStruct->hDC,(0x00FFFFFF & ~(crText)));
+    SetBkColor(pDIStruct->hDC,crHighLight);
+    FillRect(pDIStruct->hDC,&pDIStruct->rcItem,GetSysColorBrush(COLOR_HIGHLIGHT));
+  }
+  else
+  {
+    SetTextColor(pDIStruct->hDC,crText);
+    SetBkColor(pDIStruct->hDC,crWin);
+    FillRect(pDIStruct->hDC,&pDIStruct->rcItem,GetSysColorBrush(COLOR_WINDOW));
+  }
+
+  /* Do not indent item if drawing in the edit of the combo */
+  if(pDIStruct->itemState & ODS_COMBOBOXEDIT)
+  {
+    iIndentation = 0;
+    ilItemImage = (HIMAGELIST) SHGetFileInfoA ((LPCSTR) tmpFolder->pidlItem,
+                                                0,
+                                                &sfi,
+                                                sizeof (SHFILEINFOA),
+                                                SHGFI_PIDL | SHGFI_SMALLICON | SHGFI_OPENICON
+                                                | SHGFI_SYSICONINDEX | SHGFI_DISPLAYNAME  );
+
+  }
+  else
+  {
+    iIndentation = tmpFolder->m_iIndent;
+  }
+  /* Draw text and icon */
+
+  /* Initialise the icon display area */
+  rectIcon.left = pDIStruct->rcItem.left + ICONWIDTH/2 * iIndentation;
+  rectIcon.top = pDIStruct->rcItem.top;
+  rectIcon.right = rectIcon.left + ICONWIDTH;
+  rectIcon.bottom = pDIStruct->rcItem.bottom;
+
+  /* Initialise the text display area */
+  GetTextMetricsA(pDIStruct->hDC, &tm);
+  rectText.left = rectIcon.right;
+  rectText.top =
+         (pDIStruct->rcItem.top + pDIStruct->rcItem.bottom - tm.tmHeight) / 2;
+  rectText.right = pDIStruct->rcItem.right + XTEXTOFFSET;
+  rectText.bottom =
+         (pDIStruct->rcItem.top + pDIStruct->rcItem.bottom + tm.tmHeight) / 2;
+
+  /* Draw the icon from the image list */
+  ImageList_Draw(ilItemImage,
+                 sfi.iIcon,
+                 pDIStruct->hDC,
+                 rectIcon.left,
+                 rectIcon.top,
+                 ILD_TRANSPARENT );
+
+  /* Draw the associated text */
+  if(sfi.szDisplayName)
+    TextOutA(pDIStruct->hDC,rectText.left,rectText.top,sfi.szDisplayName,strlen(sfi.szDisplayName));
+
+
+  return NOERROR;
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_OnCommand
+ *
+ * LookIn combo box WM_COMMAND message handler
+ * If the function succeeds, the return value is nonzero.
+ */
+static BOOL FILEDLG95_LOOKIN_OnCommand(HWND hwnd, WORD wNotifyCode)
+{
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  TRACE("%p\n", fodInfos);
+
+  switch(wNotifyCode)
+  {
+    case CBN_SELENDOK:
+    {
+      LPSFOLDER tmpFolder;
+      int iItem;
+
+      iItem = CBGetCurSel(fodInfos->DlgInfos.hwndLookInCB);
+
+      if(!(tmpFolder = (LPSFOLDER) CBGetItemDataPtr(fodInfos->DlgInfos.hwndLookInCB,
+                                               iItem)))
+       return FALSE;
+
+
+      if(SUCCEEDED(IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser,
+                                              tmpFolder->pidlItem,
+                                              SBSP_ABSOLUTE)))
+      {
+        return TRUE;
+      }
+      break;
+    }
+
+  }
+  return FALSE;
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_AddItem
+ *
+ * Adds an absolute pidl item to the lookin combo box
+ * returns the index of the inserted item
+ */
+static int FILEDLG95_LOOKIN_AddItem(HWND hwnd,LPITEMIDLIST pidl, int iInsertId)
+{
+  LPITEMIDLIST pidlNext;
+  SHFILEINFOA sfi;
+  SFOLDER *tmpFolder;
+  LookInInfos *liInfos;
+
+  TRACE("%08x\n", iInsertId);
+
+  if(!pidl)
+    return -1;
+
+  if(!(liInfos = (LookInInfos *)GetPropA(hwnd,LookInInfosStr)))
+    return -1;
+
+  tmpFolder = MemAlloc(sizeof(SFOLDER));
+  tmpFolder->m_iIndent = 0;
+
+  /* Calculate the indentation of the item in the lookin*/
+  pidlNext = pidl;
+  while( (pidlNext=COMDLG32_PIDL_ILGetNext(pidlNext)) )
+  {
+    tmpFolder->m_iIndent++;
+  }
+
+  tmpFolder->pidlItem = COMDLG32_PIDL_ILClone(pidl);
+
+  if(tmpFolder->m_iIndent > liInfos->iMaxIndentation)
+    liInfos->iMaxIndentation = tmpFolder->m_iIndent;
+
+  sfi.dwAttributes = SFGAO_FILESYSANCESTOR | SFGAO_FILESYSTEM;
+  SHGetFileInfoA((LPSTR)pidl,
+                  0,
+                  &sfi,
+                  sizeof(sfi),
+                  SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX
+                  | SHGFI_PIDL | SHGFI_SMALLICON | SHGFI_ATTRIBUTES | SHGFI_ATTR_SPECIFIED);
+
+  TRACE("-- Add %s attr=%08lx\n", sfi.szDisplayName, sfi.dwAttributes);
+
+  if((sfi.dwAttributes & SFGAO_FILESYSANCESTOR) || (sfi.dwAttributes & SFGAO_FILESYSTEM))
+  {
+    int iItemID;
+
+    TRACE("-- Add %s at %u\n", sfi.szDisplayName, tmpFolder->m_iIndent);
+
+    /* Add the item at the end of the list */
+    if(iInsertId < 0)
+    {
+      iItemID = CBAddString(hwnd,sfi.szDisplayName);
+    }
+    /* Insert the item at the iInsertId position*/
+    else
+    {
+      iItemID = CBInsertString(hwnd,sfi.szDisplayName,iInsertId);
+    }
+
+    CBSetItemDataPtr(hwnd,iItemID,tmpFolder);
+    return iItemID;
+  }
+
+  COMDLG32_SHFree( tmpFolder->pidlItem );
+  MemFree( tmpFolder );
+  return -1;
+
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_InsertItemAfterParent
+ *
+ * Insert an item below its parent
+ */
+static int FILEDLG95_LOOKIN_InsertItemAfterParent(HWND hwnd,LPITEMIDLIST pidl)
+{
+
+  LPITEMIDLIST pidlParent = GetParentPidl(pidl);
+  int iParentPos;
+
+  TRACE("\n");
+
+  iParentPos = FILEDLG95_LOOKIN_SearchItem(hwnd,(WPARAM)pidlParent,SEARCH_PIDL);
+
+  if(iParentPos < 0)
+  {
+    iParentPos = FILEDLG95_LOOKIN_InsertItemAfterParent(hwnd,pidlParent);
+  }
+
+  /* Free pidlParent memory */
+  COMDLG32_SHFree((LPVOID)pidlParent);
+
+  return FILEDLG95_LOOKIN_AddItem(hwnd,pidl,iParentPos + 1);
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_SelectItem
+ *
+ * Adds an absolute pidl item to the lookin combo box
+ * returns the index of the inserted item
+ */
+int FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl)
+{
+  int iItemPos;
+  LookInInfos *liInfos;
+
+  TRACE("\n");
+
+  iItemPos = FILEDLG95_LOOKIN_SearchItem(hwnd,(WPARAM)pidl,SEARCH_PIDL);
+
+  liInfos = (LookInInfos *)GetPropA(hwnd,LookInInfosStr);
+
+  if(iItemPos < 0)
+  {
+    while(FILEDLG95_LOOKIN_RemoveMostExpandedItem(hwnd) > -1);
+    iItemPos = FILEDLG95_LOOKIN_InsertItemAfterParent(hwnd,pidl);
+  }
+
+  else
+  {
+    SFOLDER *tmpFolder = (LPSFOLDER) CBGetItemDataPtr(hwnd,iItemPos);
+    while(liInfos->iMaxIndentation > tmpFolder->m_iIndent)
+    {
+      int iRemovedItem;
+
+      if(-1 == (iRemovedItem = FILEDLG95_LOOKIN_RemoveMostExpandedItem(hwnd)))
+        break;
+      if(iRemovedItem < iItemPos)
+        iItemPos--;
+    }
+  }
+
+  CBSetCurSel(hwnd,iItemPos);
+  liInfos->uSelectedItem = iItemPos;
+
+  return 0;
+
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_RemoveMostExpandedItem
+ *
+ * Remove the item with an expansion level over iExpansionLevel
+ */
+static int FILEDLG95_LOOKIN_RemoveMostExpandedItem(HWND hwnd)
+{
+  int iItemPos;
+
+  LookInInfos *liInfos = (LookInInfos *)GetPropA(hwnd,LookInInfosStr);
+
+  TRACE("\n");
+
+  if(liInfos->iMaxIndentation <= 2)
+    return -1;
+
+  if((iItemPos = FILEDLG95_LOOKIN_SearchItem(hwnd,(WPARAM)liInfos->iMaxIndentation,SEARCH_EXP)) >=0)
+  {
+    SFOLDER *tmpFolder = (LPSFOLDER) CBGetItemDataPtr(hwnd,iItemPos);
+    COMDLG32_SHFree(tmpFolder->pidlItem);
+    MemFree(tmpFolder);
+    CBDeleteString(hwnd,iItemPos);
+    liInfos->iMaxIndentation--;
+
+    return iItemPos;
+  }
+
+  return -1;
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_SearchItem
+ *
+ * Search for pidl in the lookin combo box
+ * returns the index of the found item
+ */
+static int FILEDLG95_LOOKIN_SearchItem(HWND hwnd,WPARAM searchArg,int iSearchMethod)
+{
+  int i = 0;
+  int iCount = CBGetCount(hwnd);
+
+  TRACE("0x%08x 0x%x\n",searchArg, iSearchMethod);
+
+  if (iCount != CB_ERR)
+  {
+    for(;i<iCount;i++)
+    {
+      LPSFOLDER tmpFolder = (LPSFOLDER) CBGetItemDataPtr(hwnd,i);
+
+      if(iSearchMethod == SEARCH_PIDL && COMDLG32_PIDL_ILIsEqual((LPITEMIDLIST)searchArg,tmpFolder->pidlItem))
+        return i;
+      if(iSearchMethod == SEARCH_EXP && tmpFolder->m_iIndent == (int)searchArg)
+        return i;
+    }
+  }
+
+  return -1;
+}
+
+/***********************************************************************
+ *      FILEDLG95_LOOKIN_Clean
+ *
+ * Clean the memory used by the lookin combo box
+ */
+static void FILEDLG95_LOOKIN_Clean(HWND hwnd)
+{
+    FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+    int iPos;
+    int iCount = CBGetCount(fodInfos->DlgInfos.hwndLookInCB);
+
+    TRACE("\n");
+
+    /* Delete each string of the combo and their associated data */
+    if (iCount != CB_ERR)
+    {
+      for(iPos = iCount-1;iPos>=0;iPos--)
+      {
+        SFOLDER *tmpFolder = (LPSFOLDER) CBGetItemDataPtr(fodInfos->DlgInfos.hwndLookInCB,iPos);
+        COMDLG32_SHFree(tmpFolder->pidlItem);
+        MemFree(tmpFolder);
+        CBDeleteString(fodInfos->DlgInfos.hwndLookInCB,iPos);
+      }
+    }
+
+    /* LookInInfos structure */
+    RemovePropA(fodInfos->DlgInfos.hwndLookInCB,LookInInfosStr);
+
+}
+/***********************************************************************
+ * FILEDLG95_FILENAME_FillFromSelection
+ *
+ * fills the edit box from the cached DataObject
+ */
+void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd)
+{
+    FileOpenDlgInfos *fodInfos;
+    LPITEMIDLIST      pidl;
+    UINT              nFiles = 0, nFileToOpen, nFileSelected, nLength = 0;
+    char              lpstrTemp[MAX_PATH];
+    LPSTR             lpstrAllFile = NULL, lpstrCurrFile = NULL;
+
+    TRACE("\n");
+    fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+    /* Count how many files we have */
+    nFileSelected = GetNumSelected( fodInfos->Shell.FOIDataObject );
+
+    /* calculate the string length, count files */
+    if (nFileSelected >= 1)
+    {
+      nLength += 3;    /* first and last quotes, trailing \0 */
+      for ( nFileToOpen = 0; nFileToOpen < nFileSelected; nFileToOpen++ )
+      {
+        pidl = GetPidlFromDataObject( fodInfos->Shell.FOIDataObject, nFileToOpen+1 );
+
+        if (pidl)
+       {
+          /* get the total length of the selected file names */
+          lpstrTemp[0] = '\0';
+          GetName( fodInfos->Shell.FOIShellFolder, pidl, SHGDN_INFOLDER|SHGDN_FORPARSING, lpstrTemp );
+
+          if ( ! IsPidlFolder(fodInfos->Shell.FOIShellFolder, pidl) ) /* Ignore folders */
+         {
+            nLength += strlen( lpstrTemp ) + 3;
+            nFiles++;
+         }
+          COMDLG32_SHFree( pidl );
+       }
+      }
+    }
+
+    /* allocate the buffer */
+    if (nFiles <= 1) nLength = MAX_PATH;
+    lpstrAllFile = (LPSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, nLength);
+    lpstrAllFile[0] = '\0';
+
+    /* Generate the string for the edit control */
+    if(nFiles >= 1)
+    {
+      lpstrCurrFile = lpstrAllFile;
+      for ( nFileToOpen = 0; nFileToOpen < nFileSelected; nFileToOpen++ )
+      {
+        pidl = GetPidlFromDataObject( fodInfos->Shell.FOIDataObject, nFileToOpen+1 );
+
+        if (pidl)
+       {
+         /* get the file name */
+          lpstrTemp[0] = '\0';
+          GetName( fodInfos->Shell.FOIShellFolder, pidl, SHGDN_INFOLDER|SHGDN_FORPARSING, lpstrTemp );
+
+          if (! IsPidlFolder(fodInfos->Shell.FOIShellFolder, pidl)) /* Ignore folders */
+         {
+            if ( nFiles > 1)
+           {
+              *lpstrCurrFile++ =  '\"';
+              strcpy( lpstrCurrFile, lpstrTemp );
+              lpstrCurrFile += strlen( lpstrTemp );
+              strcpy( lpstrCurrFile, "\" " );
+              lpstrCurrFile += 2;
+           }
+           else
+           {
+              strcpy( lpstrAllFile, lpstrTemp );
+           }
+          }
+          COMDLG32_SHFree( (LPVOID) pidl );
+       }
+      }
+      SetWindowTextA( fodInfos->DlgInfos.hwndFileName, lpstrAllFile );
+       
+      /* Select the file name like Windows does */ 
+      SendMessageA(fodInfos->DlgInfos.hwndFileName, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
+    }
+    HeapFree(GetProcessHeap(),0, lpstrAllFile );
+}
+
+
+/* copied from shell32 to avoid linking to it */
+static HRESULT COMDLG32_StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl)
+{
+       switch (src->uType)
+       {
+         case STRRET_WSTR:
+           WideCharToMultiByte(CP_ACP, 0, src->u.pOleStr, -1, (LPSTR)dest, len, NULL, NULL);
+           COMDLG32_SHFree(src->u.pOleStr);
+           break;
+
+         case STRRET_CSTR:
+           lstrcpynA((LPSTR)dest, src->u.cStr, len);
+           break;
+
+         case STRRET_OFFSET:
+           lstrcpynA((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len);
+           break;
+
+         default:
+           FIXME("unknown type!\n");
+           if (len)
+           {
+             *(LPSTR)dest = '\0';
+           }
+           return(FALSE);
+       }
+       return S_OK;
+}
+
+/***********************************************************************
+ * FILEDLG95_FILENAME_GetFileNames
+ *
+ * copies the filenames to a 0-delimited string list (A\0B\0C\0\0)
+ */
+int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed)
+{
+       FileOpenDlgInfos *fodInfos  = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+       UINT nStrCharCount = 0; /* index in src buffer */
+       UINT nFileIndex = 0;    /* index in dest buffer */
+       UINT nFileCount = 0;    /* number of files */
+       UINT nStrLen = 0;       /* length of string in edit control */
+       LPWSTR lpstrEdit;       /* buffer for string from edit control */
+
+       TRACE("\n");
+
+       /* get the filenames from the edit control */
+       nStrLen = SendMessageW(fodInfos->DlgInfos.hwndFileName, WM_GETTEXTLENGTH, 0, 0);
+       lpstrEdit = MemAlloc( (nStrLen+1)*sizeof(WCHAR) );
+       GetDlgItemTextW(hwnd, IDC_FILENAME, lpstrEdit, nStrLen+1);
+
+       TRACE("nStrLen=%u str=%s\n", nStrLen, debugstr_w(lpstrEdit));
+
+       /* we might get single filename without any '"',
+        * so we need nStrLen + terminating \0 + end-of-list \0 */
+       *lpstrFileList = MemAlloc( (nStrLen+2)*sizeof(WCHAR) );
+       *sizeUsed = 0;
+
+       /* build 0-delimited file list from filenames */
+       while ( nStrCharCount <= nStrLen )
+       {
+         if ( lpstrEdit[nStrCharCount]=='"' )
+         {
+           nStrCharCount++;
+           while ((lpstrEdit[nStrCharCount]!='"') && (nStrCharCount <= nStrLen))
+           {
+             (*lpstrFileList)[nFileIndex++] = lpstrEdit[nStrCharCount];
+             (*sizeUsed)++;
+             nStrCharCount++;
+           }
+           (*lpstrFileList)[nFileIndex++] = '\0';
+           (*sizeUsed)++;
+           nFileCount++;
+         }
+         nStrCharCount++;
+       }
+
+       /* single, unquoted string */
+       if ((nStrLen > 0) && (*sizeUsed == 0) )
+       {
+         strcpyW(*lpstrFileList, lpstrEdit);
+         nFileIndex = strlenW(lpstrEdit) + 1;
+         (*sizeUsed) = nFileIndex;
+         nFileCount = 1;
+       }
+
+       /* trailing \0 */
+       (*lpstrFileList)[nFileIndex] = '\0';
+       (*sizeUsed)++;
+
+       MemFree(lpstrEdit);
+       return nFileCount;
+}
+
+#define SETDefFormatEtc(fe,cf,med) \
+{ \
+    (fe).cfFormat = cf;\
+    (fe).dwAspect = DVASPECT_CONTENT; \
+    (fe).ptd =NULL;\
+    (fe).tymed = med;\
+    (fe).lindex = -1;\
+};
+
+/*
+ * DATAOBJECT Helper functions
+ */
+
+/***********************************************************************
+ * COMCTL32_ReleaseStgMedium
+ *
+ * like ReleaseStgMedium from ole32
+ */
+static void COMCTL32_ReleaseStgMedium (STGMEDIUM medium)
+{
+      if(medium.pUnkForRelease)
+      {
+        IUnknown_Release(medium.pUnkForRelease);
+      }
+      else
+      {
+        GlobalUnlock(medium.u.hGlobal);
+        GlobalFree(medium.u.hGlobal);
+      }
+}
+
+/***********************************************************************
+ *          GetPidlFromDataObject
+ *
+ * Return pidl(s) by number from the cached DataObject
+ *
+ * nPidlIndex=0 gets the fully qualified root path
+ */
+LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex)
+{
+
+    STGMEDIUM medium;
+    FORMATETC formatetc;
+    LPITEMIDLIST pidl = NULL;
+
+    TRACE("sv=%p index=%u\n", doSelected, nPidlIndex);
+
+    /* Set the FORMATETC structure*/
+    SETDefFormatEtc(formatetc, RegisterClipboardFormatA(CFSTR_SHELLIDLIST), TYMED_HGLOBAL);
+
+    /* Get the pidls from IDataObject */
+    if(SUCCEEDED(IDataObject_GetData(doSelected,&formatetc,&medium)))
+    {
+      LPIDA cida = GlobalLock(medium.u.hGlobal);
+      if(nPidlIndex <= cida->cidl)
+      {
+        pidl = COMDLG32_PIDL_ILClone((LPITEMIDLIST)(&((LPBYTE)cida)[cida->aoffset[nPidlIndex]]));
+      }
+      COMCTL32_ReleaseStgMedium(medium);
+    }
+    return pidl;
+}
+
+/***********************************************************************
+ *          GetNumSelected
+ *
+ * Return the number of selected items in the DataObject.
+ *
+*/
+UINT GetNumSelected( IDataObject *doSelected )
+{
+    UINT retVal = 0;
+    STGMEDIUM medium;
+    FORMATETC formatetc;
+
+    TRACE("sv=%p\n", doSelected);
+
+    if (!doSelected) return 0;
+
+    /* Set the FORMATETC structure*/
+    SETDefFormatEtc(formatetc, RegisterClipboardFormatA(CFSTR_SHELLIDLIST), TYMED_HGLOBAL);
+
+    /* Get the pidls from IDataObject */
+    if(SUCCEEDED(IDataObject_GetData(doSelected,&formatetc,&medium)))
+    {
+      LPIDA cida = GlobalLock(medium.u.hGlobal);
+      retVal = cida->cidl;
+      COMCTL32_ReleaseStgMedium(medium);
+      return retVal;
+    }
+    return 0;
+}
+
+/*
+ * TOOLS
+ */
+
+/***********************************************************************
+ *      GetName
+ *
+ * Get the pidl's display name (relative to folder) and
+ * put it in lpstrFileName.
+ *
+ * Return NOERROR on success,
+ * E_FAIL otherwise
+ */
+
+HRESULT GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrFileName)
+{
+  STRRET str;
+  HRESULT hRes;
+
+  TRACE("sf=%p pidl=%p\n", lpsf, pidl);
+
+  if(!lpsf)
+  {
+    HRESULT hRes;
+    SHGetDesktopFolder(&lpsf);
+    hRes = GetName(lpsf,pidl,dwFlags,lpstrFileName);
+    IShellFolder_Release(lpsf);
+    return hRes;
+  }
+
+  /* Get the display name of the pidl relative to the folder */
+  if (SUCCEEDED(hRes = IShellFolder_GetDisplayNameOf(lpsf, pidl, dwFlags, &str)))
+  {
+      return COMDLG32_StrRetToStrNA(lpstrFileName, MAX_PATH, &str, pidl);
+  }
+  return E_FAIL;
+}
+
+/***********************************************************************
+ *      GetShellFolderFromPidl
+ *
+ * pidlRel is the item pidl relative
+ * Return the IShellFolder of the absolute pidl
+ */
+IShellFolder *GetShellFolderFromPidl(LPITEMIDLIST pidlAbs)
+{
+  IShellFolder *psf = NULL,*psfParent;
+
+  TRACE("%p\n", pidlAbs);
+
+  if(SUCCEEDED(SHGetDesktopFolder(&psfParent)))
+  {
+    psf = psfParent;
+    if(pidlAbs && pidlAbs->mkid.cb)
+    {
+      if(SUCCEEDED(IShellFolder_BindToObject(psfParent, pidlAbs, NULL, &IID_IShellFolder, (LPVOID*)&psf)))
+      {
+       IShellFolder_Release(psfParent);
+        return psf;
+      }
+    }
+    /* return the desktop */
+    return psfParent;
+  }
+  return NULL;
+}
+
+/***********************************************************************
+ *      GetParentPidl
+ *
+ * Return the LPITEMIDLIST to the parent of the pidl in the list
+ */
+LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl)
+{
+  LPITEMIDLIST pidlParent;
+
+  TRACE("%p\n", pidl);
+
+  pidlParent = COMDLG32_PIDL_ILClone(pidl);
+  COMDLG32_PIDL_ILRemoveLastID(pidlParent);
+
+  return pidlParent;
+}
+
+/***********************************************************************
+ *      GetPidlFromName
+ *
+ * returns the pidl of the file name relative to folder
+ * NULL if an error occurred
+ */
+LPITEMIDLIST GetPidlFromName(IShellFolder *lpsf,LPWSTR lpcstrFileName)
+{
+  LPITEMIDLIST pidl = NULL;
+  ULONG ulEaten;
+
+  TRACE("sf=%p file=%s\n", lpsf, debugstr_w(lpcstrFileName));
+
+  if(!lpcstrFileName) return NULL;
+  if(!*lpcstrFileName) return NULL;
+
+  if(!lpsf)
+  {
+    if (SUCCEEDED(SHGetDesktopFolder(&lpsf))) {
+        IShellFolder_ParseDisplayName(lpsf, 0, NULL, lpcstrFileName, &ulEaten, &pidl, NULL);
+        IShellFolder_Release(lpsf);
+    }
+  }
+  else
+  {
+    IShellFolder_ParseDisplayName(lpsf, 0, NULL, lpcstrFileName, &ulEaten, &pidl, NULL);
+  }
+  return pidl;
+}
+
+/*
+*/
+BOOL IsPidlFolder (LPSHELLFOLDER psf, LPCITEMIDLIST pidl)
+{
+       ULONG uAttr  = SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
+       HRESULT ret;
+
+       TRACE("%p, %p\n", psf, pidl);
+
+       ret = IShellFolder_GetAttributesOf( psf, 1, &pidl, &uAttr );
+
+       TRACE("-- 0x%08lx 0x%08lx\n", uAttr, ret);
+       /* see documentation shell 4.1*/
+        return uAttr & (SFGAO_FOLDER | SFGAO_HASSUBFOLDER);
+}
+
+/***********************************************************************
+ *      BrowseSelectedFolder
+ */
+static BOOL BrowseSelectedFolder(HWND hwnd)
+{
+  BOOL bBrowseSelFolder = FALSE;
+  FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
+
+  TRACE("\n");
+
+  if (GetNumSelected(fodInfos->Shell.FOIDataObject) == 1)
+  {
+      LPITEMIDLIST pidlSelection;
+
+      /* get the file selected */
+      pidlSelection  = GetPidlFromDataObject( fodInfos->Shell.FOIDataObject, 1);
+      if (IsPidlFolder (fodInfos->Shell.FOIShellFolder, pidlSelection))
+      {
+          if ( FAILED( IShellBrowser_BrowseObject( fodInfos->Shell.FOIShellBrowser,
+                         pidlSelection, SBSP_RELATIVE ) ) )
+          {
+               WCHAR notexist[] = {'P','a','t','h',' ','d','o','e','s',
+                                   ' ','n','o','t',' ','e','x','i','s','t',0};
+               MessageBoxW( hwnd, notexist, fodInfos->title, MB_OK | MB_ICONEXCLAMATION );
+          }
+
+         bBrowseSelFolder = TRUE;
+      }
+      COMDLG32_SHFree( pidlSelection );
+  }
+
+  return bBrowseSelFolder;
+}
+
+/*
+ * Memory allocation methods */
+static void *MemAlloc(UINT size)
+{
+    return HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size);
+}
+
+static void MemFree(void *mem)
+{
+    if(mem)
+    {
+        HeapFree(GetProcessHeap(),0,mem);
+    }
+}
+
+/* ------------------ APIs ---------------------- */
+
+/***********************************************************************
+ *            GetOpenFileNameA  (COMDLG32.@)
+ *
+ * Creates a dialog box for the user to select a file to open.
+ *
+ * RETURNS
+ *    TRUE on success: user enters a valid file
+ *    FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
+ *
+ */
+BOOL WINAPI GetOpenFileNameA(
+       LPOPENFILENAMEA ofn) /* [in/out] address of init structure */
+{
+        return GetFileDialog95A(ofn, OPEN_DIALOG);
+}
+
+/***********************************************************************
+ *            GetOpenFileNameW (COMDLG32.@)
+ *
+ * Creates a dialog box for the user to select a file to open.
+ *
+ * RETURNS
+ *    TRUE on success: user enters a valid file
+ *    FALSE on cancel, error, close or filename-does-not-fit-in-buffer.
+ *
+ */
+BOOL WINAPI GetOpenFileNameW(
+       LPOPENFILENAMEW ofn) /* [in/out] address of init structure */
+{
+        return GetFileDialog95W(ofn, OPEN_DIALOG);
+}
+
+/***********************************************************************
+ *            GetSaveFileNameA  (COMDLG32.@)
+ *
+ * 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.
+ *
+ */
+BOOL WINAPI GetSaveFileNameA(
+       LPOPENFILENAMEA ofn) /* [in/out] address of init structure */
+{
+        return GetFileDialog95A(ofn, SAVE_DIALOG);
+}
+
+/***********************************************************************
+ *            GetSaveFileNameW  (COMDLG32.@)
+ *
+ * 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.
+ *
+ */
+BOOL WINAPI GetSaveFileNameW(
+       LPOPENFILENAMEW ofn) /* [in/out] address of init structure */
+{
+       return GetFileDialog95W(ofn, SAVE_DIALOG);
+}
diff --git a/reactos/lib/comdlg32/filedlg16.c b/reactos/lib/comdlg32/filedlg16.c
new file mode 100644 (file)
index 0000000..063a9c0
--- /dev/null
@@ -0,0 +1,1463 @@
+/*
+ * 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 <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
+#include "wine/unicode.h"
+#include "wine/debug.h"
+#include "cderr.h"
+#include "winreg.h"
+#include "winternl.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "cderr.h"
+#include "winreg.h"
+#include "winternl.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+#include "cdlg16.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;
+
+static HICON hFolder = 0;
+static HICON hFolder2 = 0;
+static HICON hFloppy = 0;
+static HICON hHDisk = 0;
+static HICON hCDRom = 0;
+static HICON hNet = 0;
+static char defaultopen[]="Open File";
+static char defaultsave[]="Save as";
+
+/***********************************************************************
+ *                             FileDlg_Init                    [internal]
+ */
+static BOOL FileDlg_Init(void)
+{
+    static BOOL initialized = 0;
+
+    if (!initialized) {
+        HINSTANCE inst = GetModuleHandleA( "comdlg32.dll" );
+        if (!inst)
+        {
+            ERR( "cannot get comdlg32.dll instance\n" );
+            return FALSE;
+        }
+        hFolder  = LoadImageA( inst, "FOLDER", IMAGE_ICON, 16, 16, LR_SHARED );
+        hFolder2 = LoadImageA( inst, "FOLDER2", IMAGE_ICON, 16, 16, LR_SHARED );
+        hFloppy  = LoadImageA( inst, "FLOPPY", IMAGE_ICON, 16, 16, LR_SHARED );
+        hHDisk   = LoadImageA( inst, "HDISK", IMAGE_ICON, 16, 16, LR_SHARED );
+        hCDRom   = LoadImageA( inst, "CDROM", IMAGE_ICON, 16, 16, LR_SHARED );
+        hNet     = LoadImageA( inst, "NETWORK", IMAGE_ICON, 16, 16, LR_SHARED );
+       if (hFolder == 0 || hFolder2 == 0 || hFloppy == 0 ||
+           hHDisk == 0 || hCDRom == 0 || hNet == 0)
+       {
+           ERR("Error loading icons !\n");
+           return FALSE;
+       }
+       initialized = TRUE;
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *           Get32BitsTemplate                                  [internal]
+ *
+ * Get a template (or FALSE if failure) when 16 bits dialogs are used
+ * by a 32 bits application
+ *
+ */
+BOOL Get32BitsTemplate(LFSPRIVATE lfs)
+{
+    LPOPENFILENAMEW ofnW = lfs->ofnW;
+    HANDLE hDlgTmpl;
+
+    if (ofnW->Flags & OFN_ENABLETEMPLATEHANDLE)
+    {
+       if (!(lfs->template = LockResource( ofnW->hInstance )))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+    }
+    else if (ofnW->Flags & OFN_ENABLETEMPLATE)
+    {
+       HRSRC hResInfo;
+        if (lfs->ofnA)
+           hResInfo = FindResourceA(lfs->ofnA->hInstance,
+                                lfs->ofnA->lpTemplateName,
+                                 (LPSTR)RT_DIALOG);
+        else
+           hResInfo = FindResourceW(ofnW->hInstance,
+                                ofnW->lpTemplateName,
+                                 (LPWSTR)RT_DIALOG);
+        if (!hResInfo)
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+           return FALSE;
+       }
+       if (!(hDlgTmpl = LoadResource(ofnW->hInstance,
+                               hResInfo)) ||
+                   !(lfs->template = LockResource(hDlgTmpl)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+    } else { /* get it from internal Wine resource */
+       HRSRC hResInfo;
+       if (!(hResInfo = FindResourceA(COMDLG32_hInstance,
+             lfs->open? "OPEN_FILE":"SAVE_FILE", (LPSTR)RT_DIALOG)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+           return FALSE;
+        }
+        if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo )) ||
+                !(lfs->template = LockResource( hDlgTmpl )))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return FALSE;
+        }
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *           Get16BitsTemplate                                [internal]
+ *
+ * Get a template (FALSE if failure) when 16 bits dialogs are used
+ * by a 16 bits application
+ *
+ */
+BOOL Get16BitsTemplate(LFSPRIVATE lfs)
+{
+    LPOPENFILENAME16 ofn16 = lfs->ofn16;
+    LPCVOID template;
+    HGLOBAL16 hGlobal16 = 0;
+
+    if (ofn16->Flags & OFN_ENABLETEMPLATEHANDLE)
+        lfs->hDlgTmpl16 = ofn16->hInstance;
+    else if (ofn16->Flags & OFN_ENABLETEMPLATE)
+    {
+       HANDLE16 hResInfo;
+       if (!(hResInfo = FindResource16(ofn16->hInstance,
+                                       MapSL(ofn16->lpTemplateName),
+                                        (LPSTR)RT_DIALOG)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+           return FALSE;
+       }
+       if (!(lfs->hDlgTmpl16 = LoadResource16( ofn16->hInstance, hResInfo )))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+        lfs->hResource16 = lfs->hDlgTmpl16;
+    }
+    else
+    { /* get resource from (32 bits) own Wine resource; convert it to 16 */
+       HRSRC hResInfo;
+       HGLOBAL hDlgTmpl32;
+        LPCVOID template32;
+        DWORD size;
+
+       if (!(hResInfo = FindResourceA(COMDLG32_hInstance,
+               lfs->open ? "OPEN_FILE":"SAVE_FILE", (LPSTR)RT_DIALOG)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+           return FALSE;
+       }
+       if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo )) ||
+           !(template32 = LockResource( hDlgTmpl32 )))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+        size = SizeofResource(GetModuleHandleA("COMDLG32"), hResInfo);
+        hGlobal16 = GlobalAlloc16(0, size);
+        if (!hGlobal16)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE);
+            ERR("alloc failure for %ld bytes\n", size);
+            return FALSE;
+        }
+        template = GlobalLock16(hGlobal16);
+        if (!template)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE);
+            ERR("global lock failure for %x handle\n", hGlobal16);
+            GlobalFree16(hGlobal16);
+            return FALSE;
+        }
+        ConvertDialog32To16((LPVOID)template32, size, (LPVOID)template);
+        lfs->hDlgTmpl16 = hGlobal16;
+        lfs->hGlobal16 = hGlobal16;
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *                              FILEDLG_StripEditControl        [internal]
+ * Strip pathnames off the contents of the edit control.
+ */
+static void FILEDLG_StripEditControl(HWND hwnd)
+{
+    WCHAR temp[BUFFILE], *cp;
+
+    GetDlgItemTextW( hwnd, edt1, temp, sizeof(temp)/sizeof(WCHAR));
+    cp = strrchrW(temp, '\\');
+    if (cp != NULL) {
+       strcpyW(temp, cp+1);
+    }
+    cp = strrchrW(temp, ':');
+    if (cp != NULL) {
+       strcpyW(temp, cp+1);
+    }
+    /* FIXME: shouldn't we do something with the result here? ;-) */
+}
+
+/***********************************************************************
+ *                              FILEDLG_CallWindowProc          [internal]
+ *
+ *      Call the appropriate hook
+ */
+static BOOL FILEDLG_CallWindowProc(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam,
+                                   LPARAM lParam)
+{
+    if (lfs->ofnA)
+    {
+        return (BOOL) CallWindowProcA(
+          (WNDPROC)lfs->ofnA->lpfnHook, lfs->hwnd,
+          wMsg, wParam, lParam);
+    }
+
+    if (lfs->ofnW)
+    {
+        return (BOOL) CallWindowProcW(
+          (WNDPROC)lfs->ofnW->lpfnHook, lfs->hwnd,
+          wMsg, wParam, lParam);
+    }
+    return FALSE;
+}
+
+/***********************************************************************
+ *                             FILEDLG_ScanDir                 [internal]
+ */
+static BOOL FILEDLG_ScanDir(HWND hWnd, LPWSTR newPath)
+{
+    WCHAR              buffer[BUFFILE];
+    HWND               hdlg, hdlgDir;
+    LRESULT             lRet = TRUE;
+    HCURSOR             hCursorWait, oldCursor;
+
+    TRACE("Trying to change to %s\n", debugstr_w(newPath));
+    if  ( !SetCurrentDirectoryW( newPath ))
+        return FALSE;
+    lstrcpynW(buffer, newPath, sizeof(buffer)/sizeof(WCHAR));
+
+    /* get the list of spec files */
+    GetDlgItemTextW(hWnd, edt1, buffer, sizeof(buffer)/sizeof(WCHAR));
+
+    hCursorWait = LoadCursorA(0, (LPSTR)IDC_WAIT);
+    oldCursor = SetCursor(hCursorWait);
+
+    /* list of files */
+    if ((hdlg = GetDlgItem(hWnd, lst1)) != 0) {
+        WCHAR* scptr; /* ptr on semi-colon */
+       WCHAR*  filter = buffer;
+
+       TRACE("Using filter %s\n", debugstr_w(filter));
+       SendMessageW(hdlg, LB_RESETCONTENT, 0, 0);
+       while (filter) {
+           scptr = strchrW(filter, ';');
+           if (scptr)  *scptr = 0;
+            while (*filter == ' ') filter++;
+           TRACE("Using file spec %s\n", debugstr_w(filter));
+           if (SendMessageW(hdlg, LB_DIR, 0, (LPARAM)filter) == LB_ERR)
+               return FALSE;
+           if (scptr) *scptr = ';';
+               filter = (scptr) ? (scptr + 1) : 0;
+        }
+    }
+
+    /* list of directories */
+    strcpyW(buffer, FILE_star);
+
+    if ((hdlgDir = GetDlgItem(hWnd, lst2)) != 0) {
+        lRet = DlgDirListW(hWnd, buffer, lst2, stc1, DDL_EXCLUSIVE | DDL_DIRECTORY);
+    }
+    SetCursor(oldCursor);
+    return lRet;
+}
+
+/***********************************************************************
+ *                             FILEDLG_GetFileType             [internal]
+ */
+
+static LPWSTR FILEDLG_GetFileType(LPWSTR cfptr, LPWSTR fptr, WORD index)
+{
+  int n, i;
+  i = 0;
+  if (cfptr)
+    for ( ;(n = lstrlenW(cfptr)) != 0; i++)
+      {
+       cfptr += n + 1;
+       if (i == index)
+         return cfptr;
+       cfptr += lstrlenW(cfptr) + 1;
+      }
+  if (fptr)
+    for ( ;(n = lstrlenW(fptr)) != 0; i++)
+      {
+       fptr += n + 1;
+       if (i == index)
+         return fptr;
+       fptr += lstrlenW(fptr) + 1;
+    }
+  return (LPWSTR) FILE_star; /* FIXME */
+}
+
+/***********************************************************************
+ *                              FILEDLG_WMDrawItem              [internal]
+ */
+static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam,
+       int savedlg, LPDRAWITEMSTRUCT lpdis)
+{
+    WCHAR *str;
+    HICON hIcon;
+    COLORREF oldText = 0, oldBk = 0;
+
+    if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst1)
+    {
+        if (!(str = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC))) return FALSE;
+       SendMessageW(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID,
+                      (LPARAM)str);
+
+       if ((lpdis->itemState & ODS_SELECTED) && !savedlg)
+       {
+           oldBk = SetBkColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHT ) );
+           oldText = SetTextColor( lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
+       }
+       if (savedlg)
+           SetTextColor(lpdis->hDC,GetSysColor(COLOR_GRAYTEXT) );
+
+       ExtTextOutW(lpdis->hDC, lpdis->rcItem.left + 1,
+                  lpdis->rcItem.top + 1, ETO_OPAQUE | ETO_CLIPPED,
+                  &(lpdis->rcItem), str, lstrlenW(str), NULL);
+
+       if (lpdis->itemState & ODS_SELECTED)
+           DrawFocusRect( lpdis->hDC, &(lpdis->rcItem) );
+
+       if ((lpdis->itemState & ODS_SELECTED) && !savedlg)
+       {
+           SetBkColor( lpdis->hDC, oldBk );
+           SetTextColor( lpdis->hDC, oldText );
+       }
+        HeapFree(GetProcessHeap(), 0, str);
+       return TRUE;
+    }
+
+    if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst2)
+    {
+        if (!(str = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC)))
+            return FALSE;
+       SendMessageW(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID,
+                      (LPARAM)str);
+
+       if (lpdis->itemState & ODS_SELECTED)
+       {
+           oldBk = SetBkColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHT ) );
+           oldText = SetTextColor( lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
+       }
+       ExtTextOutW(lpdis->hDC, lpdis->rcItem.left + fldrWidth,
+                  lpdis->rcItem.top + 1, ETO_OPAQUE | ETO_CLIPPED,
+                  &(lpdis->rcItem), str, lstrlenW(str), NULL);
+
+       if (lpdis->itemState & ODS_SELECTED)
+           DrawFocusRect( lpdis->hDC, &(lpdis->rcItem) );
+
+       if (lpdis->itemState & ODS_SELECTED)
+       {
+           SetBkColor( lpdis->hDC, oldBk );
+           SetTextColor( lpdis->hDC, oldText );
+       }
+       DrawIcon(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, hFolder);
+        HeapFree(GetProcessHeap(), 0, str);
+       return TRUE;
+    }
+    if (lpdis->CtlType == ODT_COMBOBOX && lpdis->CtlID == cmb2)
+    {
+        char root[] = "a:";
+        if (!(str = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC)))
+            return FALSE;
+       SendMessageW(lpdis->hwndItem, CB_GETLBTEXT, lpdis->itemID,
+                      (LPARAM)str);
+        root[0] += str[2] - 'a';
+        switch(GetDriveTypeA(root))
+        {
+        case DRIVE_REMOVABLE: hIcon = hFloppy; break;
+        case DRIVE_CDROM:     hIcon = hCDRom; break;
+        case DRIVE_REMOTE:    hIcon = hNet; break;
+        case DRIVE_FIXED:
+        default:           hIcon = hHDisk; break;
+        }
+       if (lpdis->itemState & ODS_SELECTED)
+       {
+           oldBk = SetBkColor( lpdis->hDC, GetSysColor( COLOR_HIGHLIGHT ) );
+           oldText = SetTextColor( lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
+       }
+       ExtTextOutW(lpdis->hDC, lpdis->rcItem.left + fldrWidth,
+                  lpdis->rcItem.top + 1, ETO_OPAQUE | ETO_CLIPPED,
+                  &(lpdis->rcItem), str, lstrlenW(str), NULL);
+
+       if (lpdis->itemState & ODS_SELECTED)
+       {
+           SetBkColor( lpdis->hDC, oldBk );
+           SetTextColor( lpdis->hDC, oldText );
+       }
+       DrawIcon(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, hIcon);
+        HeapFree(GetProcessHeap(), 0, str);
+       return TRUE;
+    }
+    return FALSE;
+}
+
+/***********************************************************************
+ *                              FILEDLG_UpdateResult            [internal]
+ *      update the displayed file name (with path)
+ */
+void FILEDLG_UpdateResult(LFSPRIVATE lfs, WCHAR *tmpstr)
+{
+    int lenstr2;
+    LPOPENFILENAMEW ofnW = lfs->ofnW;
+    WCHAR tmpstr2[BUFFILE];
+    WCHAR *bs;
+
+    TRACE("%s\n", debugstr_w(tmpstr));
+    if(ofnW->Flags & OFN_NOVALIDATE)
+        tmpstr2[0] = '\0';
+    else
+        GetCurrentDirectoryW(BUFFILE, tmpstr2);
+    lenstr2 = strlenW(tmpstr2);
+    if (lenstr2 > 3)
+        tmpstr2[lenstr2++]='\\';
+    lstrcpynW(tmpstr2+lenstr2, tmpstr, BUFFILE-lenstr2);
+    if (ofnW->lpstrFile)
+        lstrcpynW(ofnW->lpstrFile, tmpstr2, ofnW->nMaxFile);
+    if((bs = strrchrW(tmpstr2, '\\')) != NULL)
+        ofnW->nFileOffset = bs - tmpstr2 +1;
+    else
+        ofnW->nFileOffset = 0;
+    ofnW->nFileExtension = 0;
+    while(tmpstr2[ofnW->nFileExtension] != '.' && tmpstr2[ofnW->nFileExtension] != '\0')
+        ofnW->nFileExtension++;
+    if (tmpstr2[ofnW->nFileExtension] == '\0')
+        ofnW->nFileExtension = 0;
+    else
+        ofnW->nFileExtension++;
+    /* update the real client structures if any */
+    if (lfs->ofn16)
+    { /* we have to convert to short (8.3) path */
+       char tmp[1024]; /* MAX_PATHNAME_LEN */
+       LPOPENFILENAME16 ofn16 = lfs->ofn16;
+        char *dest = MapSL(ofn16->lpstrFile);
+        char *bs16;
+        if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFile, -1,
+                                  tmp, sizeof(tmp), NULL, NULL ))
+            tmp[sizeof(tmp)-1] = 0;
+       GetShortPathNameA(tmp, dest, ofn16->nMaxFile);
+
+       /* the same procedure as every year... */
+        if((bs16 = strrchr(dest, '\\')) != NULL)
+            ofn16->nFileOffset = bs16 - dest +1;
+        else
+            ofn16->nFileOffset = 0;
+        ofn16->nFileExtension = 0;
+        while(dest[ofn16->nFileExtension] != '.' && dest[ofn16->nFileExtension] != '\0')
+            ofn16->nFileExtension++;
+        if (dest[ofn16->nFileExtension] == '\0')
+            ofn16->nFileExtension = 0;
+        else
+            ofn16->nFileExtension++;
+    }
+    if (lfs->ofnA)
+    {
+        if (ofnW->nMaxFile &&
+            !WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFile, -1,
+                                  lfs->ofnA->lpstrFile, ofnW->nMaxFile, NULL, NULL ))
+            lfs->ofnA->lpstrFile[ofnW->nMaxFile-1] = 0;
+        lfs->ofnA->nFileOffset = ofnW->nFileOffset;
+        lfs->ofnA->nFileExtension = ofnW->nFileExtension;
+    }
+}
+
+/***********************************************************************
+ *                              FILEDLG_UpdateFileTitle         [internal]
+ *      update the displayed file name (without path)
+ */
+void FILEDLG_UpdateFileTitle(LFSPRIVATE lfs)
+{
+  LONG lRet;
+  LPOPENFILENAMEW ofnW = lfs->ofnW;
+  if (ofnW->lpstrFileTitle != NULL)
+  {
+    lRet = SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETCURSEL, 0, 0);
+    SendDlgItemMessageW(lfs->hwnd, lst1, LB_GETTEXT, lRet,
+                             (LPARAM)ofnW->lpstrFileTitle );
+    if (lfs->ofn16)
+    {
+        char *dest = MapSL(lfs->ofn16->lpstrFileTitle);
+        if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFileTitle, -1,
+                                  dest, ofnW->nMaxFileTitle, NULL, NULL ))
+            dest[ofnW->nMaxFileTitle-1] = 0;
+    }
+    if (lfs->ofnA)
+    {
+        if (!WideCharToMultiByte( CP_ACP, 0, ofnW->lpstrFileTitle, -1,
+                                  lfs->ofnA->lpstrFileTitle, ofnW->nMaxFileTitle, NULL, NULL ))
+            lfs->ofnA->lpstrFileTitle[ofnW->nMaxFileTitle-1] = 0;
+    }
+  }
+}
+
+/***********************************************************************
+ *                              FILEDLG_DirListDblClick         [internal]
+ */
+static LRESULT FILEDLG_DirListDblClick( LFSPRIVATE lfs )
+{
+  LONG lRet;
+  HWND hWnd = lfs->hwnd;
+  LPWSTR pstr;
+  WCHAR tmpstr[BUFFILE];
+
+  /* get the raw string (with brackets) */
+  lRet = SendDlgItemMessageW(hWnd, lst2, LB_GETCURSEL, 0, 0);
+  if (lRet == LB_ERR) return TRUE;
+  pstr = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC);
+  SendDlgItemMessageW(hWnd, lst2, LB_GETTEXT, lRet,
+                    (LPARAM)pstr);
+  strcpyW( tmpstr, pstr );
+  HeapFree(GetProcessHeap(), 0, pstr);
+  /* get the selected directory in tmpstr */
+  if (tmpstr[0] == '[')
+    {
+      tmpstr[lstrlenW(tmpstr) - 1] = 0;
+      strcpyW(tmpstr,tmpstr+1);
+    }
+  strcatW(tmpstr, FILE_bslash);
+
+  FILEDLG_ScanDir(hWnd, tmpstr);
+  /* notify the app */
+  if (lfs->hook)
+    {
+      if (FILEDLG_CallWindowProc(lfs, lfs->lbselchstring, lst2,
+              MAKELONG(lRet,CD_LBSELCHANGE)))
+        return TRUE;
+    }
+  return TRUE;
+}
+
+/***********************************************************************
+ *                              FILEDLG_FileListSelect         [internal]
+ *    called when a new item is picked in the file list
+ */
+static LRESULT FILEDLG_FileListSelect( LFSPRIVATE lfs )
+{
+    LONG lRet;
+    HWND hWnd = lfs->hwnd;
+    LPWSTR pstr;
+
+    lRet = SendDlgItemMessageW(hWnd, lst1, LB_GETCURSEL16, 0, 0);
+    if (lRet == LB_ERR)
+        return TRUE;
+
+    /* set the edit control to the choosen file */
+    if ((pstr = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC)))
+    {
+        SendDlgItemMessageW(hWnd, lst1, LB_GETTEXT, lRet,
+                       (LPARAM)pstr);
+        SetDlgItemTextW( hWnd, edt1, pstr );
+        HeapFree(GetProcessHeap(), 0, pstr);
+    }
+    if (lfs->hook)
+    {
+        FILEDLG_CallWindowProc(lfs, lfs->lbselchstring, lst1,
+                           MAKELONG(lRet,CD_LBSELCHANGE));
+    }
+    /* FIXME: for OFN_ALLOWMULTISELECT we need CD_LBSELSUB, CD_SELADD,
+           CD_LBSELNOITEMS */
+    return TRUE;
+}
+
+/***********************************************************************
+ *                              FILEDLG_TestPath      [internal]
+ *      before accepting the file name, test if it includes wild cards
+ *      tries to scan the directory and returns TRUE if no error.
+ */
+static LRESULT FILEDLG_TestPath( LFSPRIVATE lfs, LPWSTR path )
+{
+    HWND hWnd = lfs->hwnd;
+    LPWSTR pBeginFileName, pstr2;
+    WCHAR tmpstr2[BUFFILE];
+
+    pBeginFileName = strrchrW(path, '\\');
+    if (pBeginFileName == NULL)
+       pBeginFileName = strrchrW(path, ':');
+
+    if (strchrW(path,'*') != NULL || strchrW(path,'?') != NULL)
+    {
+        /* edit control contains wildcards */
+        if (pBeginFileName != NULL)
+        {
+           lstrcpynW(tmpstr2, pBeginFileName + 1, BUFFILE);
+           *(pBeginFileName + 1) = 0;
+       }
+       else
+       {
+           strcpyW(tmpstr2, path);
+            if(!(lfs->ofnW->Flags & OFN_NOVALIDATE))
+                *path = 0;
+        }
+
+        TRACE("path=%s, tmpstr2=%s\n", debugstr_w(path), debugstr_w(tmpstr2));
+        SetDlgItemTextW( hWnd, edt1, tmpstr2 );
+        FILEDLG_ScanDir(hWnd, path);
+        return (lfs->ofnW->Flags & OFN_NOVALIDATE) ? TRUE : FALSE;
+    }
+
+    /* no wildcards, we might have a directory or a filename */
+    /* try appending a wildcard and reading the directory */
+
+    pstr2 = path + lstrlenW(path);
+    if (pBeginFileName == NULL || *(pBeginFileName + 1) != 0)
+        strcatW(path, FILE_bslash);
+
+    /* if ScanDir succeeds, we have changed the directory */
+    if (FILEDLG_ScanDir(hWnd, path))
+        return FALSE; /* and path is not a valid file name */
+
+    /* if not, this must be a filename */
+
+    *pstr2 = 0; /* remove the wildcard added before */
+
+    if (pBeginFileName != NULL)
+    {
+        /* strip off the pathname */
+        *pBeginFileName = 0;
+        SetDlgItemTextW( hWnd, edt1, pBeginFileName + 1 );
+
+        lstrcpynW(tmpstr2, pBeginFileName + 1, sizeof(tmpstr2)/sizeof(WCHAR) );
+        /* Should we MessageBox() if this fails? */
+        if (!FILEDLG_ScanDir(hWnd, path))
+        {
+            return FALSE;
+        }
+        strcpyW(path, tmpstr2);
+    }
+    else
+        SetDlgItemTextW( hWnd, edt1, path );
+    return TRUE;
+}
+
+/***********************************************************************
+ *                              FILEDLG_Validate               [internal]
+ *   called on: click Ok button, Enter in edit, DoubleClick in file list
+ */
+static LRESULT FILEDLG_Validate( LFSPRIVATE lfs, LPWSTR path, UINT control, INT itemIndex,
+                                 BOOL internalUse )
+{
+    LONG lRet;
+    HWND hWnd = lfs->hwnd;
+    OPENFILENAMEW ofnsav;
+    LPOPENFILENAMEW ofnW = lfs->ofnW;
+    WCHAR filename[BUFFILE];
+
+    ofnsav = *ofnW; /* for later restoring */
+
+    /* get current file name */
+    if (path)
+        lstrcpynW(filename, path, sizeof(filename)/sizeof(WCHAR));
+    else
+        GetDlgItemTextW( hWnd, edt1, filename, sizeof(filename)/sizeof(WCHAR));
+
+    TRACE("got filename = %s\n", debugstr_w(filename));
+    /* if we did not click in file list to get there */
+    if (control != lst1)
+    {
+        if (!FILEDLG_TestPath( lfs, filename) )
+           return FALSE;
+    }
+    FILEDLG_UpdateResult(lfs, filename);
+
+    if (internalUse)
+    { /* called internally after a change in a combo */
+        if (lfs->hook)
+        {
+             FILEDLG_CallWindowProc(lfs, lfs->lbselchstring, control,
+                             MAKELONG(itemIndex,CD_LBSELCHANGE));
+        }
+        return TRUE;
+    }
+
+    FILEDLG_UpdateFileTitle(lfs);
+    if (lfs->hook)
+    {
+        lRet = (BOOL)FILEDLG_CallWindowProc(lfs, lfs->fileokstring,
+                  0, lfs->lParam );
+        if (lRet)
+        {
+            *ofnW = ofnsav; /* restore old state */
+            return FALSE;
+        }
+    }
+    if ((ofnW->Flags & OFN_ALLOWMULTISELECT) && (ofnW->Flags & OFN_EXPLORER))
+    {
+        if (ofnW->lpstrFile)
+        {
+            LPWSTR str = (LPWSTR)ofnW->lpstrFile;
+            LPWSTR ptr = strrchrW(str, '\\');
+           str[lstrlenW(str) + 1] = '\0';
+           *ptr = 0;
+        }
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *                              FILEDLG_DiskChange             [internal]
+ *    called when a new item is picked in the disk selection combo
+ */
+static LRESULT FILEDLG_DiskChange( LFSPRIVATE lfs )
+{
+    LONG lRet;
+    HWND hWnd = lfs->hwnd;
+    LPWSTR pstr;
+    WCHAR diskname[BUFFILE];
+
+    FILEDLG_StripEditControl(hWnd);
+    lRet = SendDlgItemMessageW(hWnd, cmb2, CB_GETCURSEL, 0, 0L);
+    if (lRet == LB_ERR)
+        return 0;
+    pstr = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC);
+    SendDlgItemMessageW(hWnd, cmb2, CB_GETLBTEXT, lRet,
+                         (LPARAM)pstr);
+    wsprintfW(diskname, FILE_specc, pstr[2]);
+    HeapFree(GetProcessHeap(), 0, pstr);
+
+    return FILEDLG_Validate( lfs, diskname, cmb2, lRet, TRUE );
+}
+
+/***********************************************************************
+ *                              FILEDLG_FileTypeChange         [internal]
+ *    called when a new item is picked in the file type combo
+ */
+static LRESULT FILEDLG_FileTypeChange( LFSPRIVATE lfs )
+{
+    LONG lRet;
+    WCHAR diskname[BUFFILE];
+    LPWSTR pstr;
+
+    diskname[0] = 0;
+
+    lRet = SendDlgItemMessageW(lfs->hwnd, cmb1, CB_GETCURSEL, 0, 0);
+    if (lRet == LB_ERR)
+        return TRUE;
+    pstr = (LPWSTR)SendDlgItemMessageW(lfs->hwnd, cmb1, CB_GETITEMDATA, lRet, 0);
+    TRACE("Selected filter : %s\n", debugstr_w(pstr));
+    SetDlgItemTextW( lfs->hwnd, edt1, pstr );
+
+    return FILEDLG_Validate( lfs, NULL, cmb1, lRet, TRUE );
+}
+
+/***********************************************************************
+ *                              FILEDLG_WMCommand               [internal]
+ */
+static LRESULT FILEDLG_WMCommand(HWND hWnd, LPARAM lParam, UINT notification,
+       UINT control, LFSPRIVATE lfs )
+{
+    switch (control)
+    {
+        case lst1: /* file list */
+        FILEDLG_StripEditControl(hWnd);
+        if (notification == LBN_DBLCLK)
+        {
+            if (FILEDLG_Validate( lfs, NULL, control, 0, FALSE ))
+                EndDialog(hWnd, TRUE);
+            return TRUE;
+        }
+        else if (notification == LBN_SELCHANGE)
+            return FILEDLG_FileListSelect( lfs );
+        break;
+
+        case lst2: /* directory list */
+        FILEDLG_StripEditControl(hWnd);
+        if (notification == LBN_DBLCLK)
+            return FILEDLG_DirListDblClick( lfs );
+        break;
+
+        case cmb1: /* file type drop list */
+        if (notification == CBN_SELCHANGE)
+            return FILEDLG_FileTypeChange( lfs );
+        break;
+
+        case chx1:
+        break;
+
+        case pshHelp:
+        break;
+
+        case cmb2: /* disk dropdown combo */
+        if (notification == CBN_SELCHANGE)
+            return FILEDLG_DiskChange( lfs );
+        break;
+
+        case IDOK:
+        TRACE("OK pressed\n");
+        if (FILEDLG_Validate( lfs, NULL, control, 0, FALSE ))
+            EndDialog(hWnd, TRUE);
+        return TRUE;
+
+        case IDCANCEL:
+        EndDialog(hWnd, FALSE);
+        return TRUE;
+
+        case IDABORT: /* can be sent by the hook procedure */
+        EndDialog(hWnd, TRUE);
+        return TRUE;
+    }
+    return FALSE;
+}
+
+/***********************************************************************
+ *                              FILEDLG_MapDrawItemStruct       [internal]
+ *      map a 16 bits drawitem struct to 32
+ */
+static void FILEDLG_MapDrawItemStruct(LPDRAWITEMSTRUCT16 lpdis16, LPDRAWITEMSTRUCT lpdis)
+{
+    lpdis->CtlType = lpdis16->CtlType;
+    lpdis->CtlID = lpdis16->CtlID;
+    lpdis->itemID = lpdis16->itemID;
+    lpdis->itemAction = lpdis16->itemAction;
+    lpdis->itemState = lpdis16->itemState;
+    lpdis->hwndItem = HWND_32(lpdis16->hwndItem);
+    lpdis->hDC = HDC_32(lpdis16->hDC);
+    lpdis->rcItem.right = lpdis16->rcItem.right;
+    lpdis->rcItem.left = lpdis16->rcItem.left;
+    lpdis->rcItem.top = lpdis16->rcItem.top;
+    lpdis->rcItem.bottom = lpdis16->rcItem.bottom;
+    lpdis->itemData = lpdis16->itemData;
+}
+
+/************************************************************************
+ *                              FILEDLG_MapStringPairsToW       [internal]
+ *      map string pairs to Unicode
+ */
+static LPWSTR FILEDLG_MapStringPairsToW(LPCSTR strA, UINT size)
+{
+    LPCSTR s;
+    LPWSTR x;
+    int n, len;
+
+    s = strA;
+    while (*s)
+        s = s+strlen(s)+1;
+    s++;
+    n = s + 1 - strA; /* Don't forget the other \0 */
+    if (n < size) n = size;
+
+    len = MultiByteToWideChar( CP_ACP, 0, strA, n, NULL, 0 );
+    x = HeapAlloc(GetProcessHeap(),0, len * sizeof(WCHAR));
+    MultiByteToWideChar( CP_ACP, 0, strA, n, x, len );
+    return x;
+}
+
+
+/************************************************************************
+ *                              FILEDLG_DupToW                  [internal]
+ *      duplicates an Ansi string to unicode, with a buffer size
+ */
+LPWSTR FILEDLG_DupToW(LPCSTR str, DWORD size)
+{
+    LPWSTR strW = NULL;
+    if (str && (size > 0))
+    {
+        strW = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR));
+        if (strW) MultiByteToWideChar( CP_ACP, 0, str, -1, strW, size );
+    }
+    return strW;
+}
+
+
+/************************************************************************
+ *                              FILEDLG_MapOfnStructA          [internal]
+ *      map a 32 bits Ansi structure to an Unicode one
+ */
+void FILEDLG_MapOfnStructA(LPOPENFILENAMEA ofnA, LPOPENFILENAMEW ofnW, BOOL open)
+{
+    LPCSTR str;
+    UNICODE_STRING usBuffer;
+
+    ofnW->lStructSize = sizeof(OPENFILENAMEW);
+    ofnW->hwndOwner = ofnA->hwndOwner;
+    ofnW->hInstance = ofnA->hInstance;
+    if (ofnA->lpstrFilter)
+        ofnW->lpstrFilter = FILEDLG_MapStringPairsToW(ofnA->lpstrFilter, 0);
+
+    if ((ofnA->lpstrCustomFilter) && (*(ofnA->lpstrCustomFilter)))
+        ofnW->lpstrCustomFilter = FILEDLG_MapStringPairsToW(ofnA->lpstrCustomFilter, ofnA->nMaxCustFilter);
+    ofnW->nMaxCustFilter = ofnA->nMaxCustFilter;
+    ofnW->nFilterIndex = ofnA->nFilterIndex;
+    ofnW->nMaxFile = ofnA->nMaxFile;
+    ofnW->lpstrFile = FILEDLG_DupToW(ofnA->lpstrFile, ofnW->nMaxFile);
+    ofnW->nMaxFileTitle = ofnA->nMaxFileTitle;
+    ofnW->lpstrFileTitle = FILEDLG_DupToW(ofnA->lpstrFileTitle, ofnW->nMaxFileTitle);
+    if (ofnA->lpstrInitialDir)
+    {
+        RtlCreateUnicodeStringFromAsciiz (&usBuffer,ofnA->lpstrInitialDir);
+        ofnW->lpstrInitialDir = usBuffer.Buffer;
+    }
+    if (ofnA->lpstrTitle)
+        str = ofnA->lpstrTitle;
+    else
+        /* Allocates default title (FIXME : get it from resource) */
+        str = open ? defaultopen:defaultsave;
+    RtlCreateUnicodeStringFromAsciiz (&usBuffer,ofnA->lpstrTitle);
+    ofnW->lpstrTitle = usBuffer.Buffer;
+    ofnW->Flags = ofnA->Flags;
+    ofnW->nFileOffset = ofnA->nFileOffset;
+    ofnW->nFileExtension = ofnA->nFileExtension;
+    ofnW->lpstrDefExt = FILEDLG_DupToW(ofnA->lpstrDefExt, 3);
+    if ((ofnA->Flags & OFN_ENABLETEMPLATE) && (ofnA->lpTemplateName))
+    {
+        if (HIWORD(ofnA->lpTemplateName))
+        {
+            RtlCreateUnicodeStringFromAsciiz (&usBuffer,ofnA->lpTemplateName);
+            ofnW->lpTemplateName = usBuffer.Buffer;
+        }
+        else /* numbered resource */
+            ofnW->lpTemplateName = (LPWSTR) ofnA->lpTemplateName;
+    }
+}
+
+/************************************************************************
+ *                              FILEDLG_MapOfnStruct16          [internal]
+ *      map a 16 bits structure to an Unicode one
+ */
+void FILEDLG_MapOfnStruct16(LPOPENFILENAME16 ofn16, LPOPENFILENAMEW ofnW, BOOL open)
+{
+    OPENFILENAMEA ofnA;
+    /* first convert to linear pointers */
+    memset(&ofnA, 0, sizeof(OPENFILENAMEA));
+    ofnA.lStructSize = sizeof(OPENFILENAMEA);
+    ofnA.hwndOwner = HWND_32(ofn16->hwndOwner);
+    ofnA.hInstance = HINSTANCE_32(ofn16->hInstance);
+    if (ofn16->lpstrFilter)
+        ofnA.lpstrFilter = MapSL(ofn16->lpstrFilter);
+    if (ofn16->lpstrCustomFilter)
+        ofnA.lpstrCustomFilter = MapSL(ofn16->lpstrCustomFilter);
+    ofnA.nMaxCustFilter = ofn16->nMaxCustFilter;
+    ofnA.nFilterIndex = ofn16->nFilterIndex;
+    ofnA.lpstrFile = MapSL(ofn16->lpstrFile);
+    ofnA.nMaxFile = ofn16->nMaxFile;
+    ofnA.lpstrFileTitle = MapSL(ofn16->lpstrFileTitle);
+    ofnA.nMaxFileTitle = ofn16->nMaxFileTitle;
+    ofnA.lpstrInitialDir = MapSL(ofn16->lpstrInitialDir);
+    ofnA.lpstrTitle = MapSL(ofn16->lpstrTitle);
+    ofnA.Flags = ofn16->Flags;
+    ofnA.nFileOffset = ofn16->nFileOffset;
+    ofnA.nFileExtension = ofn16->nFileExtension;
+    ofnA.lpstrDefExt = MapSL(ofn16->lpstrDefExt);
+    if (HIWORD(ofn16->lpTemplateName))
+        ofnA.lpTemplateName = MapSL(ofn16->lpTemplateName);
+    else
+        ofnA.lpTemplateName = (LPSTR) ofn16->lpTemplateName; /* ressource number */
+    /* now calls the 32 bits Ansi to Unicode version to complete the job */
+    FILEDLG_MapOfnStructA(&ofnA, ofnW, open);
+}
+
+/************************************************************************
+ *                              FILEDLG_DestroyPrivate            [internal]
+ *      destroys the private object
+ */
+static void FILEDLG_DestroyPrivate(LFSPRIVATE lfs)
+{
+    HWND hwnd;
+    if (!lfs) return;
+    hwnd = lfs->hwnd;
+    /* free resources for a 16 bits dialog */
+    if (lfs->hResource16) FreeResource16(lfs->hResource16);
+    if (lfs->hGlobal16)
+    {
+        GlobalUnlock16(lfs->hGlobal16);
+        GlobalFree16(lfs->hGlobal16);
+    }
+    /* if ofnW has been allocated, have to free everything in it */
+    if (lfs->ofn16 || lfs->ofnA)
+    {
+       LPOPENFILENAMEW ofnW = lfs->ofnW;
+       if (ofnW->lpstrFilter) HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpstrFilter);
+       if (ofnW->lpstrCustomFilter) HeapFree(GetProcessHeap(), 0, ofnW->lpstrCustomFilter);
+       if (ofnW->lpstrFile) HeapFree(GetProcessHeap(), 0, ofnW->lpstrFile);
+       if (ofnW->lpstrFileTitle) HeapFree(GetProcessHeap(), 0, ofnW->lpstrFileTitle);
+       if (ofnW->lpstrInitialDir) HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpstrInitialDir);
+       if (ofnW->lpstrTitle) HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpstrTitle);
+       if ((ofnW->lpTemplateName) && (HIWORD(ofnW->lpTemplateName)))
+           HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpTemplateName);
+       HeapFree(GetProcessHeap(), 0, ofnW);
+    }
+    TRACE("destroying private allocation %p\n", lfs);
+    HeapFree(GetProcessHeap(), 0, lfs);
+    RemovePropA(hwnd, OFN_PROP);
+}
+
+/************************************************************************
+ *                              FILEDLG_AllocPrivate            [internal]
+ *      allocate a private object to hold 32 bits Unicode
+ *      structure that will be used throughtout the calls, while
+ *      keeping available the original structures and a few variables
+ *      On entry : type = dialog procedure type (16,32A,32W)
+ *                 dlgType = dialog type (open or save)
+ */
+static LFSPRIVATE FILEDLG_AllocPrivate(LPARAM lParam, int type, UINT dlgType)
+{
+    LFSPRIVATE lfs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct FSPRIVATE));
+    LFSPRIVATE ret;
+    TRACE("alloc private buf %p\n", lfs);
+    if (!lfs) return NULL;
+    lfs->hook = FALSE;
+    lfs->lParam = lParam;
+    if (dlgType == OPEN_DIALOG)
+        lfs->open = TRUE;
+    else
+        lfs->open = FALSE;
+    lfs->lbselchstring = RegisterWindowMessageA(LBSELCHSTRINGA);
+    lfs->fileokstring = RegisterWindowMessageA(FILEOKSTRINGA);
+    switch(type)
+    {
+        case LFS16:
+        lfs->ofn16 = MapSL(lParam);
+        if (lfs->ofn16->Flags & OFN_ENABLEHOOK)
+            if (lfs->ofn16->lpfnHook)
+                lfs->hook = TRUE;
+
+        break;
+
+        case LFS32A:
+        lfs->ofnA = (LPOPENFILENAMEA) lParam;
+        if (lfs->ofnA->Flags & OFN_ENABLEHOOK)
+            if (lfs->ofnA->lpfnHook)
+                lfs->hook = TRUE;
+        break;
+
+        case LFS32W:
+        lfs->ofnW = (LPOPENFILENAMEW) lParam;
+        if (lfs->ofnW->Flags & OFN_ENABLEHOOK)
+            if (lfs->ofnW->lpfnHook)
+                lfs->hook = TRUE;
+        break;
+    }
+    ret = lfs;
+    if (!lfs->ofnW)
+    { /* this structure is needed internally, so create it */
+        lfs->ofnW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(OPENFILENAMEW));
+        if (lfs->ofnW)
+        {
+            if (lfs->ofn16)
+                FILEDLG_MapOfnStruct16(lfs->ofn16, lfs->ofnW, lfs->open);
+            if (lfs->ofnA)
+                FILEDLG_MapOfnStructA(lfs->ofnA, lfs->ofnW, lfs->open);
+        }
+        else
+            ret = NULL;
+    }
+    if (lfs->ofn16)
+    {
+        if (!Get16BitsTemplate(lfs)) ret = NULL;
+    }
+    else
+        if (!Get32BitsTemplate(lfs)) ret = NULL;
+    if (!ret) FILEDLG_DestroyPrivate(lfs);
+    return ret;
+}
+
+/***********************************************************************
+ *                              FILEDLG_CallWindowProc16          [internal]
+ *
+ *      Call the appropriate hook
+ */
+static BOOL FILEDLG_CallWindowProc16(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam,
+                                   LPARAM lParam)
+{
+    if (lfs->ofn16)
+    {
+        return (BOOL16) CallWindowProc16(
+          (WNDPROC16)lfs->ofn16->lpfnHook, HWND_16(lfs->hwnd),
+          (UINT16)wMsg, (WPARAM16)wParam, lParam);
+    }
+    return FALSE;
+}
+
+/***********************************************************************
+ *                              FILEDLG_WMInitDialog16            [internal]
+ *      The is a duplicate of the 32bit FILEDLG_WMInitDialog function 
+ *      The only differnce is that it calls FILEDLG_CallWindowProc16 
+ *      for a 16 bit Window Proc.
+ */
+
+static LONG FILEDLG_WMInitDialog16(HWND hWnd, WPARAM wParam, LPARAM lParam)
+{
+  int i, n;
+  WCHAR tmpstr[BUFFILE];
+  LPWSTR pstr, old_pstr;
+  LPOPENFILENAMEW ofn;
+  LFSPRIVATE lfs = (LFSPRIVATE) lParam;
+
+  if (!lfs) return FALSE;
+  SetPropA(hWnd, OFN_PROP, (HANDLE)lfs);
+  lfs->hwnd = hWnd;
+  ofn = lfs->ofnW;
+
+  TRACE("flags=%lx initialdir=%s\n", ofn->Flags, debugstr_w(ofn->lpstrInitialDir));
+
+  SetWindowTextW( hWnd, ofn->lpstrTitle );
+  /* read custom filter information */
+  if (ofn->lpstrCustomFilter)
+    {
+      pstr = ofn->lpstrCustomFilter;
+      n = 0;
+      TRACE("lpstrCustomFilter = %p\n", pstr);
+      while(*pstr)
+       {
+         old_pstr = pstr;
+          i = SendDlgItemMessageW(hWnd, cmb1, CB_ADDSTRING, 0,
+                                   (LPARAM)(ofn->lpstrCustomFilter) + n );
+          n += lstrlenW(pstr) + 1;
+         pstr += lstrlenW(pstr) + 1;
+         TRACE("add str=%s associated to %s\n",
+                debugstr_w(old_pstr), debugstr_w(pstr));
+          SendDlgItemMessageW(hWnd, cmb1, CB_SETITEMDATA, i, (LPARAM)pstr);
+          n += lstrlenW(pstr) + 1;
+         pstr += lstrlenW(pstr) + 1;
+       }
+    }
+  /* read filter information */
+  if (ofn->lpstrFilter) {
+       pstr = (LPWSTR) ofn->lpstrFilter;
+       n = 0;
+       while(*pstr) {
+         old_pstr = pstr;
+         i = SendDlgItemMessageW(hWnd, cmb1, CB_ADDSTRING, 0,
+                                      (LPARAM)(ofn->lpstrFilter + n) );
+         n += lstrlenW(pstr) + 1;
+         pstr += lstrlenW(pstr) + 1;
+         TRACE("add str=%s associated to %s\n",
+                debugstr_w(old_pstr), debugstr_w(pstr));
+         SendDlgItemMessageW(hWnd, cmb1, CB_SETITEMDATA, i, (LPARAM)pstr);
+         n += lstrlenW(pstr) + 1;
+         pstr += lstrlenW(pstr) + 1;
+       }
+  }
+  /* set default filter */
+  if (ofn->nFilterIndex == 0 && ofn->lpstrCustomFilter == NULL)
+       ofn->nFilterIndex = 1;
+  SendDlgItemMessageW(hWnd, cmb1, CB_SETCURSEL, ofn->nFilterIndex - 1, 0);
+  lstrcpynW(tmpstr, FILEDLG_GetFileType(ofn->lpstrCustomFilter,
+            (LPWSTR)ofn->lpstrFilter, ofn->nFilterIndex - 1),BUFFILE);
+  TRACE("nFilterIndex = %ld, SetText of edt1 to %s\n",
+                       ofn->nFilterIndex, debugstr_w(tmpstr));
+  SetDlgItemTextW( hWnd, edt1, tmpstr );
+  /* get drive list */
+  *tmpstr = 0;
+  DlgDirListComboBoxW(hWnd, tmpstr, cmb2, 0, DDL_DRIVES | DDL_EXCLUSIVE);
+  /* read initial directory */
+  /* FIXME: Note that this is now very version-specific (See MSDN description of
+   * the OPENFILENAME structure).  For example under 2000/XP any path in the
+   * lpstrFile overrides the lpstrInitialDir, but not under 95/98/ME
+   */
+  if (ofn->lpstrInitialDir != NULL)
+    {
+      int len;
+      lstrcpynW(tmpstr, ofn->lpstrInitialDir, 511);
+      len = lstrlenW(tmpstr);
+      if (len > 0 && tmpstr[len-1] != '\\'  && tmpstr[len-1] != ':') {
+        tmpstr[len]='\\';
+        tmpstr[len+1]='\0';
+      }
+    }
+  else
+    *tmpstr = 0;
+  if (!FILEDLG_ScanDir(hWnd, tmpstr)) {
+    *tmpstr = 0;
+    if (!FILEDLG_ScanDir(hWnd, tmpstr))
+      WARN("Couldn't read initial directory %s!\n", debugstr_w(tmpstr));
+  }
+  /* select current drive in combo 2, omit missing drives */
+  {
+      char dir[MAX_PATH];
+      char str[4] = "a:\\";
+      GetCurrentDirectoryA( sizeof(dir), dir );
+      for(i = 0, n = -1; i < 26; i++)
+      {
+          str[0] = 'a' + i;
+          if (GetDriveTypeA(str) > DRIVE_NO_ROOT_DIR) n++;
+          if (toupper(str[0]) == toupper(dir[0])) break;
+      }
+  }
+  SendDlgItemMessageW(hWnd, cmb2, CB_SETCURSEL, n, 0);
+  if (!(ofn->Flags & OFN_SHOWHELP))
+    ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE);
+  if (ofn->Flags & OFN_HIDEREADONLY)
+    ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE);
+  if (lfs->hook)
+      return (BOOL) FILEDLG_CallWindowProc16(lfs, WM_INITDIALOG, wParam, lfs->lParam);
+  return TRUE;
+}
+
+/***********************************************************************
+ *                              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_CallWindowProc16(lfs, wMsg, wParam, lParam);
+            if (lRet)
+                return lRet;         /* else continue message processing */
+        }
+    switch (wMsg)
+    {
+    case WM_INITDIALOG:
+        return FILEDLG_WMInitDialog16(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_CallWindowProc16(lfs, wMsg, wParam, lParam);
+   if (lRet)
+    return lRet;         /* else continue message processing */
+  }
+  switch (wMsg) {
+   case WM_INITDIALOG:
+      return FILEDLG_WMInitDialog16(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;
+}
diff --git a/reactos/lib/comdlg32/filedlgbrowser.c b/reactos/lib/comdlg32/filedlgbrowser.c
new file mode 100644 (file)
index 0000000..db1ade8
--- /dev/null
@@ -0,0 +1,957 @@
+/*
+ *  Implementation of IShellBrowser for the File Open common dialog
+ *
+ * Copyright 1999 Francois Boisvert
+ * Copyright 1999, 2000 Juergen Schmied
+ *
+ * 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 <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winreg.h"
+
+#define NO_SHLWAPI_STREAM
+#include "shlwapi.h"
+#include "filedlgbrowser.h"
+#include "cdlg.h"
+#include "shlguid.h"
+#include "servprov.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+typedef struct
+{
+
+    ICOM_VTABLE(IShellBrowser)   * lpVtbl;
+    ICOM_VTABLE(ICommDlgBrowser) * lpVtblCommDlgBrowser;
+    ICOM_VTABLE(IServiceProvider)* lpVtblServiceProvider;
+    DWORD ref;                                  /* Reference counter */
+    HWND hwndOwner;                             /* Owner dialog of the interface */
+
+} IShellBrowserImpl;
+
+/**************************************************************************
+*   vtable
+*/
+static ICOM_VTABLE(IShellBrowser) IShellBrowserImpl_Vtbl;
+static ICOM_VTABLE(ICommDlgBrowser) IShellBrowserImpl_ICommDlgBrowser_Vtbl;
+static ICOM_VTABLE(IServiceProvider) IShellBrowserImpl_IServiceProvider_Vtbl;
+
+/**************************************************************************
+*   Local Prototypes
+*/
+
+HRESULT IShellBrowserImpl_ICommDlgBrowser_OnSelChange(ICommDlgBrowser *iface, IShellView *ppshv);
+#if 0
+LPITEMIDLIST GetSelectedPidl(IShellView *ppshv);
+#endif
+
+/**************************************************************************
+*   External Prototypes
+*/
+extern const char *FileOpenDlgInfosStr;
+
+extern HRESULT          GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST pidl,DWORD dwFlags,LPSTR lpstrFileName);
+extern HRESULT          GetFileName(HWND hwnd, LPITEMIDLIST pidl, LPSTR lpstrFileName);
+extern IShellFolder*    GetShellFolderFromPidl(LPITEMIDLIST pidlAbs);
+extern LPITEMIDLIST     GetParentPidl(LPITEMIDLIST pidl);
+extern LPITEMIDLIST     GetPidlFromName(IShellFolder *psf,LPCSTR lpcstrFileName);
+
+extern BOOL    FILEDLG95_SHELL_FillIncludedItemList(HWND hwnd,
+                                                        LPITEMIDLIST pidlCurrentFolder,
+                                                        LPSTR lpstrMask);
+
+extern int     FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl);
+extern BOOL    FILEDLG95_OnOpen(HWND hwnd);
+extern HRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode);
+
+
+/*
+ *   Helper functions
+ */
+
+static void COMDLG32_UpdateCurrentDir(FileOpenDlgInfos *fodInfos)
+{
+    char lpstrPath[MAX_PATH];
+    if(SHGetPathFromIDListA(fodInfos->ShellInfos.pidlAbsCurrent,lpstrPath)) {
+        SetCurrentDirectoryA(lpstrPath);
+        TRACE("new current folder %s\n", lpstrPath);
+    }
+}
+
+/* copied from shell32 to avoid linking to it */
+static HRESULT COMDLG32_StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPCITEMIDLIST pidl)
+{
+       TRACE("dest=%p len=0x%lx strret=%p pidl=%p stub\n",dest,len,src,pidl);
+
+       switch (src->uType)
+       {
+         case STRRET_WSTR:
+           lstrcpynW((LPWSTR)dest, src->u.pOleStr, len);
+           COMDLG32_SHFree(src->u.pOleStr);
+           break;
+
+         case STRRET_CSTR:
+            if (len && !MultiByteToWideChar( CP_ACP, 0, src->u.cStr, -1, (LPWSTR)dest, len ))
+                ((LPWSTR)dest)[len-1] = 0;
+           break;
+
+         case STRRET_OFFSET:
+           if (pidl)
+           {
+                if (len && !MultiByteToWideChar( CP_ACP, 0, ((LPCSTR)&pidl->mkid)+src->u.uOffset,
+                                                 -1, (LPWSTR)dest, len ))
+                    ((LPWSTR)dest)[len-1] = 0;
+           }
+           break;
+
+         default:
+           FIXME("unknown type!\n");
+           if (len)
+           { *(LPWSTR)dest = '\0';
+           }
+           return(FALSE);
+       }
+       return S_OK;
+}
+
+/*
+ *     IShellBrowser
+ */
+
+/**************************************************************************
+*  IShellBrowserImpl_Construct
+*/
+IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner)
+{
+    IShellBrowserImpl *sb;
+    FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwndOwner,FileOpenDlgInfosStr);
+
+    sb=(IShellBrowserImpl*)COMDLG32_SHAlloc(sizeof(IShellBrowserImpl));
+
+    /* Initialisation of the member variables */
+    sb->ref=1;
+    sb->hwndOwner = hwndOwner;
+
+    /* Initialisation of the vTables */
+    sb->lpVtbl = &IShellBrowserImpl_Vtbl;
+    sb->lpVtblCommDlgBrowser = &IShellBrowserImpl_ICommDlgBrowser_Vtbl;
+    sb->lpVtblServiceProvider = &IShellBrowserImpl_IServiceProvider_Vtbl;
+    SHGetSpecialFolderLocation(hwndOwner, CSIDL_DESKTOP,
+                               &fodInfos->ShellInfos.pidlAbsCurrent);
+
+    TRACE("%p\n", sb);
+
+    return (IShellBrowser *) sb;
+}
+
+/***************************************************************************
+*  IShellBrowserImpl_QueryInterface
+*/
+HRESULT WINAPI IShellBrowserImpl_QueryInterface(IShellBrowser *iface,
+                                            REFIID riid,
+                                            LPVOID *ppvObj)
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n\t%s\n", This, debugstr_guid(riid));
+
+    *ppvObj = NULL;
+
+    if(IsEqualIID(riid, &IID_IUnknown))          /*IUnknown*/
+    { *ppvObj = This;
+    }
+    else if(IsEqualIID(riid, &IID_IOleWindow))  /*IOleWindow*/
+    { *ppvObj = (IOleWindow*)This;
+    }
+
+    else if(IsEqualIID(riid, &IID_IShellBrowser))  /*IShellBrowser*/
+    { *ppvObj = (IShellBrowser*)This;
+    }
+
+    else if(IsEqualIID(riid, &IID_ICommDlgBrowser))  /*ICommDlgBrowser*/
+    { *ppvObj = (ICommDlgBrowser*) &(This->lpVtblCommDlgBrowser);
+    }
+
+    else if(IsEqualIID(riid, &IID_IServiceProvider))  /* IServiceProvider */
+    { *ppvObj = (ICommDlgBrowser*) &(This->lpVtblServiceProvider);
+    }
+
+    if(*ppvObj)
+    { IUnknown_AddRef( (IShellBrowser*) *ppvObj);
+      return S_OK;
+    }
+    FIXME("Unknown interface requested\n");
+    return E_NOINTERFACE;
+}
+
+/**************************************************************************
+*  IShellBrowser::AddRef
+*/
+ULONG WINAPI IShellBrowserImpl_AddRef(IShellBrowser * iface)
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p,%lu)\n", This, This->ref);
+
+    return ++(This->ref);
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_Release
+*/
+ULONG WINAPI IShellBrowserImpl_Release(IShellBrowser * iface)
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p,%lu)\n", This, This->ref);
+
+    if (!--(This->ref))
+    {
+      COMDLG32_SHFree(This);
+      TRACE("-- destroyed\n");
+      return 0;
+    }
+    return This->ref;
+}
+
+/*
+ * IOleWindow
+ */
+
+/**************************************************************************
+*  IShellBrowserImpl_GetWindow  (IOleWindow)
+*
+*  Inherited from IOleWindow::GetWindow
+*
+*  See Windows documentation for more details
+*
+*  Note : We will never be window less in the File Open dialog
+*
+*/
+HRESULT WINAPI IShellBrowserImpl_GetWindow(IShellBrowser * iface,
+                                           HWND * phwnd)
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    if(!This->hwndOwner)
+        return E_FAIL;
+
+    *phwnd = This->hwndOwner;
+
+    return (*phwnd) ? S_OK : E_UNEXPECTED;
+
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_ContextSensitiveHelp
+*/
+HRESULT WINAPI IShellBrowserImpl_ContextSensitiveHelp(IShellBrowser * iface,
+                                                      BOOL fEnterMode)
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+
+/*
+ * IShellBrowser
+ */
+
+/**************************************************************************
+*  IShellBrowserImpl_BrowseObject
+*
+*  See Windows documentation on IShellBrowser::BrowseObject for more details
+*
+*  This function will override user specified flags and will always
+*  use SBSP_DEFBROWSER and SBSP_DEFMODE.
+*/
+HRESULT WINAPI IShellBrowserImpl_BrowseObject(IShellBrowser *iface,
+                                              LPCITEMIDLIST pidl,
+                                              UINT wFlags)
+{
+    HRESULT hRes;
+    IShellFolder *psfTmp;
+    IShellView *psvTmp;
+    FileOpenDlgInfos *fodInfos;
+    LPITEMIDLIST pidlTmp;
+    HWND hwndView;
+    HWND hDlgWnd;
+    BOOL bViewHasFocus;
+    RECT rectView;
+
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)(pidl=%p,flags=0x%08x(%s))\n", This, pidl, wFlags,
+       (wFlags & SBSP_RELATIVE) ? "SBSP_RELATIVE" :
+       (wFlags & SBSP_PARENT) ? "SBSP_PARENT" :
+       (wFlags & SBSP_ABSOLUTE) ? "SBSP_ABSOLUTE" : "SBPS_????");
+
+    fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr);
+
+    /* Format the pidl according to its parameter's category */
+    if(wFlags & SBSP_RELATIVE)
+    {
+
+        /* SBSP_RELATIVE  A relative pidl (relative from the current folder) */
+        if(FAILED(hRes = IShellFolder_BindToObject(fodInfos->Shell.FOIShellFolder,
+             pidl, NULL, &IID_IShellFolder, (LPVOID *)&psfTmp)))
+        {
+            ERR("bind to object failed\n");
+           return hRes;
+        }
+        /* create an absolute pidl */
+        pidlTmp = COMDLG32_PIDL_ILCombine(fodInfos->ShellInfos.pidlAbsCurrent,
+                                                        (LPITEMIDLIST)pidl);
+    }
+    else if(wFlags & SBSP_PARENT)
+    {
+        /* Browse the parent folder (ignores the pidl) */
+        pidlTmp = GetParentPidl(fodInfos->ShellInfos.pidlAbsCurrent);
+        psfTmp = GetShellFolderFromPidl(pidlTmp);
+
+    }
+    else /* SBSP_ABSOLUTE is 0x0000 */
+    {
+        /* An absolute pidl (relative from the desktop) */
+        pidlTmp =  COMDLG32_PIDL_ILClone((LPITEMIDLIST)pidl);
+        psfTmp = GetShellFolderFromPidl(pidlTmp);
+    }
+
+    if(!psfTmp)
+    {
+      ERR("could not browse to folder\n");
+      return E_FAIL;
+    }
+
+    /* If the pidl to browse to is equal to the actual pidl ...
+       do nothing and pretend you did it*/
+    if(COMDLG32_PIDL_ILIsEqual(pidlTmp,fodInfos->ShellInfos.pidlAbsCurrent))
+    {
+        IShellFolder_Release(psfTmp);
+       COMDLG32_SHFree(pidlTmp);
+        TRACE("keep current folder\n");
+        return NOERROR;
+    }
+
+    /* Release the current DataObject */
+    if (fodInfos->Shell.FOIDataObject)
+    {
+      IDataObject_Release(fodInfos->Shell.FOIDataObject);
+      fodInfos->Shell.FOIDataObject = NULL;
+    }
+
+    /* Create the associated view */
+    TRACE("create view object\n");
+    if(FAILED(hRes = IShellFolder_CreateViewObject(psfTmp, fodInfos->ShellInfos.hwndOwner,
+           &IID_IShellView, (LPVOID *)&psvTmp))) goto error;
+
+    /* Check if listview has focus */
+    bViewHasFocus = IsChild(fodInfos->ShellInfos.hwndView,GetFocus());
+
+    /* Get the foldersettings from the old view */
+    if(fodInfos->Shell.FOIShellView)
+      IShellView_GetCurrentInfo(fodInfos->Shell.FOIShellView, &fodInfos->ShellInfos.folderSettings);
+
+    /* Release the old fodInfos->Shell.FOIShellView and update its value.
+    We have to update this early since ShellView_CreateViewWindow of native
+    shell32 calls OnStateChange and needs the correct view here.*/
+    if(fodInfos->Shell.FOIShellView)
+    {
+      IShellView_DestroyViewWindow(fodInfos->Shell.FOIShellView);
+      IShellView_Release(fodInfos->Shell.FOIShellView);
+    }
+    fodInfos->Shell.FOIShellView = psvTmp;
+
+    /* Release old FOIShellFolder and update its value */
+    if (fodInfos->Shell.FOIShellFolder)
+      IShellFolder_Release(fodInfos->Shell.FOIShellFolder);
+    fodInfos->Shell.FOIShellFolder = psfTmp;
+
+    /* Release old pidlAbsCurrent and update its value */
+    COMDLG32_SHFree((LPVOID)fodInfos->ShellInfos.pidlAbsCurrent);
+    fodInfos->ShellInfos.pidlAbsCurrent = pidlTmp;
+
+    COMDLG32_UpdateCurrentDir(fodInfos);
+
+    GetWindowRect(GetDlgItem(This->hwndOwner, IDC_SHELLSTATIC), &rectView);
+    MapWindowPoints(0, This->hwndOwner, (LPPOINT)&rectView, 2);
+
+    /* Create the window */
+    TRACE("create view window\n");
+    if(FAILED(hRes = IShellView_CreateViewWindow(psvTmp, NULL,
+         &fodInfos->ShellInfos.folderSettings, fodInfos->Shell.FOIShellBrowser,
+         &rectView, &hwndView))) goto error;
+
+    fodInfos->ShellInfos.hwndView = hwndView;
+
+    /* Select the new folder in the Look In combo box of the Open file dialog */
+    FILEDLG95_LOOKIN_SelectItem(fodInfos->DlgInfos.hwndLookInCB,fodInfos->ShellInfos.pidlAbsCurrent);
+
+    /* changes the tab order of the ListView to reflect the window's File Dialog */
+    hDlgWnd = GetDlgItem(GetParent(hwndView), IDC_LOOKIN);
+    SetWindowPos(hwndView, hDlgWnd, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
+
+    /* Since we destroyed the old view if it had focus set focus to the newly created view */
+    if (bViewHasFocus)
+      SetFocus(fodInfos->ShellInfos.hwndView);
+
+    return hRes;
+error:
+    ERR("Failed with error 0x%08lx\n", hRes);
+    return hRes;
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_EnableModelessSB
+*/
+HRESULT WINAPI IShellBrowserImpl_EnableModelessSB(IShellBrowser *iface,
+                                              BOOL fEnable)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_GetControlWindow
+*/
+HRESULT WINAPI IShellBrowserImpl_GetControlWindow(IShellBrowser *iface,
+                                              UINT id,
+                                              HWND *lphwnd)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+/**************************************************************************
+*  IShellBrowserImpl_GetViewStateStream
+*/
+HRESULT WINAPI IShellBrowserImpl_GetViewStateStream(IShellBrowser *iface,
+                                                DWORD grfMode,
+                                                LPSTREAM *ppStrm)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    FIXME("(%p 0x%08lx %p)\n", This, grfMode, ppStrm);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+/**************************************************************************
+*  IShellBrowserImpl_InsertMenusSB
+*/
+HRESULT WINAPI IShellBrowserImpl_InsertMenusSB(IShellBrowser *iface,
+                                           HMENU hmenuShared,
+                                           LPOLEMENUGROUPWIDTHS lpMenuWidths)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+/**************************************************************************
+*  IShellBrowserImpl_OnViewWindowActive
+*/
+HRESULT WINAPI IShellBrowserImpl_OnViewWindowActive(IShellBrowser *iface,
+                                                IShellView *ppshv)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+/**************************************************************************
+*  IShellBrowserImpl_QueryActiveShellView
+*/
+HRESULT WINAPI IShellBrowserImpl_QueryActiveShellView(IShellBrowser *iface,
+                                                  IShellView **ppshv)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    FileOpenDlgInfos *fodInfos;
+
+    TRACE("(%p)\n", This);
+
+    fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr);
+
+    if(!(*ppshv = fodInfos->Shell.FOIShellView))
+    {
+        return E_FAIL;
+    }
+    IShellView_AddRef(fodInfos->Shell.FOIShellView);
+    return NOERROR;
+}
+/**************************************************************************
+*  IShellBrowserImpl_RemoveMenusSB
+*/
+HRESULT WINAPI IShellBrowserImpl_RemoveMenusSB(IShellBrowser *iface,
+                                           HMENU hmenuShared)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+/**************************************************************************
+*  IShellBrowserImpl_SendControlMsg
+*/
+HRESULT WINAPI IShellBrowserImpl_SendControlMsg(IShellBrowser *iface,
+                                            UINT id,
+                                            UINT uMsg,
+                                            WPARAM wParam,
+                                            LPARAM lParam,
+                                            LRESULT *pret)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+    LRESULT lres;
+
+    TRACE("(%p)->(0x%08x 0x%08x 0x%08x 0x%08lx %p)\n", This, id, uMsg, wParam, lParam, pret);
+
+    switch (id)
+    {
+      case FCW_TOOLBAR:
+        lres = SendDlgItemMessageA( This->hwndOwner, IDC_TOOLBAR, uMsg, wParam, lParam);
+       break;
+      default:
+        FIXME("ctrl id: %x\n", id);
+        return E_NOTIMPL;
+    }
+    if (pret) *pret = lres;
+    return S_OK;
+}
+/**************************************************************************
+*  IShellBrowserImpl_SetMenuSB
+*/
+HRESULT WINAPI IShellBrowserImpl_SetMenuSB(IShellBrowser *iface,
+                                       HMENU hmenuShared,
+                                       HOLEMENU holemenuReserved,
+                                       HWND hwndActiveObject)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+/**************************************************************************
+*  IShellBrowserImpl_SetStatusTextSB
+*/
+HRESULT WINAPI IShellBrowserImpl_SetStatusTextSB(IShellBrowser *iface,
+                                             LPCOLESTR lpszStatusText)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+/**************************************************************************
+*  IShellBrowserImpl_SetToolbarItems
+*/
+HRESULT WINAPI IShellBrowserImpl_SetToolbarItems(IShellBrowser *iface,
+                                             LPTBBUTTON lpButtons,
+                                             UINT nButtons,
+                                             UINT uFlags)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+/**************************************************************************
+*  IShellBrowserImpl_TranslateAcceleratorSB
+*/
+HRESULT WINAPI IShellBrowserImpl_TranslateAcceleratorSB(IShellBrowser *iface,
+                                                    LPMSG lpmsg,
+                                                    WORD wID)
+
+{
+    ICOM_THIS(IShellBrowserImpl, iface);
+
+    TRACE("(%p)\n", This);
+
+    /* Feature not implemented */
+    return E_NOTIMPL;
+}
+
+static ICOM_VTABLE(IShellBrowser) IShellBrowserImpl_Vtbl =
+{
+        ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+        /* IUnknown */
+        IShellBrowserImpl_QueryInterface,
+        IShellBrowserImpl_AddRef,
+        IShellBrowserImpl_Release,
+        /* IOleWindow */
+        IShellBrowserImpl_GetWindow,
+        IShellBrowserImpl_ContextSensitiveHelp,
+        /*  IShellBrowser */
+        IShellBrowserImpl_InsertMenusSB,
+        IShellBrowserImpl_SetMenuSB,
+        IShellBrowserImpl_RemoveMenusSB,
+        IShellBrowserImpl_SetStatusTextSB,
+        IShellBrowserImpl_EnableModelessSB,
+        IShellBrowserImpl_TranslateAcceleratorSB,
+        IShellBrowserImpl_BrowseObject,
+        IShellBrowserImpl_GetViewStateStream,
+        IShellBrowserImpl_GetControlWindow,
+        IShellBrowserImpl_SendControlMsg,
+        IShellBrowserImpl_QueryActiveShellView,
+        IShellBrowserImpl_OnViewWindowActive,
+        IShellBrowserImpl_SetToolbarItems
+};
+
+
+
+/*
+ * ICommDlgBrowser
+ */
+
+/***************************************************************************
+*  IShellBrowserImpl_ICommDlgBrowser_QueryInterface
+*/
+HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_QueryInterface(
+       ICommDlgBrowser *iface,
+       REFIID riid,
+       LPVOID *ppvObj)
+{
+    _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface);
+
+    TRACE("(%p)\n", This);
+
+    return IShellBrowserImpl_QueryInterface(This,riid,ppvObj);
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_ICommDlgBrowser_AddRef
+*/
+ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_AddRef(ICommDlgBrowser * iface)
+{
+    _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface);
+
+    TRACE("(%p)\n", This);
+
+    return IShellBrowserImpl_AddRef(This);
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_ICommDlgBrowser_Release
+*/
+ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_Release(ICommDlgBrowser * iface)
+{
+    _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface);
+
+    TRACE("(%p)\n", This);
+
+    return IShellBrowserImpl_Release(This);
+}
+/**************************************************************************
+*  IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand
+*
+*   Called when a user double-clicks in the view or presses the ENTER key
+*/
+HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand(ICommDlgBrowser *iface,
+                                                                  IShellView *ppshv)
+{
+    LPITEMIDLIST pidl;
+    FileOpenDlgInfos *fodInfos;
+
+    _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface);
+
+    TRACE("(%p)\n", This);
+
+    fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr);
+
+    /* If the selected object is not a folder, send a IDOK command to parent window */
+    if((pidl = GetPidlFromDataObject(fodInfos->Shell.FOIDataObject, 1)))
+    {
+        HRESULT hRes;
+
+        ULONG  ulAttr = SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
+        IShellFolder_GetAttributesOf(fodInfos->Shell.FOIShellFolder, 1, (LPCITEMIDLIST *)&pidl, &ulAttr);
+       if (ulAttr & (SFGAO_FOLDER | SFGAO_HASSUBFOLDER) )
+       {
+          hRes = IShellBrowser_BrowseObject((IShellBrowser *)This,pidl,SBSP_RELATIVE);
+          SendCustomDlgNotificationMessage(This->hwndOwner, CDN_FOLDERCHANGE);
+       }
+        else
+       {
+          /* Tell the dialog that the user selected a file */
+         hRes = PostMessageA(This->hwndOwner, WM_COMMAND, IDOK, 0L);
+       }
+
+        /* Free memory used by pidl */
+        COMDLG32_SHFree((LPVOID)pidl);
+
+        return hRes;
+    }
+
+    return E_FAIL;
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_ICommDlgBrowser_OnStateChange
+*/
+HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnStateChange(ICommDlgBrowser *iface,
+                                                               IShellView *ppshv,
+                                                               ULONG uChange)
+{
+
+    _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface);
+
+    TRACE("(%p shv=%p)\n", This, ppshv);
+
+    switch (uChange)
+    {
+        case CDBOSC_SETFOCUS:
+             /* FIXME: Reset the default button.
+               This should be taken care of by defdlg. If control
+               other than button receives focus the default button
+               should be restored. */
+             SendMessageA(This->hwndOwner, DM_SETDEFID, IDOK, 0);
+
+            break;
+        case CDBOSC_KILLFOCUS:
+           {
+               FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr);
+               if(fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG)
+                   SetDlgItemTextA(fodInfos->ShellInfos.hwndOwner,IDOK,"&Save");
+            }
+            break;
+        case CDBOSC_SELCHANGE:
+            return IShellBrowserImpl_ICommDlgBrowser_OnSelChange(iface,ppshv);
+        case CDBOSC_RENAME:
+           /* nothing to do */
+            break;
+    }
+
+    return NOERROR;
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_ICommDlgBrowser_IncludeObject
+*/
+HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser *iface,
+                                                               IShellView * ppshv,
+                                                               LPCITEMIDLIST pidl)
+{
+    FileOpenDlgInfos *fodInfos;
+    ULONG ulAttr;
+    STRRET str;
+    WCHAR szPathW[MAX_PATH];
+
+    _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface);
+
+    TRACE("(%p)\n", This);
+
+    fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr);
+
+    ulAttr = SFGAO_HIDDEN | SFGAO_FOLDER | SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR | SFGAO_LINK;
+    IShellFolder_GetAttributesOf(fodInfos->Shell.FOIShellFolder, 1, &pidl, &ulAttr);
+
+    if( (ulAttr & SFGAO_HIDDEN)                                         /* hidden */
+      | !(ulAttr & (SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR))) /* special folder */
+        return S_FALSE;
+
+    /* always include directories and links */
+    if(ulAttr & (SFGAO_FOLDER | SFGAO_LINK))
+        return S_OK;
+
+    /* Check if there is a mask to apply if not */
+    if(!fodInfos->ShellInfos.lpstrCurrentFilter || !lstrlenW(fodInfos->ShellInfos.lpstrCurrentFilter))
+        return S_OK;
+
+    if (SUCCEEDED(IShellFolder_GetDisplayNameOf(fodInfos->Shell.FOIShellFolder, pidl, SHGDN_INFOLDER | SHGDN_FORPARSING, &str)))
+    {
+      if (SUCCEEDED(COMDLG32_StrRetToStrNW(szPathW, MAX_PATH, &str, pidl)))
+      {
+         if (PathMatchSpecW(szPathW, fodInfos->ShellInfos.lpstrCurrentFilter))
+          return S_OK;
+      }
+    }
+    return S_FALSE;
+
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_ICommDlgBrowser_OnSelChange
+*/
+HRESULT IShellBrowserImpl_ICommDlgBrowser_OnSelChange(ICommDlgBrowser *iface, IShellView *ppshv)
+{
+    FileOpenDlgInfos *fodInfos;
+
+    _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface);
+
+    fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr);
+    TRACE("(%p do=%p view=%p)\n", This, fodInfos->Shell.FOIDataObject, fodInfos->Shell.FOIShellView);
+
+    /* release old selections */
+    if (fodInfos->Shell.FOIDataObject)
+      IDataObject_Release(fodInfos->Shell.FOIDataObject);
+
+    /* get a new DataObject from the ShellView */
+    if(FAILED(IShellView_GetItemObject(fodInfos->Shell.FOIShellView, SVGIO_SELECTION,
+                              &IID_IDataObject, (LPVOID*)&fodInfos->Shell.FOIDataObject)))
+      return E_FAIL;
+
+    FILEDLG95_FILENAME_FillFromSelection(This->hwndOwner);
+
+    SendCustomDlgNotificationMessage(This->hwndOwner, CDN_SELCHANGE);
+    return S_OK;
+}
+
+static ICOM_VTABLE(ICommDlgBrowser) IShellBrowserImpl_ICommDlgBrowser_Vtbl =
+{
+        ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+        /* IUnknown */
+        IShellBrowserImpl_ICommDlgBrowser_QueryInterface,
+        IShellBrowserImpl_ICommDlgBrowser_AddRef,
+        IShellBrowserImpl_ICommDlgBrowser_Release,
+        /* ICommDlgBrowser */
+        IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand,
+        IShellBrowserImpl_ICommDlgBrowser_OnStateChange,
+        IShellBrowserImpl_ICommDlgBrowser_IncludeObject
+};
+
+
+
+
+/*
+ * IServiceProvider
+ */
+
+/***************************************************************************
+*  IShellBrowserImpl_IServiceProvider_QueryInterface
+*/
+HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryInterface(
+       IServiceProvider *iface,
+       REFIID riid,
+       LPVOID *ppvObj)
+{
+    _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface);
+
+    FIXME("(%p)\n", This);
+
+    return IShellBrowserImpl_QueryInterface(This,riid,ppvObj);
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_IServiceProvider_AddRef
+*/
+ULONG WINAPI IShellBrowserImpl_IServiceProvider_AddRef(IServiceProvider * iface)
+{
+    _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface);
+
+    FIXME("(%p)\n", This);
+
+    return IShellBrowserImpl_AddRef(This);
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_IServiceProvider_Release
+*/
+ULONG WINAPI IShellBrowserImpl_IServiceProvider_Release(IServiceProvider * iface)
+{
+    _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface);
+
+    FIXME("(%p)\n", This);
+
+    return IShellBrowserImpl_Release(This);
+}
+
+/**************************************************************************
+*  IShellBrowserImpl_IServiceProvider_Release
+*
+* NOTES
+*  the w2k shellview asks for (guidService = SID_STopLevelBrowser,
+*  riid = IShellBrowser) to call SendControlMsg ().
+*
+* FIXME
+*  this is a hack!
+*/
+
+HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryService(
+       IServiceProvider * iface,
+       REFGUID guidService,
+       REFIID riid,
+       void** ppv)
+{
+    _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface);
+
+    FIXME("(%p)\n\t%s\n\t%s\n", This,debugstr_guid(guidService), debugstr_guid(riid) );
+
+    *ppv = NULL;
+    if(guidService && IsEqualIID(guidService, &SID_STopLevelBrowser))
+    {
+      return IShellBrowserImpl_QueryInterface(This,riid,ppv);
+    }
+    FIXME("(%p) unknown interface requested\n", This);
+    return E_NOINTERFACE;
+
+}
+
+static ICOM_VTABLE(IServiceProvider) IShellBrowserImpl_IServiceProvider_Vtbl =
+{
+        ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+        /* IUnknown */
+        IShellBrowserImpl_IServiceProvider_QueryInterface,
+        IShellBrowserImpl_IServiceProvider_AddRef,
+        IShellBrowserImpl_IServiceProvider_Release,
+        /* IServiceProvider */
+        IShellBrowserImpl_IServiceProvider_QueryService
+};
diff --git a/reactos/lib/comdlg32/filedlgbrowser.h b/reactos/lib/comdlg32/filedlgbrowser.h
new file mode 100644 (file)
index 0000000..694e3a0
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ *  Implementation of IShellBrowser for the File Open common dialog
+ *
+ * Copyright 1999 Francois Boisvert
+ * Copyright 1999, 2000 Juergen Schmied
+ *
+ * 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 SHBROWSER_H
+#define SHBROWSER_H
+
+#ifndef RC_INVOKED
+#include <stdarg.h>
+#endif
+
+#define COM_NO_WINDOWS_H
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "shlobj.h"
+#include "objbase.h"
+#include "commdlg.h"
+
+/***********************************************************************
+ * Defines and global variables
+ */
+#define _ICommDlgBrowser_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblCommDlgBrowser)))
+#define _ICOM_THIS_FromICommDlgBrowser(class, name) class* This = (class*)(((char*)name)-_ICommDlgBrowser_Offset);
+
+#define _IServiceProvider_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblServiceProvider)))
+#define _ICOM_THIS_FromIServiceProvider(class, name) class* This = (class*)(((char*)name)-_IServiceProvider_Offset);
+
+/* dialog internal property */
+
+#define FODPROP_SAVEDLG 0x0001  /* File dialog is a Save file dialog */
+#define FODPROP_USEVIEW 0x0002  /* Indicates the user selection must be taken
+                                  from the IShellView */
+
+/***********************************************************************
+ * Data structure
+ */
+
+
+typedef struct
+{
+    LPOPENFILENAMEA ofnInfos;
+    BOOL unicode;
+    LPWSTR initdir;
+    LPWSTR filename;
+    LPCWSTR title;
+    LPCWSTR defext;
+    LPCWSTR filter;
+    LPCWSTR customfilter;
+    struct {
+        IShellBrowser *FOIShellBrowser;
+        IShellFolder *FOIShellFolder;
+        IShellView *FOIShellView;
+       IDataObject *FOIDataObject;
+    } Shell;
+
+    struct {
+        HWND hwndOwner;
+        HWND hwndView;
+        FOLDERSETTINGS folderSettings;
+        LPITEMIDLIST pidlAbsCurrent;
+        LPWSTR lpstrCurrentFilter;
+    } ShellInfos;
+
+    struct {
+        HWND hwndFileTypeCB;
+        HWND hwndLookInCB;
+        HWND hwndFileName;
+       HWND hwndTB;
+        HWND hwndCustomDlg;
+       DWORD dwDlgProp;
+    } DlgInfos;
+
+    struct {
+       UINT fileokstring;
+       UINT lbselchstring;
+       UINT helpmsgstring;
+       UINT sharevistring;
+    } HookMsg;
+
+} FileOpenDlgInfos;
+
+/***********************************************************************
+ * Control ID's
+ */
+#define IDS_ABOUTBOX                    101
+#define IDS_DOCUMENTFOLDERS             102
+#define IDS_PERSONAL                    103
+#define IDS_FAVORITES                   104
+#define IDS_PATH                        105
+#define IDS_DESKTOP                     106
+
+#define IDS_FONTS                       108
+#define IDS_MYCOMPUTER                  110
+#define IDS_SYSTEMFOLDERS               112
+#define IDS_LOCALHARDRIVES              113
+#define IDS_FILENOTFOUND                114
+#define IDS_VERIFYFILE                  115
+#define IDS_CREATEFILE                  116
+#define IDS_CREATEFOLDER_DENIED         117
+#define IDS_FILEOPEN_CAPTION            118
+#define IDS_OVERWRITEFILE              119
+#define IDS_INVALID_FILENAME_TITLE     120
+#define IDS_INVALID_FILENAME           121
+#define IDS_PATHNOTEXISTING            122
+#define IDS_FILENOTEXISTING            123
+
+/* File Dialog Tooltips string IDs */
+
+#define IDS_UPFOLDER                    150
+#define IDS_NEWFOLDER                   151
+#define IDS_LISTVIEW                    152
+#define IDS_REPORTVIEW                  153
+#define IDS_TODESKTOP                   154
+
+#define IDC_OPENREADONLY                chx1
+
+#define IDC_TOOLBARSTATIC              stc1
+#define IDC_FILETYPESTATIC              stc2
+#define IDC_FILENAMESTATIC              stc3
+#define IDC_LOOKINSTATIC                stc4
+
+#define IDC_SHELLSTATIC                 lst1
+
+#define IDC_FILETYPE                    cmb1
+#define IDC_LOOKIN                      cmb2
+
+#define IDC_FILENAME                    edt1
+
+#define IDC_TOOLBAR                    1
+
+/***********************************************************************
+ * Prototypes for the methods of the IShellBrowserImpl class
+ */
+/* Constructor */
+IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner);
+
+
+LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex);
+UINT GetNumSelected(IDataObject *doSelected);
+
+/* pidl handling */
+BOOL IsPidlFolder (LPSHELLFOLDER psf, LPCITEMIDLIST pidl);
+
+/* Functions used by the EDIT box */
+void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd);
+int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed);
+
+#endif /*SHBROWSER_H*/
diff --git a/reactos/lib/comdlg32/filetitle.c b/reactos/lib/comdlg32/filetitle.c
new file mode 100644 (file)
index 0000000..6d2b9fe
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * 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 <stdarg.h>
+#include <string.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "winreg.h"
+#include "winternl.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "cdlg.h"
+#include "wine/unicode.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+/***********************************************************************
+ *     GetFileTitleA           (COMDLG32.@)
+ *
+ */
+short WINAPI GetFileTitleA(LPCSTR lpFile, LPSTR lpTitle, WORD cbBuf)
+{
+    int ret;
+    UNICODE_STRING strWFile;
+    LPWSTR lpWTitle;
+
+    RtlCreateUnicodeStringFromAsciiz(&strWFile, lpFile);
+    lpWTitle = RtlAllocateHeap( GetProcessHeap(), 0, cbBuf*sizeof(WCHAR));
+    ret = GetFileTitleW(strWFile.Buffer, lpWTitle, cbBuf);
+    if (!ret) WideCharToMultiByte( CP_ACP, 0, lpWTitle, -1, lpTitle, cbBuf, NULL, NULL );
+    RtlFreeUnicodeString( &strWFile );
+    RtlFreeHeap( GetProcessHeap(), 0, lpWTitle );
+    return ret;
+}
+
+
+/***********************************************************************
+ *     GetFileTitleW           (COMDLG32.@)
+ *
+ */
+short WINAPI GetFileTitleW(LPCWSTR lpFile, LPWSTR lpTitle, WORD cbBuf)
+{
+       int i, len;
+        static const WCHAR brkpoint[] = {'*','[',']',0};
+       TRACE("(%p %p %d); \n", lpFile, lpTitle, cbBuf);
+
+       if(lpFile == NULL || lpTitle == NULL)
+               return -1;
+
+       len = strlenW(lpFile);
+
+       if (len == 0)
+               return -1;
+
+       if(strpbrkW(lpFile, brkpoint))
+               return -1;
+
+       len--;
+
+       if(lpFile[len] == '/' || lpFile[len] == '\\' || lpFile[len] == ':')
+               return -1;
+
+       for(i = len; i >= 0; i--)
+       {
+               if (lpFile[i] == '/' ||  lpFile[i] == '\\' ||  lpFile[i] == ':')
+               {
+                       i++;
+                       break;
+               }
+       }
+
+       if(i == -1)
+               i++;
+
+       TRACE("---> '%s' \n", debugstr_w(&lpFile[i]));
+
+       len = strlenW(lpFile+i)+1;
+       if(cbBuf < len)
+               return len;
+
+       strcpyW(lpTitle, &lpFile[i]);
+       return 0;
+}
+
+
+/***********************************************************************
+ *     GetFileTitle            (COMMDLG.27)
+ */
+short WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf)
+{
+       return GetFileTitleA(lpFile, lpTitle, cbBuf);
+}
diff --git a/reactos/lib/comdlg32/finddlg.c b/reactos/lib/comdlg32/finddlg.c
new file mode 100644 (file)
index 0000000..70e8ad4
--- /dev/null
@@ -0,0 +1,496 @@
+/*
+ * COMMDLG - 16 bits Find & Replace Text 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 <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include "windef.h"
+#include "winbase.h"
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "wine/debug.h"
+#include "cderr.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+#include "cdlg16.h"
+
+struct FRPRIVATE
+{
+    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 find; /* TRUE if find dialog, FALSE if replace dialog */
+    FINDREPLACE16 *fr16;
+};
+
+#define LFRPRIVATE struct FRPRIVATE *
+
+BOOL16 CALLBACK FindTextDlgProc16(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam,
+                                 LPARAM lParam);
+BOOL16 CALLBACK ReplaceTextDlgProc16(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam,
+                                   LPARAM lParam);
+
+/***********************************************************************
+ *           FINDDLG_Get16BitsTemplate                                [internal]
+ *
+ * Get a template (FALSE if failure) when 16 bits dialogs are used
+ * by a 16 bits application
+ * FIXME : no test was done for the user-provided template cases
+ */
+BOOL FINDDLG_Get16BitsTemplate(LFRPRIVATE lfr)
+{
+    LPFINDREPLACE16 fr16 = lfr->fr16;
+
+    if (fr16->Flags & FR_ENABLETEMPLATEHANDLE)
+    {
+        lfr->template = GlobalLock16(fr16->hInstance);
+        if (!lfr->template)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE);
+            return FALSE;
+        }
+    }
+    else if (fr16->Flags & FR_ENABLETEMPLATE)
+    {
+       HANDLE16 hResInfo;
+       if (!(hResInfo = FindResource16(fr16->hInstance,
+                                       MapSL(fr16->lpTemplateName),
+                                        (LPSTR)RT_DIALOG)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+           return FALSE;
+       }
+       if (!(lfr->hDlgTmpl16 = LoadResource16( fr16->hInstance, hResInfo )))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+        lfr->hResource16 = lfr->hDlgTmpl16;
+        lfr->template = LockResource16(lfr->hResource16);
+        if (!lfr->template)
+        {
+            FreeResource16(lfr->hResource16);
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE);
+            return FALSE;
+        }
+    }
+    else
+    { /* get resource from (32 bits) own Wine resource; convert it to 16 */
+       HRSRC hResInfo;
+       HGLOBAL hDlgTmpl32;
+        LPCVOID template32;
+        DWORD size;
+        HGLOBAL16 hGlobal16;
+
+       if (!(hResInfo = FindResourceA(COMDLG32_hInstance,
+               lfr->find ?
+               MAKEINTRESOURCEA(FINDDLGORD):MAKEINTRESOURCEA(REPLACEDLGORD),
+               (LPSTR)RT_DIALOG)))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+           return FALSE;
+       }
+       if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo )) ||
+           !(template32 = LockResource( hDlgTmpl32 )))
+       {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+        size = SizeofResource(GetModuleHandleA("COMDLG32"), hResInfo);
+        hGlobal16 = GlobalAlloc16(0, size);
+        if (!hGlobal16)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE);
+            ERR("alloc failure for %ld bytes\n", size);
+            return FALSE;
+        }
+        lfr->template = GlobalLock16(hGlobal16);
+        if (!lfr->template)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE);
+            ERR("global lock failure for %x handle\n", hGlobal16);
+            GlobalFree16(hGlobal16);
+            return FALSE;
+        }
+        ConvertDialog32To16((LPVOID)template32, size, (LPVOID)lfr->template);
+        lfr->hDlgTmpl16 = hGlobal16;
+        lfr->hGlobal16 = hGlobal16;
+    }
+    return TRUE;
+}
+
+
+/***********************************************************************
+ *           FINDDLG_FreeResources                                [internal]
+ *
+ * Free resources allocated
+ */
+void FINDDLG_FreeResources(LFRPRIVATE lfr)
+{
+    /* free resources */
+    if (lfr->fr16->Flags & FR_ENABLETEMPLATEHANDLE)
+        GlobalUnlock16(lfr->fr16->hInstance);
+    if (lfr->hResource16)
+    {
+        GlobalUnlock16(lfr->hResource16);
+        FreeResource16(lfr->hResource16);
+    }
+    if (lfr->hGlobal16)
+    {
+        GlobalUnlock16(lfr->hGlobal16);
+        GlobalFree16(lfr->hGlobal16);
+    }
+}
+
+/***********************************************************************
+ *           FindText   (COMMDLG.11)
+ */
+HWND16 WINAPI FindText16( SEGPTR find )
+{
+    HANDLE16 hInst;
+    HWND16 ret = 0;
+    FARPROC16 ptr;
+    LFRPRIVATE lfr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct FRPRIVATE));
+
+    if (!lfr) return 0;
+    lfr->fr16 = MapSL(find);
+    lfr->find = TRUE;
+    if (FINDDLG_Get16BitsTemplate(lfr))
+    {
+        hInst = GetWindowLongA( HWND_32(lfr->fr16->hwndOwner), GWL_HINSTANCE);
+        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 13);
+        ret = CreateDialogIndirectParam16( hInst, lfr->template,
+                    lfr->fr16->hwndOwner, (DLGPROC16) ptr, find);
+        FINDDLG_FreeResources(lfr);
+    }
+    HeapFree(GetProcessHeap(), 0, lfr);
+    return ret;
+}
+
+
+/***********************************************************************
+ *           ReplaceText   (COMMDLG.12)
+ */
+HWND16 WINAPI ReplaceText16( SEGPTR find )
+{
+    HANDLE16 hInst;
+    HWND16 ret = 0;
+    FARPROC16 ptr;
+    LFRPRIVATE lfr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct FRPRIVATE));
+
+    if (!lfr) return 0;
+    /*
+     * FIXME : We should do error checking on the lpFind structure here
+     * and make CommDlgExtendedError() return the error condition.
+     */
+    lfr->fr16 = MapSL(find);
+    lfr->find = FALSE;
+    if (FINDDLG_Get16BitsTemplate(lfr))
+    {
+        hInst = GetWindowLongA( HWND_32(lfr->fr16->hwndOwner), GWL_HINSTANCE);
+        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 14);
+        ret = CreateDialogIndirectParam16( hInst, lfr->template,
+                    lfr->fr16->hwndOwner, (DLGPROC16) ptr, find);
+
+        FINDDLG_FreeResources(lfr);
+    }
+    HeapFree(GetProcessHeap(), 0, lfr);
+    return ret;
+}
+
+
+/***********************************************************************
+ *                              FINDDLG_WMInitDialog            [internal]
+ */
+static LRESULT FINDDLG_WMInitDialog(HWND hWnd, LPARAM lParam, LPDWORD lpFlags,
+                                    LPSTR lpstrFindWhat, BOOL fUnicode)
+{
+    SetWindowLongA(hWnd, DWL_USER, lParam);
+    *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
+    /*
+     * FIXME : If the initial FindWhat string is empty, we should disable the
+     * FindNext (IDOK) button.  Only after typing some text, the button should be
+     * enabled.
+     */
+    if (fUnicode) SetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat);
+       else SetDlgItemTextA(hWnd, edt1, lpstrFindWhat);
+    CheckRadioButton(hWnd, rad1, rad2, (*lpFlags & FR_DOWN) ? rad2 : rad1);
+    if (*lpFlags & (FR_HIDEUPDOWN | FR_NOUPDOWN)) {
+       EnableWindow(GetDlgItem(hWnd, rad1), FALSE);
+       EnableWindow(GetDlgItem(hWnd, rad2), FALSE);
+    }
+    if (*lpFlags & FR_HIDEUPDOWN) {
+       ShowWindow(GetDlgItem(hWnd, rad1), SW_HIDE);
+       ShowWindow(GetDlgItem(hWnd, rad2), SW_HIDE);
+       ShowWindow(GetDlgItem(hWnd, grp1), SW_HIDE);
+    }
+    CheckDlgButton(hWnd, chx1, (*lpFlags & FR_WHOLEWORD) ? 1 : 0);
+    if (*lpFlags & (FR_HIDEWHOLEWORD | FR_NOWHOLEWORD))
+       EnableWindow(GetDlgItem(hWnd, chx1), FALSE);
+    if (*lpFlags & FR_HIDEWHOLEWORD)
+       ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE);
+    CheckDlgButton(hWnd, chx2, (*lpFlags & FR_MATCHCASE) ? 1 : 0);
+    if (*lpFlags & (FR_HIDEMATCHCASE | FR_NOMATCHCASE))
+       EnableWindow(GetDlgItem(hWnd, chx2), FALSE);
+    if (*lpFlags & FR_HIDEMATCHCASE)
+       ShowWindow(GetDlgItem(hWnd, chx2), SW_HIDE);
+    if (!(*lpFlags & FR_SHOWHELP)) {
+       EnableWindow(GetDlgItem(hWnd, pshHelp), FALSE);
+       ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE);
+    }
+    ShowWindow(hWnd, SW_SHOWNORMAL);
+    return TRUE;
+}
+
+
+/***********************************************************************
+ *                              FINDDLG_WMCommand               [internal]
+ */
+static LRESULT FINDDLG_WMCommand(HWND hWnd, WPARAM wParam,
+                       HWND hwndOwner, LPDWORD lpFlags,
+                       LPSTR lpstrFindWhat, WORD wFindWhatLen,
+                       BOOL fUnicode)
+{
+    int uFindReplaceMessage = RegisterWindowMessageA( FINDMSGSTRINGA );
+    int uHelpMessage = RegisterWindowMessageA( HELPMSGSTRINGA );
+
+    switch (wParam) {
+       case IDOK:
+           if (fUnicode)
+             GetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat, wFindWhatLen/2);
+             else GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen);
+           if (IsDlgButtonChecked(hWnd, rad2))
+               *lpFlags |= FR_DOWN;
+               else *lpFlags &= ~FR_DOWN;
+           if (IsDlgButtonChecked(hWnd, chx1))
+               *lpFlags |= FR_WHOLEWORD;
+               else *lpFlags &= ~FR_WHOLEWORD;
+           if (IsDlgButtonChecked(hWnd, chx2))
+               *lpFlags |= FR_MATCHCASE;
+               else *lpFlags &= ~FR_MATCHCASE;
+            *lpFlags &= ~(FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
+           *lpFlags |= FR_FINDNEXT;
+           SendMessageA(hwndOwner, uFindReplaceMessage, 0,
+                          GetWindowLongA(hWnd, DWL_USER) );
+           return TRUE;
+       case IDCANCEL:
+            *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL);
+           *lpFlags |= FR_DIALOGTERM;
+           SendMessageA(hwndOwner, uFindReplaceMessage, 0,
+                          GetWindowLongA(hWnd, DWL_USER) );
+           DestroyWindow(hWnd);
+           return TRUE;
+       case pshHelp:
+           /* FIXME : should lpfr structure be passed as an argument ??? */
+           SendMessageA(hwndOwner, uHelpMessage, 0, 0);
+           return TRUE;
+    }
+    return FALSE;
+}
+
+
+/***********************************************************************
+ *           FindTextDlgProc   (COMMDLG.13)
+ */
+BOOL16 CALLBACK FindTextDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
+                                 LPARAM lParam)
+{
+    HWND hWnd = HWND_32(hWnd16);
+    LPFINDREPLACE16 lpfr;
+    switch (wMsg) {
+       case WM_INITDIALOG:
+            lpfr=MapSL(lParam);
+           return FINDDLG_WMInitDialog(hWnd, lParam, &(lpfr->Flags),
+               MapSL(lpfr->lpstrFindWhat), FALSE);
+       case WM_COMMAND:
+           lpfr=MapSL(GetWindowLongA(hWnd, DWL_USER));
+           return FINDDLG_WMCommand(hWnd, wParam, HWND_32(lpfr->hwndOwner),
+               &lpfr->Flags, MapSL(lpfr->lpstrFindWhat),
+               lpfr->wFindWhatLen, FALSE);
+    }
+    return FALSE;
+}
+
+
+/***********************************************************************
+ *                              REPLACEDLG_WMInitDialog         [internal]
+ */
+static LRESULT REPLACEDLG_WMInitDialog(HWND hWnd, LPARAM lParam,
+                   LPDWORD lpFlags, LPSTR lpstrFindWhat,
+                   LPSTR lpstrReplaceWith, BOOL fUnicode)
+{
+    SetWindowLongA(hWnd, DWL_USER, lParam);
+    *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
+    /*
+     * FIXME : If the initial FindWhat string is empty, we should disable the FinNext /
+     * Replace / ReplaceAll buttons.  Only after typing some text, the buttons should be
+     * enabled.
+     */
+    if (fUnicode)
+    {
+       SetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat);
+       SetDlgItemTextW(hWnd, edt2, (LPWSTR)lpstrReplaceWith);
+    } else
+    {
+       SetDlgItemTextA(hWnd, edt1, lpstrFindWhat);
+       SetDlgItemTextA(hWnd, edt2, lpstrReplaceWith);
+    }
+    CheckDlgButton(hWnd, chx1, (*lpFlags & FR_WHOLEWORD) ? 1 : 0);
+    if (*lpFlags & (FR_HIDEWHOLEWORD | FR_NOWHOLEWORD))
+       EnableWindow(GetDlgItem(hWnd, chx1), FALSE);
+    if (*lpFlags & FR_HIDEWHOLEWORD)
+       ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE);
+    CheckDlgButton(hWnd, chx2, (*lpFlags & FR_MATCHCASE) ? 1 : 0);
+    if (*lpFlags & (FR_HIDEMATCHCASE | FR_NOMATCHCASE))
+       EnableWindow(GetDlgItem(hWnd, chx2), FALSE);
+    if (*lpFlags & FR_HIDEMATCHCASE)
+       ShowWindow(GetDlgItem(hWnd, chx2), SW_HIDE);
+    if (!(*lpFlags & FR_SHOWHELP)) {
+       EnableWindow(GetDlgItem(hWnd, pshHelp), FALSE);
+       ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE);
+    }
+    ShowWindow(hWnd, SW_SHOWNORMAL);
+    return TRUE;
+}
+
+
+/***********************************************************************
+ *                              REPLACEDLG_WMCommand            [internal]
+ */
+static LRESULT REPLACEDLG_WMCommand(HWND hWnd, WPARAM16 wParam,
+                   HWND hwndOwner, LPDWORD lpFlags,
+                   LPSTR lpstrFindWhat, WORD wFindWhatLen,
+                   LPSTR lpstrReplaceWith, WORD wReplaceWithLen,
+                   BOOL fUnicode)
+{
+    int uFindReplaceMessage = RegisterWindowMessageA( FINDMSGSTRINGA );
+    int uHelpMessage = RegisterWindowMessageA( HELPMSGSTRINGA );
+
+    switch (wParam) {
+       case IDOK:
+           if (fUnicode)
+           {
+               GetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat, wFindWhatLen/2);
+               GetDlgItemTextW(hWnd, edt2, (LPWSTR)lpstrReplaceWith, wReplaceWithLen/2);
+           }  else
+           {
+               GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen);
+               GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen);
+           }
+           if (IsDlgButtonChecked(hWnd, chx1))
+               *lpFlags |= FR_WHOLEWORD;
+               else *lpFlags &= ~FR_WHOLEWORD;
+           if (IsDlgButtonChecked(hWnd, chx2))
+               *lpFlags |= FR_MATCHCASE;
+               else *lpFlags &= ~FR_MATCHCASE;
+            *lpFlags &= ~(FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
+           *lpFlags |= FR_FINDNEXT;
+           SendMessageA(hwndOwner, uFindReplaceMessage, 0,
+                          GetWindowLongA(hWnd, DWL_USER) );
+           return TRUE;
+       case IDCANCEL:
+            *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL);
+           *lpFlags |= FR_DIALOGTERM;
+           SendMessageA(hwndOwner, uFindReplaceMessage, 0,
+                          GetWindowLongA(hWnd, DWL_USER) );
+           DestroyWindow(hWnd);
+           return TRUE;
+       case psh1:
+           if (fUnicode)
+           {
+               GetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat, wFindWhatLen/2);
+               GetDlgItemTextW(hWnd, edt2, (LPWSTR)lpstrReplaceWith, wReplaceWithLen/2);
+           }  else
+           {
+               GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen);
+               GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen);
+           }
+           if (IsDlgButtonChecked(hWnd, chx1))
+               *lpFlags |= FR_WHOLEWORD;
+               else *lpFlags &= ~FR_WHOLEWORD;
+           if (IsDlgButtonChecked(hWnd, chx2))
+               *lpFlags |= FR_MATCHCASE;
+               else *lpFlags &= ~FR_MATCHCASE;
+            *lpFlags &= ~(FR_FINDNEXT | FR_REPLACEALL | FR_DIALOGTERM);
+           *lpFlags |= FR_REPLACE;
+           SendMessageA(hwndOwner, uFindReplaceMessage, 0,
+                          GetWindowLongA(hWnd, DWL_USER) );
+           return TRUE;
+       case psh2:
+           if (fUnicode)
+           {
+               GetDlgItemTextW(hWnd, edt1, (LPWSTR)lpstrFindWhat, wFindWhatLen/2);
+               GetDlgItemTextW(hWnd, edt2, (LPWSTR)lpstrReplaceWith, wReplaceWithLen/2);
+           }  else
+           {
+               GetDlgItemTextA(hWnd, edt1, lpstrFindWhat, wFindWhatLen);
+               GetDlgItemTextA(hWnd, edt2, lpstrReplaceWith, wReplaceWithLen);
+           }
+           if (IsDlgButtonChecked(hWnd, chx1))
+               *lpFlags |= FR_WHOLEWORD;
+               else *lpFlags &= ~FR_WHOLEWORD;
+           if (IsDlgButtonChecked(hWnd, chx2))
+               *lpFlags |= FR_MATCHCASE;
+               else *lpFlags &= ~FR_MATCHCASE;
+            *lpFlags &= ~(FR_FINDNEXT | FR_REPLACE | FR_DIALOGTERM);
+           *lpFlags |= FR_REPLACEALL;
+           SendMessageA(hwndOwner, uFindReplaceMessage, 0,
+                          GetWindowLongA(hWnd, DWL_USER) );
+           return TRUE;
+       case pshHelp:
+           /* FIXME : should lpfr structure be passed as an argument ??? */
+           SendMessageA(hwndOwner, uHelpMessage, 0, 0);
+           return TRUE;
+    }
+    return FALSE;
+}
+
+
+/***********************************************************************
+ *           ReplaceTextDlgProc   (COMMDLG.14)
+ */
+BOOL16 CALLBACK ReplaceTextDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
+                                    LPARAM lParam)
+{
+    HWND hWnd = HWND_32(hWnd16);
+    LPFINDREPLACE16 lpfr;
+    switch (wMsg) {
+       case WM_INITDIALOG:
+            lpfr=MapSL(lParam);
+           return REPLACEDLG_WMInitDialog(hWnd, lParam, &lpfr->Flags,
+                   MapSL(lpfr->lpstrFindWhat),
+                   MapSL(lpfr->lpstrReplaceWith), FALSE);
+       case WM_COMMAND:
+           lpfr=MapSL(GetWindowLongA(hWnd, DWL_USER));
+           return REPLACEDLG_WMCommand(hWnd, wParam, HWND_32(lpfr->hwndOwner),
+                   &lpfr->Flags, MapSL(lpfr->lpstrFindWhat),
+                   lpfr->wFindWhatLen, MapSL(lpfr->lpstrReplaceWith),
+                   lpfr->wReplaceWithLen, FALSE);
+    }
+    return FALSE;
+}
diff --git a/reactos/lib/comdlg32/finddlg32.c b/reactos/lib/comdlg32/finddlg32.c
new file mode 100644 (file)
index 0000000..a75de11
--- /dev/null
@@ -0,0 +1,557 @@
+/*
+ *  Common Dialog Boxes interface (32 bit)
+ *  Find/Replace
+ *
+ * Copyright 1998,1999 Bertho A. Stultiens
+ *
+ * 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 <stdarg.h>
+#include <string.h>
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "cderr.h"
+#include "dlgs.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+
+
+/*-----------------------------------------------------------------------*/
+
+static UINT            FindReplaceMessage;
+static UINT            HelpMessage;
+
+#define FR_MASK        (FR_DOWN | FR_MATCHCASE | FR_WHOLEWORD | FR_REPLACEALL | FR_REPLACE | FR_FINDNEXT | FR_DIALOGTERM)
+/* CRITICAL_SECTION COMDLG32_CritSect; */
+
+/* Notes:
+ * MS uses a critical section at a few locations. However, I fail to
+ * see the reason for this. Their comdlg32.dll has a few race conditions
+ * but _not_ at those places that are protected with the mutex (there are
+ * globals that seem to hold info for the wndproc).
+ *
+ * FindText[AW]/ReplaceText[AW]
+ * The find/replace calls are passed a structure that is _not_ used
+ * internally. There is a local copy that holds the running info to
+ * be able to combine xxxA and xxxW calls. The passed pointer is
+ * returned upon sendmessage. Apps wont break this way when they rely
+ * on the original pointer. This will work as long as the sizes of
+ * FINDREPLACEA == FINDREPLACEW. The local copy will also prevent
+ * the app to see the wine-specific extra flags to distinguish between
+ * A/W and Find/Replace.
+ */
+
+
+/***********************************************************************
+ *     COMDLG32_FR_GetFlags                    [internal]
+ * Returns the button state that needs to be reported to the caller.
+ *     RETURNS
+ *             Current state of check and radio buttons
+ */
+static DWORD COMDLG32_FR_GetFlags(HWND hDlgWnd)
+{
+       DWORD flags = 0;
+       if(IsDlgButtonChecked(hDlgWnd, rad2) == BST_CHECKED)
+               flags |= FR_DOWN;
+       if(IsDlgButtonChecked(hDlgWnd, chx1) == BST_CHECKED)
+               flags |= FR_WHOLEWORD;
+       if(IsDlgButtonChecked(hDlgWnd, chx2) == BST_CHECKED)
+               flags |= FR_MATCHCASE;
+        return flags;
+}
+
+/***********************************************************************
+ *     COMDLG32_FR_HandleWMCommand             [internal]
+ * Handle WM_COMMAND messages...
+ */
+static void COMDLG32_FR_HandleWMCommand(HWND hDlgWnd, COMDLG32_FR_Data *pData, int Id, int NotifyCode)
+{
+       DWORD flag;
+
+       pData->user_fr.fra->Flags &= ~FR_MASK;  /* Clear return flags */
+       if(pData->fr.Flags & FR_WINE_REPLACE)   /* Replace always goes down... */
+               pData->user_fr.fra->Flags |= FR_DOWN;
+
+       if(NotifyCode == BN_CLICKED)
+        {
+               switch(Id)
+               {
+               case IDOK: /* Find Next */
+                       if(GetDlgItemTextA(hDlgWnd, edt1, pData->fr.lpstrFindWhat, pData->fr.wFindWhatLen) > 0)
+                        {
+                               pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | FR_FINDNEXT;
+                                if(pData->fr.Flags & FR_WINE_UNICODE)
+                                {
+                                    MultiByteToWideChar( CP_ACP, 0, pData->fr.lpstrFindWhat, -1,
+                                                         pData->user_fr.frw->lpstrFindWhat,
+                                                         0x7fffffff );
+                                }
+                                else
+                                {
+                                       strcpy(pData->user_fr.fra->lpstrFindWhat, pData->fr.lpstrFindWhat);
+                                }
+                               SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra);
+                        }
+                       break;
+
+               case IDCANCEL:
+                       pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | FR_DIALOGTERM;
+                       SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra);
+                       DestroyWindow(hDlgWnd);
+                       break;
+
+                case psh2: /* Replace All */
+                       flag = FR_REPLACEALL;
+                        goto Replace;
+
+                case psh1: /* Replace */
+                       flag = FR_REPLACE;
+Replace:
+                       if((pData->fr.Flags & FR_WINE_REPLACE)
+                        && GetDlgItemTextA(hDlgWnd, edt1, pData->fr.lpstrFindWhat, pData->fr.wFindWhatLen) > 0)
+                        {
+                               pData->fr.lpstrReplaceWith[0] = 0; /* In case the next GetDlgItemText Fails */
+                               GetDlgItemTextA(hDlgWnd, edt2, pData->fr.lpstrReplaceWith, pData->fr.wReplaceWithLen);
+                               pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | flag;
+                                if(pData->fr.Flags & FR_WINE_UNICODE)
+                                {
+                                    MultiByteToWideChar( CP_ACP, 0, pData->fr.lpstrFindWhat, -1,
+                                                         pData->user_fr.frw->lpstrFindWhat,
+                                                         0x7fffffff );
+                                    MultiByteToWideChar( CP_ACP, 0, pData->fr.lpstrReplaceWith, -1,
+                                                         pData->user_fr.frw->lpstrReplaceWith,
+                                                         0x7fffffff );
+                                }
+                                else
+                                {
+                                       strcpy(pData->user_fr.fra->lpstrFindWhat, pData->fr.lpstrFindWhat);
+                                       strcpy(pData->user_fr.fra->lpstrReplaceWith, pData->fr.lpstrReplaceWith);
+                                }
+                               SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra);
+                        }
+                       break;
+
+               case pshHelp:
+                       pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd);
+                       SendMessageA(pData->fr.hwndOwner, HelpMessage, (WPARAM)hDlgWnd, (LPARAM)pData->user_fr.fra);
+                       break;
+                }
+        }
+        else if(NotifyCode == EN_CHANGE && Id == edt1)
+       {
+               BOOL enable = SendDlgItemMessageA(hDlgWnd, edt1, WM_GETTEXTLENGTH, 0, 0) > 0;
+               EnableWindow(GetDlgItem(hDlgWnd, IDOK), enable);
+                if(pData->fr.Flags & FR_WINE_REPLACE)
+                {
+                       EnableWindow(GetDlgItem(hDlgWnd, psh1), enable);
+                       EnableWindow(GetDlgItem(hDlgWnd, psh2), enable);
+                }
+       }
+}
+
+/***********************************************************************
+ *     COMDLG32_FindReplaceDlgProc             [internal]
+ * [Find/Replace]Text32[A/W] window procedure.
+ */
+static INT_PTR CALLBACK COMDLG32_FindReplaceDlgProc(HWND hDlgWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
+{
+       COMDLG32_FR_Data *pdata = (COMDLG32_FR_Data *)GetPropA(hDlgWnd, (LPSTR)COMDLG32_Atom);
+       INT_PTR retval = TRUE;
+
+       if(iMsg == WM_INITDIALOG)
+        {
+                pdata = (COMDLG32_FR_Data *)lParam;
+               if(!SetPropA(hDlgWnd, (LPSTR)COMDLG32_Atom, (HANDLE)pdata))
+                {
+                       ERR("Could not Set prop; invent a gracefull exit?...\n");
+                       DestroyWindow(hDlgWnd);
+                        return FALSE;
+                }
+               SendDlgItemMessageA(hDlgWnd, edt1, EM_SETLIMITTEXT, (WPARAM)pdata->fr.wFindWhatLen, 0);
+               SendDlgItemMessageA(hDlgWnd, edt1, WM_SETTEXT, 0, (LPARAM)pdata->fr.lpstrFindWhat);
+                if(pdata->fr.Flags & FR_WINE_REPLACE)
+                {
+                       SendDlgItemMessageA(hDlgWnd, edt2, EM_SETLIMITTEXT, (WPARAM)pdata->fr.wReplaceWithLen, 0);
+                       SendDlgItemMessageA(hDlgWnd, edt2, WM_SETTEXT, 0, (LPARAM)pdata->fr.lpstrReplaceWith);
+                }
+
+               if(!(pdata->fr.Flags & FR_SHOWHELP))
+                       ShowWindow(GetDlgItem(hDlgWnd, pshHelp), SW_HIDE);
+               if(pdata->fr.Flags & FR_HIDEUPDOWN)
+               {
+                       ShowWindow(GetDlgItem(hDlgWnd, rad1), SW_HIDE);
+                       ShowWindow(GetDlgItem(hDlgWnd, rad2), SW_HIDE);
+                       ShowWindow(GetDlgItem(hDlgWnd, grp1), SW_HIDE);
+               }
+               else if(pdata->fr.Flags & FR_NOUPDOWN)
+               {
+                       EnableWindow(GetDlgItem(hDlgWnd, rad1), FALSE);
+                       EnableWindow(GetDlgItem(hDlgWnd, rad2), FALSE);
+                       EnableWindow(GetDlgItem(hDlgWnd, grp1), FALSE);
+               }
+                else
+                {
+                       SendDlgItemMessageA(hDlgWnd, rad1, BM_SETCHECK, pdata->fr.Flags & FR_DOWN ? 0 : BST_CHECKED, 0);
+                       SendDlgItemMessageA(hDlgWnd, rad2, BM_SETCHECK, pdata->fr.Flags & FR_DOWN ? BST_CHECKED : 0, 0);
+                }
+
+               if(pdata->fr.Flags & FR_HIDEMATCHCASE)
+                       ShowWindow(GetDlgItem(hDlgWnd, chx2), SW_HIDE);
+               else if(pdata->fr.Flags & FR_NOMATCHCASE)
+                       EnableWindow(GetDlgItem(hDlgWnd, chx2), FALSE);
+                else
+                       SendDlgItemMessageA(hDlgWnd, chx2, BM_SETCHECK, pdata->fr.Flags & FR_MATCHCASE ? BST_CHECKED : 0, 0);
+
+               if(pdata->fr.Flags & FR_HIDEWHOLEWORD)
+                       ShowWindow(GetDlgItem(hDlgWnd, chx1), SW_HIDE);
+               else if(pdata->fr.Flags & FR_NOWHOLEWORD)
+                       EnableWindow(GetDlgItem(hDlgWnd, chx1), FALSE);
+                else
+                       SendDlgItemMessageA(hDlgWnd, chx1, BM_SETCHECK, pdata->fr.Flags & FR_WHOLEWORD ? BST_CHECKED : 0, 0);
+
+               /* We did the init here, now call the hook if requested */
+
+               /* We do not do ShowWindow if hook exists and is FALSE  */
+               /*   per MSDN Article Q96135                            */
+               if((pdata->fr.Flags & FR_ENABLEHOOK)
+                    && ! pdata->fr.lpfnHook(hDlgWnd, iMsg, wParam, (LPARAM) &pdata->fr))
+                       return TRUE;
+               ShowWindow(hDlgWnd, SW_SHOWNORMAL);
+               UpdateWindow(hDlgWnd);
+                return TRUE;
+        }
+
+       if(pdata && (pdata->fr.Flags & FR_ENABLEHOOK))
+       {
+               retval = pdata->fr.lpfnHook(hDlgWnd, iMsg, wParam, lParam);
+       }
+       else
+               retval = FALSE;
+
+               if(pdata && !retval)
+        {
+               retval = TRUE;
+               switch(iMsg)
+               {
+               case WM_COMMAND:
+                       COMDLG32_FR_HandleWMCommand(hDlgWnd, pdata, LOWORD(wParam), HIWORD(wParam));
+                       break;
+
+               case WM_CLOSE:
+                       COMDLG32_FR_HandleWMCommand(hDlgWnd, pdata, IDCANCEL, BN_CLICKED);
+                       break;
+
+               case WM_HELP:
+                       /* Heeeeelp! */
+                       FIXME("Got WM_HELP. Who is gonna supply it?\n");
+                       break;
+
+               case WM_CONTEXTMENU:
+                       /* Heeeeelp! */
+                       FIXME("Got WM_CONTEXTMENU. Who is gonna supply it?\n");
+                       break;
+               /* FIXME: Handle F1 help */
+
+               default:
+                       retval = FALSE; /* We did not handle the message */
+               }
+        }
+
+        /* WM_DESTROY is a special case.
+         * We need to ensure that the allocated memory is freed just before
+         * the dialog is killed. We also need to remove the added prop.
+         */
+        if(iMsg == WM_DESTROY)
+        {
+               RemovePropA(hDlgWnd, (LPSTR)COMDLG32_Atom);
+               HeapFree(GetProcessHeap(), 0, pdata);
+        }
+
+        return retval;
+}
+
+/***********************************************************************
+ *     COMDLG32_FR_CheckPartial                [internal]
+ * Check various fault conditions in the supplied parameters that
+ * cause an extended error to be reported.
+ *     RETURNS
+ *             TRUE: Success
+ *             FALSE: Failure
+ */
+static BOOL COMDLG32_FR_CheckPartial(
+       LPFINDREPLACEA pfr,     /* [in] Find structure */
+        BOOL Replace           /* [in] True if called as replace */
+) {
+       if(!pfr)
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_GENERALCODES);
+                return FALSE;
+       }
+
+        if(pfr->lStructSize != sizeof(FINDREPLACEA))
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE);
+               return FALSE;
+        }
+
+        if(!IsWindow(pfr->hwndOwner))
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_DIALOGFAILURE);
+               return FALSE;
+        }
+
+       if((pfr->wFindWhatLen < 1 || !pfr->lpstrFindWhat)
+        ||(Replace && (pfr->wReplaceWithLen < 1 || !pfr->lpstrReplaceWith)))
+        {
+               COMDLG32_SetCommDlgExtendedError(FRERR_BUFFERLENGTHZERO);
+                return FALSE;
+        }
+
+       if((FindReplaceMessage = RegisterWindowMessageA(FINDMSGSTRINGA)) == 0)
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL);
+                return FALSE;
+        }
+       if((HelpMessage = RegisterWindowMessageA(HELPMSGSTRINGA)) == 0)
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL);
+                return FALSE;
+        }
+
+        if((pfr->Flags & FR_ENABLEHOOK) && !pfr->lpfnHook)
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_NOHOOK);
+                return FALSE;
+        }
+
+        if((pfr->Flags & (FR_ENABLETEMPLATE | FR_ENABLETEMPLATEHANDLE)) && !pfr->hInstance)
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_NOHINSTANCE);
+                return FALSE;
+        }
+
+        if((pfr->Flags & FR_ENABLETEMPLATE) && !pfr->lpTemplateName)
+        {
+               COMDLG32_SetCommDlgExtendedError(CDERR_NOTEMPLATE);
+                return FALSE;
+        }
+
+       return TRUE;
+}
+
+/***********************************************************************
+ *     COMDLG32_FR_DoFindReplace               [internal]
+ * Actual load and creation of the Find/Replace dialog.
+ *     RETURNS
+ *             Window handle to created dialog:Success
+ *             NULL:Failure
+ */
+static HWND COMDLG32_FR_DoFindReplace(
+       COMDLG32_FR_Data *pdata /* [in] Internal data structure */
+) {
+       HWND hdlgwnd = 0;
+        HGLOBAL loadrc;
+        DWORD error;
+        LPDLGTEMPLATEW rcs;
+
+       TRACE("hInst=%p, Flags=%08lx\n", pdata->fr.hInstance, pdata->fr.Flags);
+
+        if(!(pdata->fr.Flags & FR_ENABLETEMPLATEHANDLE))
+        {
+               HMODULE hmod = COMDLG32_hInstance;
+               HRSRC htemplate;
+               if(pdata->fr.Flags & FR_ENABLETEMPLATE)
+               {
+                       hmod = (HMODULE)pdata->fr.hInstance;
+                        if(pdata->fr.Flags & FR_WINE_UNICODE)
+                        {
+                               htemplate = FindResourceW(hmod, (LPWSTR)pdata->fr.lpTemplateName, (LPWSTR)RT_DIALOG);
+                        }
+                        else
+                        {
+                               htemplate = FindResourceA(hmod, pdata->fr.lpTemplateName, (LPCSTR)RT_DIALOG);
+                        }
+               }
+               else
+               {
+                       int rcid = pdata->fr.Flags & FR_WINE_REPLACE ? REPLACEDLGORD
+                                                                    : FINDDLGORD;
+                       htemplate = FindResourceA(hmod, MAKEINTRESOURCEA(rcid), (LPCSTR)RT_DIALOG);
+               }
+               if(!htemplate)
+                       {
+                       error = CDERR_FINDRESFAILURE;
+                               goto cleanup;
+                       }
+
+               loadrc = LoadResource(hmod, htemplate);
+        }
+        else
+        {
+               loadrc = (HGLOBAL)pdata->fr.hInstance;
+        }
+
+        if(!loadrc)
+        {
+               error = CDERR_LOADRESFAILURE;
+               goto cleanup;
+       }
+
+        if((rcs = (LPDLGTEMPLATEW)LockResource(loadrc)) == NULL)
+        {
+               error = CDERR_LOCKRESFAILURE;
+               goto cleanup;
+        }
+
+        hdlgwnd = CreateDialogIndirectParamA(COMDLG32_hInstance,
+                                            rcs,
+                                             pdata->fr.hwndOwner,
+                                             COMDLG32_FindReplaceDlgProc,
+                                             (LPARAM)pdata);
+       if(!hdlgwnd)
+        {
+               error = CDERR_DIALOGFAILURE;
+cleanup:
+               COMDLG32_SetCommDlgExtendedError(error);
+                HeapFree(GetProcessHeap(), 0, pdata);
+        }
+        return hdlgwnd;
+}
+
+/***********************************************************************
+ *     FindTextA                               [COMDLG32.@]
+ *     RETURNS
+ *             Window handle to created dialog: Success
+ *             NULL: Failure
+ */
+HWND WINAPI FindTextA(
+       LPFINDREPLACEA pfr      /* [in] Find/replace structure*/
+) {
+       COMDLG32_FR_Data *pdata;
+
+        TRACE("LPFINDREPLACE=%p\n", pfr);
+
+       if(!COMDLG32_FR_CheckPartial(pfr, FALSE))
+               return 0;
+
+       if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data))) == NULL)
+               return 0; /* Error has been set */
+
+        pdata->user_fr.fra = pfr;
+        pdata->fr = *pfr;
+       return COMDLG32_FR_DoFindReplace(pdata);
+}
+
+/***********************************************************************
+ *     ReplaceTextA                            [COMDLG32.@]
+ *     RETURNS
+ *             Window handle to created dialog: Success
+ *             NULL: Failure
+ */
+HWND WINAPI ReplaceTextA(
+       LPFINDREPLACEA pfr      /* [in] Find/replace structure*/
+) {
+       COMDLG32_FR_Data *pdata;
+
+        TRACE("LPFINDREPLACE=%p\n", pfr);
+
+       if(!COMDLG32_FR_CheckPartial(pfr, TRUE))
+               return 0;
+
+       if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data))) == NULL)
+               return 0; /* Error has been set */
+
+        pdata->user_fr.fra = pfr;
+        pdata->fr = *pfr;
+       pdata->fr.Flags |= FR_WINE_REPLACE;
+       return COMDLG32_FR_DoFindReplace(pdata);
+}
+
+/***********************************************************************
+ *     FindTextW                               [COMDLG32.@]
+ *     RETURNS
+ *             Window handle to created dialog: Success
+ *             NULL: Failure
+ */
+HWND WINAPI FindTextW(
+       LPFINDREPLACEW pfr      /* [in] Find/replace structure*/
+) {
+       COMDLG32_FR_Data *pdata;
+        DWORD len;
+
+        TRACE("LPFINDREPLACE=%p\n", pfr);
+
+       if(!COMDLG32_FR_CheckPartial((LPFINDREPLACEA)pfr, FALSE))
+               return 0;
+
+        len = WideCharToMultiByte( CP_ACP, 0, pfr->lpstrFindWhat, pfr->wFindWhatLen,
+                                   NULL, 0, NULL, NULL );
+        if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data) + len)) == NULL)
+            return 0; /* Error has been set */
+
+        pdata->user_fr.frw = pfr;
+        pdata->fr = *(LPFINDREPLACEA)pfr;      /* FINDREPLACEx have same size */
+       pdata->fr.Flags |= FR_WINE_UNICODE;
+        pdata->fr.lpstrFindWhat = (LPSTR)(pdata + 1);  /* Set string pointer */
+        WideCharToMultiByte( CP_ACP, 0, pfr->lpstrFindWhat, pfr->wFindWhatLen,
+                             pdata->fr.lpstrFindWhat, len, NULL, NULL );
+        return COMDLG32_FR_DoFindReplace(pdata);
+}
+
+/***********************************************************************
+ *     ReplaceTextW                            [COMDLG32.@]
+ *     RETURNS
+ *             Window handle to created dialog: Success
+ *             NULL: Failure
+ */
+HWND WINAPI ReplaceTextW(
+       LPFINDREPLACEW pfr      /* [in] Find/replace structure*/
+) {
+       COMDLG32_FR_Data *pdata;
+        DWORD len1, len2;
+
+        TRACE("LPFINDREPLACE=%p\n", pfr);
+
+       if(!COMDLG32_FR_CheckPartial((LPFINDREPLACEA)pfr, FALSE))
+               return 0;
+
+        len1 = WideCharToMultiByte( CP_ACP, 0, pfr->lpstrFindWhat, pfr->wFindWhatLen,
+                                    NULL, 0, NULL, NULL );
+        len2 = WideCharToMultiByte( CP_ACP, 0, pfr->lpstrReplaceWith, pfr->wReplaceWithLen,
+                                    NULL, 0, NULL, NULL );
+       if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data)
+                                                          + len1 + len2)) == NULL)
+            return 0; /* Error has been set */
+
+        pdata->user_fr.frw = pfr;
+        pdata->fr = *(LPFINDREPLACEA)pfr;      /* FINDREPLACEx have same size */
+       pdata->fr.Flags |= FR_WINE_REPLACE | FR_WINE_UNICODE;
+        pdata->fr.lpstrFindWhat = (LPSTR)(pdata + 1);  /* Set string pointer */
+        pdata->fr.lpstrReplaceWith = pdata->fr.lpstrFindWhat + len1;
+
+        WideCharToMultiByte( CP_ACP, 0, pfr->lpstrFindWhat, pfr->wFindWhatLen,
+                             pdata->fr.lpstrFindWhat, len1, NULL, NULL );
+        WideCharToMultiByte( CP_ACP, 0, pfr->lpstrReplaceWith, pfr->wReplaceWithLen,
+                             pdata->fr.lpstrReplaceWith, len2, NULL, NULL );
+        return COMDLG32_FR_DoFindReplace(pdata);
+}
diff --git a/reactos/lib/comdlg32/fontdlg.c b/reactos/lib/comdlg32/fontdlg.c
new file mode 100644 (file)
index 0000000..0fdc718
--- /dev/null
@@ -0,0 +1,1281 @@
+/*
+ * COMMDLG - Font Dialog
+ *
+ * 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 <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "wine/winuser16.h" /* Needed for CB_SETITEMDATA16 */
+#include "heap.h" /* HEAP_strdupWtoA */
+#include "commdlg.h"
+#include "dlgs.h"
+#include "wine/debug.h"
+#include "cderr.h"
+
+#include "ros.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#define WINE_FONTDATA "__WINE_FONTDLGDATA"
+
+#include "cdlg.h"
+
+/* image list with TrueType bitmaps and more */
+static HIMAGELIST himlTT = 0;
+#define TTBITMAP_XSIZE 20 /* x-size of the bitmaps */
+
+
+INT_PTR CALLBACK FormatCharDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam,
+                                    LPARAM lParam);
+INT_PTR CALLBACK FormatCharDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam,
+                                    LPARAM lParam);
+
+/* There is a table here of all charsets, and the sample text for each.
+ * There is a second table that translates a charset into an index into
+ * the first table.
+ */
+
+#define CI(cs) ((IDS_CHARSET_##cs)-IDS_CHARSET_ANSI)
+
+
+static const WCHAR stWestern[]={'A','a','B','b','Y','y','Z','z',0}; /* Western and default */
+static const WCHAR stSymbol[]={'S','y','m','b','o','l',0}; /* Symbol */
+static const WCHAR stShiftJis[]={'A','a',0x3042,0x3041,0x30a2,0x30a1,0x4e9c,0x5b87,0}; /* Shift JIS */
+static const WCHAR stHangul[]={0xac00,0xb098,0xb2e4,'A','a','B','Y','y','Z','z',0}; /* Hangul */
+static const WCHAR stGB2312[]={0x5fae,0x8f6f,0x4e2d,0x6587,0x8f6f,0x4ef6,0}; /* GB2312 */
+static const WCHAR stBIG5[]={0x4e2d,0x6587,0x5b57,0x578b,0x7bc4,0x4f8b,0}; /* BIG5 */
+static const WCHAR stGreek[]={'A','a','B','b',0x0391,0x03b1,0x0392,0x03b2,0}; /* Greek */
+static const WCHAR stTurkish[]={'A','a','B','b',0x011e,0x011f,0x015e,0x015f,0}; /* Turkish */
+static const WCHAR stHebrew[]={'A','a','B','b',0x05e0,0x05e1,0x05e9,0x05ea,0}; /* Hebrew */
+static const WCHAR stArabic[]={'A','a','B','b',0x0627,0x0628,0x062c,0x062f,0x0647,0x0648,0x0632,0};/* Arabic */
+static const WCHAR stBaltic[]={'A','a','B','b','Y','y','Z','z',0}; /* Baltic */
+static const WCHAR stVietname[]={'A','a','B','b',0x01a0,0x01a1,0x01af,0x01b0,0}; /* Vietnamese */
+static const WCHAR stCyrillic[]={'A','a','B','b',0x0411,0x0431,0x0424,0x0444,0}; /* Cyrillic */
+static const WCHAR stEastEur[]={'A','a','B','b',0xc1,0xe1,0xd4,0xf4,0}; /* East European */
+static const WCHAR stThai[]={'A','a','B','b',0x0e2d,0x0e31,0x0e01,0x0e29,0x0e23,0x0e44,0x0e17,0x0e22,0}; /* Thai */
+static const WCHAR stJohab[]={0xac00,0xb098,0xb2e4,'A','a','B','Y','y','Z','z',0}; /* Johab */
+static const WCHAR stMac[]={'A','a','B','b','Y','y','Z','z',0}; /* Mac */
+static const WCHAR stOEM[]={'A','a','B','b',0xf8,0xf1,0xfd,0}; /* OEM */
+/* the following character sets actually behave different (Win2K observation):
+ * the sample string is 'sticky': it uses the sample string of the previous
+ * selected character set. That behaviour looks like some default, which is
+ * not (yet) implemented. */
+static const WCHAR stVISCII[]={'A','a','B','b',0}; /* VISCII */
+static const WCHAR stTCVN[]={'A','a','B','b',0}; /* TCVN */
+static const WCHAR stKOI8[]={'A','a','B','b',0}; /* KOI-8 */
+static const WCHAR stIso88593[]={'A','a','B','b',0}; /* ISO-8859-3 */
+static const WCHAR stIso88594[]={'A','a','B','b',0}; /* ISO-8859-4 */
+static const WCHAR stIso885910[]={'A','a','B','b',0}; /* ISO-8859-10 */
+static const WCHAR stCeltic[]={'A','a','B','b',0};/* Celtic */
+
+static const WCHAR *sample_lang_text[]={
+    stWestern,stSymbol,stShiftJis,stHangul,stGB2312,
+    stBIG5,stGreek,stTurkish,stHebrew,stArabic,
+    stBaltic,stVietname,stCyrillic,stEastEur,stThai,
+    stJohab,stMac,stOEM,stVISCII,stTCVN,
+    stKOI8,stIso88593,stIso88594,stIso885910,stCeltic};
+
+
+static const int CHARSET_ORDER[256]={
+    CI(ANSI), 0, CI(SYMBOL), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CI(MAC), 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    CI(JIS), CI(HANGUL), CI(JOHAB), 0, 0, 0, CI(GB2312), 0, CI(BIG5), 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, CI(GREEK), CI(TURKISH), CI(VIETNAMESE), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, CI(HEBREW), CI(ARABIC), 0, 0, 0, 0, 0, 0, 0, CI(BALTIC), 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CI(RUSSIAN), 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CI(THAI), 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CI(EE), 0,
+    CI(VISCII), CI(TCVN), CI(KOI8), CI(ISO3), CI(ISO4), CI(ISO10), CI(CELTIC), 0, 0, 0, 0, 0, 0, 0, 0, CI(OEM),
+};
+
+struct {
+    int         mask;
+    char        *name;
+} cfflags[] = {
+#define XX(x) { x, #x },
+    XX(CF_SCREENFONTS)
+    XX(CF_PRINTERFONTS)
+    XX(CF_SHOWHELP)
+    XX(CF_ENABLEHOOK)
+    XX(CF_ENABLETEMPLATE)
+    XX(CF_ENABLETEMPLATEHANDLE)
+    XX(CF_INITTOLOGFONTSTRUCT)
+    XX(CF_USESTYLE)
+    XX(CF_EFFECTS)
+    XX(CF_APPLY)
+    XX(CF_ANSIONLY)
+    XX(CF_NOVECTORFONTS)
+    XX(CF_NOSIMULATIONS)
+    XX(CF_LIMITSIZE)
+    XX(CF_FIXEDPITCHONLY)
+    XX(CF_WYSIWYG)
+    XX(CF_FORCEFONTEXIST)
+    XX(CF_SCALABLEONLY)
+    XX(CF_TTONLY)
+    XX(CF_NOFACESEL)
+    XX(CF_NOSTYLESEL)
+    XX(CF_NOSIZESEL)
+    XX(CF_SELECTSCRIPT)
+    XX(CF_NOSCRIPTSEL)
+    XX(CF_NOVERTFONTS)
+#undef XX
+    {0,NULL},
+};
+
+void _dump_cf_flags(DWORD cflags)
+{
+    int i;
+
+    for (i=0;cfflags[i].name;i++)
+        if (cfflags[i].mask & cflags)
+            MESSAGE("%s|",cfflags[i].name);
+    MESSAGE("\n");
+}
+
+/***********************************************************************
+ *           ChooseFontA   (COMDLG32.@)
+ */
+BOOL WINAPI ChooseFontA(LPCHOOSEFONTA lpChFont)
+{
+    LPCVOID template;
+    HRSRC hResInfo;
+    HINSTANCE hDlginst;
+    HGLOBAL hDlgTmpl;
+
+    if ( (lpChFont->Flags&CF_ENABLETEMPLATEHANDLE)!=0 )
+    {
+        template=(LPCVOID)lpChFont->hInstance;
+    } else
+    {
+        if ( (lpChFont->Flags&CF_ENABLETEMPLATE)!=0 )
+        {
+            hDlginst=lpChFont->hInstance;
+            if( !(hResInfo = FindResourceA(hDlginst, lpChFont->lpTemplateName,
+                            (LPSTR)RT_DIALOG)))
+            {
+                COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+                return FALSE;
+            }
+        } else
+        {
+            hDlginst=COMDLG32_hInstance;
+            if (!(hResInfo = FindResourceA(hDlginst, "CHOOSE_FONT", (LPSTR)RT_DIALOG)))
+            {
+                COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+                return FALSE;
+            }
+        }
+        if (!(hDlgTmpl = LoadResource(hDlginst, hResInfo )) ||
+                !(template = LockResource( hDlgTmpl )))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return FALSE;
+        }
+    }
+    if (TRACE_ON(commdlg))
+        _dump_cf_flags(lpChFont->Flags);
+
+    if (lpChFont->Flags & (CF_SELECTSCRIPT | CF_NOVERTFONTS ))
+        FIXME(": unimplemented flag (ignored)\n");
+
+    return DialogBoxIndirectParamA(COMDLG32_hInstance, template,
+            lpChFont->hwndOwner, FormatCharDlgProcA, (LPARAM)lpChFont );
+}
+
+/***********************************************************************
+ *           ChooseFontW   (COMDLG32.@)
+ *
+ *  NOTES:
+ *
+ *      The LOGFONT conversion functions will break if the structure ever
+ *      grows beyond the lfFaceName element.
+ *
+ *      The CHOOSEFONT conversion functions assume that both versions of
+ *      lpLogFont and lpszStyle (if used) point to pre-allocated objects.
+ *
+ *      The ASCII version of lpTemplateName is created by ChooseFontAtoW
+ *      and freed by ChooseFontWtoA.
+ */
+inline static VOID LogFontWtoA(const LOGFONTW *lfw, LOGFONTA *lfa)
+{
+    memcpy(lfa, lfw, sizeof(LOGFONTA));
+    WideCharToMultiByte(CP_ACP, 0, lfw->lfFaceName, -1, lfa->lfFaceName,
+                        LF_FACESIZE, NULL, NULL);
+    lfa->lfFaceName[LF_FACESIZE - 1] = '\0';
+}
+
+inline static VOID LogFontAtoW(const LOGFONTA *lfa, LOGFONTW *lfw)
+{
+    memcpy(lfw, lfa, sizeof(LOGFONTA));
+    MultiByteToWideChar(CP_ACP, 0, lfa->lfFaceName, -1, lfw->lfFaceName,
+                        LF_FACESIZE);
+    lfw->lfFaceName[LF_FACESIZE - 1] = 0;
+}
+
+static BOOL ChooseFontWtoA(const CHOOSEFONTW *cfw, CHOOSEFONTA *cfa)
+{
+    LOGFONTA    *lpLogFont = cfa->lpLogFont;
+    LPSTR       lpszStyle = cfa->lpszStyle;
+
+    memcpy(cfa, cfw, sizeof(CHOOSEFONTA));
+    cfa->lpLogFont = lpLogFont;
+    cfa->lpszStyle = lpszStyle;
+
+    LogFontWtoA(cfw->lpLogFont, lpLogFont);
+
+    if ((cfw->Flags&CF_ENABLETEMPLATE)!=0 && HIWORD(cfw->lpTemplateName)!=0)
+    {
+        cfa->lpTemplateName = HEAP_strdupWtoA(GetProcessHeap(), 0,
+                cfw->lpTemplateName);
+        if (cfa->lpTemplateName == NULL)
+            return FALSE;
+    }
+
+    if ((cfw->Flags & CF_USESTYLE) != 0 && cfw->lpszStyle != NULL)
+    {
+        WideCharToMultiByte(CP_ACP, 0, cfw->lpszStyle, -1, cfa->lpszStyle,
+                LF_FACESIZE, NULL, NULL);
+        cfa->lpszStyle[LF_FACESIZE - 1] = '\0';
+    }
+
+    return TRUE;
+}
+
+static VOID ChooseFontAtoW(const CHOOSEFONTA *cfa, CHOOSEFONTW *cfw)
+{
+    LOGFONTW    *lpLogFont = cfw->lpLogFont;
+    LPWSTR      lpszStyle = cfw->lpszStyle;
+    LPCWSTR     lpTemplateName = cfw->lpTemplateName;
+
+    memcpy(cfw, cfa, sizeof(CHOOSEFONTA));
+    cfw->lpLogFont = lpLogFont;
+    cfw->lpszStyle = lpszStyle;
+    cfw->lpTemplateName = lpTemplateName;
+
+    LogFontAtoW(cfa->lpLogFont, lpLogFont);
+
+    if ((cfa->Flags&CF_ENABLETEMPLATE)!=0 && HIWORD(cfa->lpTemplateName) != 0)
+        HeapFree(GetProcessHeap(), 0, (LPSTR)(cfa->lpTemplateName));
+
+    if ((cfa->Flags & CF_USESTYLE) != 0 && cfa->lpszStyle != NULL)
+    {
+        MultiByteToWideChar(CP_ACP, 0, cfa->lpszStyle, -1, cfw->lpszStyle,
+                LF_FACESIZE);
+        cfw->lpszStyle[LF_FACESIZE - 1] = 0;
+    }
+}
+
+BOOL WINAPI ChooseFontW(LPCHOOSEFONTW lpChFont)
+{
+    CHOOSEFONTA     cf_a;
+    LOGFONTA        lf_a;
+    CHAR            style_a[LF_FACESIZE];
+
+    cf_a.lpLogFont = &lf_a;
+    cf_a.lpszStyle = style_a;
+
+    if (ChooseFontWtoA(lpChFont, &cf_a) == FALSE)
+    {
+        COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE);
+        return FALSE;
+    }
+
+    if (ChooseFontA(&cf_a) == FALSE)
+    {
+        if (cf_a.lpTemplateName != NULL)
+            HeapFree(GetProcessHeap(), 0, (LPSTR)(cf_a.lpTemplateName));
+        return FALSE;
+    }
+
+    ChooseFontAtoW(&cf_a, lpChFont);
+
+    return TRUE;
+}
+
+#if 0
+/***********************************************************************
+ *           ChooseFontW   (COMDLG32.@)
+ */
+BOOL WINAPI ChooseFontW(LPCHOOSEFONTW lpChFont)
+{
+    BOOL bRet=FALSE;
+    CHOOSEFONTA cf32a;
+    LOGFONTA lf32a;
+    LPCVOID template;
+    HANDLE hResInfo, hDlgTmpl;
+
+    if (TRACE_ON(commdlg))
+        _dump_cf_flags(lpChFont->Flags);
+
+    if (!(hResInfo = FindResourceA(COMDLG32_hInstance, "CHOOSE_FONT", (LPSTR)RT_DIALOG)))
+    {
+        COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+        return FALSE;
+    }
+    if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo )) ||
+            !(template = LockResource( hDlgTmpl )))
+    {
+        COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+        return FALSE;
+    }
+
+    if (lpChFont->Flags & (CF_SELECTSCRIPT | CF_NOVERTFONTS | CF_ENABLETEMPLATE |
+                CF_ENABLETEMPLATEHANDLE)) FIXME(": unimplemented flag (ignored)\n");
+    memcpy(&cf32a, lpChFont, sizeof(cf32a));
+    memcpy(&lf32a, lpChFont->lpLogFont, sizeof(LOGFONTA));
+
+    WideCharToMultiByte( CP_ACP, 0, lpChFont->lpLogFont->lfFaceName, -1,
+            lf32a.lfFaceName, LF_FACESIZE, NULL, NULL );
+    lf32a.lfFaceName[LF_FACESIZE-1] = 0;
+    cf32a.lpLogFont=&lf32a;
+    cf32a.lpszStyle=HEAP_strdupWtoA(GetProcessHeap(), 0, lpChFont->lpszStyle);
+    lpChFont->lpTemplateName=(LPWSTR)&cf32a;
+    bRet = DialogBoxIndirectParamW(COMDLG32_hInstance, template,
+            lpChFont->hwndOwner, FormatCharDlgProcW, (LPARAM)lpChFont );
+    HeapFree(GetProcessHeap(), 0, cf32a.lpszStyle);
+    lpChFont->lpTemplateName=(LPWSTR)cf32a.lpTemplateName;
+    memcpy(lpChFont->lpLogFont, &lf32a, sizeof(CHOOSEFONTA));
+    MultiByteToWideChar( CP_ACP, 0, lf32a.lfFaceName, -1,
+            lpChFont->lpLogFont->lfFaceName, LF_FACESIZE );
+    lpChFont->lpLogFont->lfFaceName[LF_FACESIZE-1] = 0;
+    return bRet;
+}
+#endif
+
+#define TEXT_EXTRAS 4
+#define TEXT_COLORS 16
+
+static const COLORREF textcolors[TEXT_COLORS]=
+{
+    0x00000000L,0x00000080L,0x00008000L,0x00008080L,
+    0x00800000L,0x00800080L,0x00808000L,0x00808080L,
+    0x00c0c0c0L,0x000000ffL,0x0000ff00L,0x0000ffffL,
+    0x00ff0000L,0x00ff00ffL,0x00ffff00L,0x00FFFFFFL
+};
+
+/***********************************************************************
+ *                          CFn_HookCallChk32                 [internal]
+ */
+static BOOL CFn_HookCallChk32(LPCHOOSEFONTA lpcf)
+{
+    if (lpcf)
+        if(lpcf->Flags & CF_ENABLEHOOK)
+            if (lpcf->lpfnHook)
+                return TRUE;
+    return FALSE;
+}
+
+/*************************************************************************
+ *              AddFontFamily                               [internal]
+ */
+INT AddFontFamily(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM,
+        UINT nFontType, LPCHOOSEFONTA lpcf, HWND hwnd, LPCFn_ENUMSTRUCT e)
+{
+    int i;
+    WORD w;
+    const LOGFONTA *lplf = &(lpElfex->elfLogFont);
+
+    TRACE("font=%s (nFontType=%d)\n", lplf->lfFaceName,nFontType);
+
+    if (lpcf->Flags & CF_FIXEDPITCHONLY)
+        if (!(lplf->lfPitchAndFamily & FIXED_PITCH))
+            return 1;
+    if (lpcf->Flags & CF_ANSIONLY)
+        if (lplf->lfCharSet != ANSI_CHARSET)
+            return 1;
+    if (lpcf->Flags & CF_TTONLY)
+        if (!(nFontType & TRUETYPE_FONTTYPE))
+            return 1;
+
+    if (e) e->added++;
+
+    i=SendMessageA(hwnd, CB_FINDSTRINGEXACT, 0, (LPARAM)lplf->lfFaceName);
+    if (i == CB_ERR) {
+        i = SendMessageA(hwnd, CB_ADDSTRING, 0, (LPARAM)lplf->lfFaceName);
+        if( i != CB_ERR) {
+            /* store some important font information */
+            w = (lplf->lfPitchAndFamily) << 8 |
+                (HIWORD(lpNTM->ntmTm.ntmFlags) & 0xff);
+            SendMessageA(hwnd, CB_SETITEMDATA, i, MAKELONG(nFontType,w));
+        }
+    }
+    return 1;
+}
+
+/*************************************************************************
+ *              FontFamilyEnumProc32                           [internal]
+ */
+static INT WINAPI FontFamilyEnumProc(const ENUMLOGFONTEXA *lpElfex,
+        const TEXTMETRICA *metrics, DWORD dwFontType, LPARAM lParam)
+{
+    LPCFn_ENUMSTRUCT e;
+    e=(LPCFn_ENUMSTRUCT)lParam;
+    return AddFontFamily( lpElfex, (NEWTEXTMETRICEXA *) metrics,
+            dwFontType, e->lpcf32a, e->hWnd1, e);
+}
+
+/*************************************************************************
+ *              SetFontStylesToCombo2                           [internal]
+ *
+ * Fill font style information into combobox  (without using font.c directly)
+ */
+static int SetFontStylesToCombo2(HWND hwnd, HDC hdc, const LOGFONTA *lplf)
+{
+#define FSTYLES 4
+    struct FONTSTYLE
+    {
+        int italic;
+        int weight;
+        char stname[20];
+    };
+    static struct FONTSTYLE fontstyles[FSTYLES]={
+        { 0,FW_NORMAL,"Regular"}, { 1,FW_NORMAL,"Italic"},
+        { 0,FW_BOLD,"Bold"}, { 1,FW_BOLD,"Bold Italic"}
+    };
+    HFONT hf;
+    TEXTMETRICA tm;
+    int i,j;
+    LOGFONTA lf;
+
+    memcpy(&lf, lplf, sizeof(LOGFONTA));
+
+    for (i=0;i<FSTYLES;i++)
+    {
+        lf.lfItalic=fontstyles[i].italic;
+        lf.lfWeight=fontstyles[i].weight;
+        hf=CreateFontIndirectA(&lf);
+        hf=SelectObject(hdc,hf);
+        GetTextMetricsA(hdc,&tm);
+        hf=SelectObject(hdc,hf);
+        DeleteObject(hf);
+                /* font successful created ? */
+        if (tm.tmWeight==fontstyles[i].weight &&
+            ((tm.tmItalic != 0)==fontstyles[i].italic))
+        {
+            j=SendMessageA(hwnd,CB_ADDSTRING,0,(LPARAM)fontstyles[i].stname );
+            if (j==CB_ERR) return 1;
+            j=SendMessageA(hwnd, CB_SETITEMDATA, j,
+                           MAKELONG(fontstyles[i].weight,fontstyles[i].italic));
+            if (j==CB_ERR) return 1;
+        }
+    }
+    return 0;
+}
+
+/*************************************************************************
+ *              AddFontSizeToCombo3                           [internal]
+ */
+static int AddFontSizeToCombo3(HWND hwnd, UINT h, LPCHOOSEFONTA lpcf)
+{
+    int j;
+    char buffer[20];
+
+    if (  (!(lpcf->Flags & CF_LIMITSIZE))  ||
+            ((lpcf->Flags & CF_LIMITSIZE) && (h >= lpcf->nSizeMin) && (h <= lpcf->nSizeMax)))
+    {
+        sprintf(buffer, "%2d", h);
+        j=SendMessageA(hwnd, CB_FINDSTRINGEXACT, -1, (LPARAM)buffer);
+        if (j==CB_ERR)
+        {
+            j=SendMessageA(hwnd, CB_ADDSTRING, 0, (LPARAM)buffer);
+            if (j!=CB_ERR) j = SendMessageA(hwnd, CB_SETITEMDATA, j, h);
+            if (j==CB_ERR) return 1;
+        }
+    }
+    return 0;
+}
+
+/*************************************************************************
+ *              SetFontSizesToCombo3                           [internal]
+ */
+static int SetFontSizesToCombo3(HWND hwnd, LPCHOOSEFONTA lpcf)
+{
+    static const int sizes[]={8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72,0};
+    int i;
+
+    for (i=0; sizes[i]; i++)
+        if (AddFontSizeToCombo3(hwnd, sizes[i], lpcf)) return 1;
+    return 0;
+}
+
+/*************************************************************************
+ *              CFn_GetDC                           [internal]
+ */
+inline HDC CFn_GetDC(LPCHOOSEFONTA lpcf)
+{
+    HDC ret = ((lpcf->Flags & CF_PRINTERFONTS) && lpcf->hDC) ?
+        lpcf->hDC :
+        GetDC(0);
+    if(!ret) ERR("HDC failure!!!\n");
+    return ret;
+}
+
+/*************************************************************************
+ *              CFn_ReleaseDC                           [internal]
+ */
+inline void CFn_ReleaseDC(LPCHOOSEFONTA lpcf, HDC hdc)
+{
+        if(!((lpcf->Flags & CF_PRINTERFONTS) && lpcf->hDC))
+            ReleaseDC(0, hdc);
+}
+
+/***********************************************************************
+ *                 AddFontStyle                          [internal]
+ */
+INT AddFontStyle( const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM,
+                UINT nFontType, LPCHOOSEFONTA lpcf, HWND hcmb2, HWND hcmb3,
+                HWND hDlg, BOOL iswin16)
+{
+    int i;
+    const LOGFONTA *lplf = &(lpElfex->elfLogFont);
+    HWND hcmb5;
+    HDC hdc;
+
+    TRACE("(nFontType=%d)\n",nFontType);
+    TRACE("  %s h=%ld w=%ld e=%ld o=%ld wg=%ld i=%d u=%d s=%d"
+            " ch=%d op=%d cp=%d q=%d pf=%xh\n",
+            lplf->lfFaceName,lplf->lfHeight,lplf->lfWidth,
+            lplf->lfEscapement,lplf->lfOrientation,
+            lplf->lfWeight,lplf->lfItalic,lplf->lfUnderline,
+            lplf->lfStrikeOut,lplf->lfCharSet, lplf->lfOutPrecision,
+            lplf->lfClipPrecision,lplf->lfQuality, lplf->lfPitchAndFamily);
+    if (nFontType & RASTER_FONTTYPE)
+    {
+        INT points;
+        if(!(hdc = CFn_GetDC(lpcf))) return 0;
+        points = MulDiv( lpNTM->ntmTm.tmHeight - lpNTM->ntmTm.tmInternalLeading,
+                72, GetDeviceCaps(hdc, LOGPIXELSY));
+        CFn_ReleaseDC(lpcf, hdc);
+        i = AddFontSizeToCombo3(hcmb3, points, lpcf);
+        if( i) return 0;
+    } else if (SetFontSizesToCombo3(hcmb3, lpcf)) return 0;
+
+    if (!SendMessageA(hcmb2, CB_GETCOUNT, 0, 0))
+    {
+        if(!(hdc = CFn_GetDC(lpcf))) return 0;
+        i=SetFontStylesToCombo2(hcmb2,hdc,lplf);
+        CFn_ReleaseDC(lpcf, hdc);
+        if (i)
+            return 0;
+    }
+    if( iswin16 || !( hcmb5 = GetDlgItem(hDlg, cmb5))) return 1;
+    i = SendMessageA( hcmb5, CB_FINDSTRINGEXACT, 0,
+                (LPARAM)lpElfex->elfScript);
+    if( i == CB_ERR) { 
+        i = SendMessageA( hcmb5, CB_ADDSTRING, 0,
+                (LPARAM)lpElfex->elfScript);
+        if( i != CB_ERR)
+            SendMessageA( hcmb5, CB_SETITEMDATA, i, lplf->lfCharSet);
+    }
+    return 1 ;
+}
+
+static INT CFn_FitFontSize( HWND hDlg, int points)
+{
+    int i,n;
+    int ret = 0;
+    /* look for fitting font size in combobox3 */
+    n=SendDlgItemMessageA(hDlg, cmb3, CB_GETCOUNT, 0, 0);
+    for (i=0;i<n;i++)
+    {
+        if (points == (int)SendDlgItemMessageA
+                (hDlg,cmb3, CB_GETITEMDATA,i,0))
+        {
+            SendDlgItemMessageA(hDlg,cmb3,CB_SETCURSEL,i,0);
+            SendMessageA(hDlg, WM_COMMAND,
+                    MAKEWPARAM(cmb3, CBN_SELCHANGE),
+                    (LPARAM)GetDlgItem(hDlg,cmb3));
+            ret = 1;
+            break;
+        }
+    }
+    return ret;
+}
+
+static INT CFn_FitFontStyle( HWND hDlg, LONG packedstyle )
+{
+    LONG id;
+    int i, ret = 0;
+    /* look for fitting font style in combobox2 */
+    for (i=0;i<TEXT_EXTRAS;i++)
+    {
+        id =SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, i, 0);
+        if (packedstyle == id)
+        {
+            SendDlgItemMessageA(hDlg, cmb2, CB_SETCURSEL, i, 0);
+            SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb2, CBN_SELCHANGE),
+                    (LPARAM)GetDlgItem(hDlg,cmb2));
+            ret = 1;
+            break;
+        }
+    }
+    return ret;
+}
+
+
+static INT CFn_FitCharSet( HWND hDlg, int charset )
+{
+    int i,n,cs;
+    /* look for fitting char set in combobox5 */
+    n=SendDlgItemMessageA(hDlg, cmb5, CB_GETCOUNT, 0, 0);
+    for (i=0;i<n;i++)
+    {
+        cs =SendDlgItemMessageA(hDlg, cmb5, CB_GETITEMDATA, i, 0);
+        if (charset == cs)
+        {
+            SendDlgItemMessageA(hDlg, cmb5, CB_SETCURSEL, i, 0);
+            SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb5, CBN_SELCHANGE),
+                    (LPARAM)GetDlgItem(hDlg,cmb2));
+            return 1;
+        }
+    }
+    /* no charset fits: select the first one in the list */
+    SendDlgItemMessageA(hDlg, cmb5, CB_SETCURSEL, 0, 0);
+    SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb5, CBN_SELCHANGE),
+            (LPARAM)GetDlgItem(hDlg,cmb2));
+    return 0;
+}
+
+/***********************************************************************
+ *                 FontStyleEnumProc32                     [internal]
+ */
+static INT WINAPI FontStyleEnumProc( const ENUMLOGFONTEXA *lpElfex,
+        const TEXTMETRICA *metrics, DWORD dwFontType, LPARAM lParam )
+{
+    LPCFn_ENUMSTRUCT s=(LPCFn_ENUMSTRUCT)lParam;
+    HWND hcmb2=s->hWnd1;
+    HWND hcmb3=s->hWnd2;
+    HWND hDlg=GetParent(hcmb3);
+    return AddFontStyle( lpElfex, (const NEWTEXTMETRICEXA *) metrics,
+            dwFontType, s->lpcf32a, hcmb2, hcmb3, hDlg, FALSE);
+}
+
+/***********************************************************************
+ *           CFn_WMInitDialog                            [internal]
+ */
+LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
+                         LPCHOOSEFONTA lpcf)
+{
+    HDC hdc;
+    int i,j,init=0;
+    long pstyle;
+    CFn_ENUMSTRUCT s;
+    LPLOGFONTA lpxx;
+    HCURSOR hcursor=SetCursor(LoadCursorA(0,(LPSTR)IDC_WAIT));
+
+    SetPropA(hDlg, WINE_FONTDATA, (HANDLE)lParam);
+    lpxx=lpcf->lpLogFont;
+    TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
+
+    if (lpcf->lStructSize != sizeof(CHOOSEFONTA))
+    {
+        ERR("structure size failure !!!\n");
+        EndDialog (hDlg, 0);
+        return FALSE;
+    }
+    if (!himlTT)
+        himlTT = ImageList_LoadImageA( COMDLG32_hInstance, MAKEINTRESOURCEA(38),
+                TTBITMAP_XSIZE, 0, CLR_DEFAULT, IMAGE_BITMAP, 0);
+
+    if (!(lpcf->Flags & CF_SHOWHELP) || !IsWindow(lpcf->hwndOwner))
+        ShowWindow(GetDlgItem(hDlg,pshHelp),SW_HIDE);
+    if (!(lpcf->Flags & CF_APPLY))
+        ShowWindow(GetDlgItem(hDlg,psh3),SW_HIDE);
+    if (lpcf->Flags & CF_EFFECTS)
+    {
+        for (i=0;i<TEXT_COLORS;i++)
+        {
+            char name[30];
+
+            if( LoadStringA(COMDLG32_hInstance, IDS_COLOR_BLACK+i, name,
+                        sizeof(name)/sizeof(*name) )==0 )
+            {
+                strcpy( name, "[color name]" );
+            }
+            j=SendDlgItemMessageA(hDlg, cmb4, CB_ADDSTRING, 0, (LPARAM)name);
+            SendDlgItemMessageA(hDlg, cmb4, CB_SETITEMDATA16, j, textcolors[j]);
+            /* look for a fitting value in color combobox */
+            if (textcolors[j]==lpcf->rgbColors)
+                SendDlgItemMessageA(hDlg,cmb4, CB_SETCURSEL,j,0);
+        }
+    }
+    else
+    {
+        ShowWindow(GetDlgItem(hDlg,cmb4),SW_HIDE);
+        ShowWindow(GetDlgItem(hDlg,chx1),SW_HIDE);
+        ShowWindow(GetDlgItem(hDlg,chx2),SW_HIDE);
+        ShowWindow(GetDlgItem(hDlg,grp1),SW_HIDE);
+        ShowWindow(GetDlgItem(hDlg,stc4),SW_HIDE);
+    }
+    if(!(hdc = CFn_GetDC(lpcf)))
+    {
+        EndDialog (hDlg, 0);
+        return FALSE;
+    }
+    s.hWnd1=GetDlgItem(hDlg,cmb1);
+    s.lpcf32a=lpcf;
+    do {
+        LOGFONTA elf;
+        s.added = 0;
+        elf.lfCharSet = DEFAULT_CHARSET; /* enum all charsets */
+        elf.lfPitchAndFamily = 0;
+        elf.lfFaceName[0] = '\0'; /* enum all fonts */
+        if (!EnumFontFamiliesExA(hdc, &elf, (FONTENUMPROCA)FontFamilyEnumProc, (LPARAM)&s, 0))
+        {
+            TRACE("EnumFontFamiliesEx returns 0\n");
+            break;
+        }
+        if (s.added) break;
+        if (lpcf->Flags & CF_FIXEDPITCHONLY) {
+            FIXME("No font found with fixed pitch only, dropping flag.\n");
+            lpcf->Flags &= ~CF_FIXEDPITCHONLY;
+            continue;
+        }
+        if (lpcf->Flags & CF_TTONLY) {
+            FIXME("No font found with truetype only, dropping flag.\n");
+            lpcf->Flags &= ~CF_TTONLY;
+            continue;
+        }
+        break;
+    } while (1);
+
+
+    if (lpcf->Flags & CF_INITTOLOGFONTSTRUCT)
+    {
+        /* look for fitting font name in combobox1 */
+        j=SendDlgItemMessageA(hDlg,cmb1,CB_FINDSTRING,-1,(LONG)lpxx->lfFaceName);
+        if (j!=CB_ERR)
+        {
+            INT height = lpxx->lfHeight < 0 ? -lpxx->lfHeight :
+                lpxx->lfHeight;
+            INT points;
+            int charset = lpxx->lfCharSet;
+            points = MulDiv( height, 72, GetDeviceCaps(hdc, LOGPIXELSY));
+            pstyle = MAKELONG(lpxx->lfWeight > FW_MEDIUM ? FW_BOLD:
+                    FW_NORMAL,lpxx->lfItalic !=0);
+            SendDlgItemMessageA(hDlg, cmb1, CB_SETCURSEL, j, 0);
+            SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb1, CBN_SELCHANGE),
+                    (LPARAM)GetDlgItem(hDlg,cmb1));
+            init=1;
+            /* look for fitting font style in combobox2 */
+            CFn_FitFontStyle(hDlg, pstyle);
+            /* look for fitting font size in combobox3 */
+            CFn_FitFontSize(hDlg, points);
+            CFn_FitCharSet( hDlg, charset );
+        }
+    }
+    if (!init)
+    {
+        SendDlgItemMessageA(hDlg,cmb1,CB_SETCURSEL,0,0);
+        SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(cmb1, CBN_SELCHANGE),
+                (LPARAM)GetDlgItem(hDlg,cmb1));
+    }
+    if (lpcf->Flags & CF_USESTYLE && lpcf->lpszStyle)
+    {
+        j=SendDlgItemMessageA(hDlg,cmb2,CB_FINDSTRING,-1,(LONG)lpcf->lpszStyle);
+        if (j!=CB_ERR)
+        {
+            j=SendDlgItemMessageA(hDlg,cmb2,CB_SETCURSEL,j,0);
+            SendMessageA(hDlg,WM_COMMAND,cmb2,
+                    MAKELONG(HWND_16(GetDlgItem(hDlg,cmb2)),CBN_SELCHANGE));
+        }
+    }
+    CFn_ReleaseDC(lpcf, hdc);
+    SetCursor(hcursor);
+    return TRUE;
+}
+
+
+/***********************************************************************
+ *           CFn_WMMeasureItem                           [internal]
+ */
+LRESULT CFn_WMMeasureItem(HWND hDlg, WPARAM wParam, LPARAM lParam)
+{
+    HDC hdc;
+    HFONT hfontprev;
+    TEXTMETRICW tm;
+    LPMEASUREITEMSTRUCT lpmi=(LPMEASUREITEMSTRUCT)lParam;
+    if (!himlTT)
+        himlTT = ImageList_LoadImageA( COMDLG32_hInstance, MAKEINTRESOURCEA(38),
+                TTBITMAP_XSIZE, 0, CLR_DEFAULT, IMAGE_BITMAP, 0);
+    ImageList_GetIconSize( himlTT, 0, &lpmi->itemHeight);
+    lpmi->itemHeight += 2;
+    /* use MAX of bitmap height and tm.tmHeight .*/
+    hdc=GetDC( hDlg);
+    if(!hdc) return 0;
+    hfontprev = SelectObject( hdc, GetStockObject( SYSTEM_FONT));
+    GetTextMetricsW( hdc, &tm);
+    if( tm.tmHeight > lpmi->itemHeight) lpmi->itemHeight = tm.tmHeight;
+    SelectObject( hdc, hfontprev);
+    ReleaseDC( hDlg, hdc);
+    return 0;
+}
+
+
+/***********************************************************************
+ *           CFn_WMDrawItem                              [internal]
+ */
+LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam)
+{
+    HBRUSH hBrush;
+    char buffer[40];
+    COLORREF cr, oldText=0, oldBk=0;
+    RECT rect;
+    int nFontType;
+    int idx;
+    LPDRAWITEMSTRUCT lpdi = (LPDRAWITEMSTRUCT)lParam;
+
+    if (lpdi->itemID == (UINT)-1)  /* got no items */
+        DrawFocusRect(lpdi->hDC, &lpdi->rcItem);
+    else
+    {
+        if (lpdi->CtlType == ODT_COMBOBOX)
+        {
+            if (lpdi->itemState & ODS_SELECTED)
+            {
+                hBrush=GetSysColorBrush(COLOR_HIGHLIGHT);
+                oldText=SetTextColor(lpdi->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
+                oldBk=SetBkColor(lpdi->hDC, GetSysColor(COLOR_HIGHLIGHT));
+            }  else
+            {
+                hBrush = SelectObject(lpdi->hDC, GetStockObject(LTGRAY_BRUSH));
+                SelectObject(lpdi->hDC, hBrush);
+            }
+            FillRect(lpdi->hDC, &lpdi->rcItem, hBrush);
+        }
+        else
+            return TRUE;        /* this should never happen */
+
+        rect=lpdi->rcItem;
+        switch (lpdi->CtlID)
+        {
+        case cmb1:
+            /* TRACE(commdlg,"WM_Drawitem cmb1\n"); */
+            SendMessageA(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID,
+                         (LPARAM)buffer);
+            TextOutA(lpdi->hDC, lpdi->rcItem.left + TTBITMAP_XSIZE + 10,
+                     lpdi->rcItem.top, buffer, strlen(buffer));
+            nFontType = SendMessageA(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L);
+            idx = -1;
+            if (nFontType & TRUETYPE_FONTTYPE) {
+                idx = 0;  /* picture: TT */
+                if( nFontType & NTM_TT_OPENTYPE)
+                    idx = 2; /* picture: O */
+            } else if( nFontType & NTM_PS_OPENTYPE)
+                idx = 3; /* picture: O+ps */
+            else if( nFontType & NTM_TYPE1)
+                idx = 4; /* picture: a */
+            else if( nFontType & DEVICE_FONTTYPE)
+                idx = 1; /* picture: printer */
+            if( idx >= 0)
+                ImageList_Draw( himlTT, idx, lpdi->hDC, lpdi->rcItem.left,
+                        lpdi->rcItem.top, ILD_TRANSPARENT);
+            break;
+        case cmb2:
+        case cmb3:
+            /* TRACE(commdlg,"WM_DRAWITEN cmb2,cmb3\n"); */
+        case cmb5:
+            SendMessageA(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID,
+                         (LPARAM)buffer);
+            TextOutA(lpdi->hDC, lpdi->rcItem.left,
+                     lpdi->rcItem.top, buffer, strlen(buffer));
+            break;
+
+        case cmb4:
+            /* TRACE(commdlg,"WM_DRAWITEM cmb4 (=COLOR)\n"); */
+            SendMessageA(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID,
+                         (LPARAM)buffer);
+            TextOutA(lpdi->hDC, lpdi->rcItem.left +  25+5,
+                     lpdi->rcItem.top, buffer, strlen(buffer));
+            cr = SendMessageA(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L);
+            hBrush = CreateSolidBrush(cr);
+            if (hBrush)
+            {
+                hBrush = SelectObject (lpdi->hDC, hBrush) ;
+                rect.right=rect.left+25;
+                rect.top++;
+                rect.left+=5;
+                rect.bottom--;
+                Rectangle( lpdi->hDC, rect.left, rect.top,
+                           rect.right, rect.bottom );
+                DeleteObject( SelectObject (lpdi->hDC, hBrush)) ;
+            }
+            rect=lpdi->rcItem;
+            rect.left+=25+5;
+            break;
+
+        default:
+            return TRUE;  /* this should never happen */
+        }
+        if (lpdi->itemState & ODS_SELECTED)
+        {
+            SetTextColor(lpdi->hDC, oldText);
+            SetBkColor(lpdi->hDC, oldBk);
+        }
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *           CFn_WMCommand                               [internal]
+ */
+LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam,
+        LPCHOOSEFONTA lpcf)
+{
+    int i;
+    long l;
+    HDC hdc;
+    LPLOGFONTA lpxx=lpcf->lpLogFont;
+
+    TRACE("WM_COMMAND wParam=%08lX lParam=%08lX\n", (LONG)wParam, lParam);
+    switch (LOWORD(wParam))
+    {
+    case cmb1:
+        if (HIWORD(wParam)==CBN_SELCHANGE)
+        {
+            INT pointsize; /* save current pointsize */
+            LONG pstyle;  /* save current style */
+            int charset;
+            int idx;
+            if(!(hdc = CFn_GetDC(lpcf)))
+            {
+                EndDialog (hDlg, 0);
+                return TRUE;
+            }
+            idx = SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0);
+            pointsize = (int)SendDlgItemMessageA( hDlg, cmb3, CB_GETITEMDATA,
+                    idx, 0);
+            idx = SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0);
+            pstyle = SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, idx, 0);
+            idx = SendDlgItemMessageA(hDlg, cmb5, CB_GETCURSEL, 0, 0);
+            charset = SendDlgItemMessageA(hDlg, cmb5, CB_GETITEMDATA, idx, 0);
+            
+            SendDlgItemMessageA(hDlg, cmb2, CB_RESETCONTENT, 0, 0);
+            SendDlgItemMessageA(hDlg, cmb3, CB_RESETCONTENT, 0, 0);
+            SendDlgItemMessageA(hDlg, cmb5, CB_RESETCONTENT, 0, 0);
+            i=SendDlgItemMessageA(hDlg, cmb1, CB_GETCURSEL, 0, 0);
+            if (i!=CB_ERR)
+            {
+                HCURSOR hcursor=SetCursor(LoadCursorA(0,(LPSTR)IDC_WAIT));
+                CFn_ENUMSTRUCT s;
+                LOGFONTA enumlf;
+                SendDlgItemMessageA(hDlg, cmb1, CB_GETLBTEXT, i,
+                                    (LPARAM)enumlf.lfFaceName);
+                TRACE("WM_COMMAND/cmb1 =>%s\n",enumlf.lfFaceName);
+                s.hWnd1=GetDlgItem(hDlg, cmb2);
+                s.hWnd2=GetDlgItem(hDlg, cmb3);
+                s.lpcf32a=lpcf;
+                enumlf.lfCharSet = DEFAULT_CHARSET; /* enum all charsets */
+                enumlf.lfPitchAndFamily = 0;
+                EnumFontFamiliesExA(hdc, &enumlf,
+                        (FONTENUMPROCA)FontStyleEnumProc, (LPARAM)&s, 0);
+                CFn_FitFontStyle(hDlg, pstyle);
+                if( pointsize != CB_ERR) CFn_FitFontSize(hDlg, pointsize);
+                if( charset != CB_ERR) CFn_FitCharSet( hDlg, charset );
+                SetCursor(hcursor);
+            }
+            CFn_ReleaseDC(lpcf, hdc);
+        }
+    case chx1:
+    case chx2:
+    case cmb2:
+    case cmb3:
+    case cmb5:
+        if (HIWORD(wParam)==CBN_SELCHANGE || HIWORD(wParam)== BN_CLICKED )
+        {
+            char str[256];
+            WINDOWINFO wininfo;
+
+            TRACE("WM_COMMAND/cmb2,3 =%08lX\n", lParam);
+            i=SendDlgItemMessageA(hDlg,cmb1,CB_GETCURSEL,0,0);
+            if (i==CB_ERR)
+                i=GetDlgItemTextA( hDlg, cmb1, str, 256 );
+            else
+            {
+                SendDlgItemMessageA(hDlg,cmb1,CB_GETLBTEXT,i,
+                                    (LPARAM)str);
+                l=SendDlgItemMessageA(hDlg,cmb1,CB_GETITEMDATA,i,0);
+                lpcf->nFontType = LOWORD(l);
+                /* FIXME:   lpcf->nFontType |= ....  SIMULATED_FONTTYPE and so */
+                /* same value reported to the EnumFonts
+                   call back with the extra FONTTYPE_...  bits added */
+                lpxx->lfPitchAndFamily = HIWORD(l) >> 8;
+            }
+            strcpy(lpxx->lfFaceName,str);
+            i=SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0);
+            if (i!=CB_ERR)
+            {
+                l=SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, i, 0);
+                if (0!=(lpxx->lfItalic=HIWORD(l)))
+                    lpcf->nFontType |= ITALIC_FONTTYPE;
+                if ((lpxx->lfWeight=LOWORD(l)) > FW_MEDIUM)
+                    lpcf->nFontType |= BOLD_FONTTYPE;
+            }
+            i=SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0);
+            if( i != CB_ERR) 
+                lpcf->iPointSize = 10 * LOWORD(SendDlgItemMessageA(hDlg, cmb3,
+                            CB_GETITEMDATA , i, 0));
+            else
+                lpcf->iPointSize = 100;
+            hdc = CFn_GetDC(lpcf);
+            if( hdc)
+            {
+                lpxx->lfHeight = - MulDiv( lpcf->iPointSize ,
+                        GetDeviceCaps(hdc, LOGPIXELSY), 720);
+                CFn_ReleaseDC(lpcf, hdc);
+            } else 
+                lpxx->lfHeight = -lpcf->iPointSize / 10;
+            i=SendDlgItemMessageA(hDlg, cmb5, CB_GETCURSEL, 0, 0);
+            if (i!=CB_ERR)
+                lpxx->lfCharSet=SendDlgItemMessageA(hDlg, cmb5, CB_GETITEMDATA, i, 0);
+            else
+                lpxx->lfCharSet = DEFAULT_CHARSET;
+            lpxx->lfStrikeOut=IsDlgButtonChecked(hDlg,chx1);
+            lpxx->lfUnderline=IsDlgButtonChecked(hDlg,chx2);
+            lpxx->lfWidth=lpxx->lfOrientation=lpxx->lfEscapement=0;
+            lpxx->lfOutPrecision=OUT_DEFAULT_PRECIS;
+            lpxx->lfClipPrecision=CLIP_DEFAULT_PRECIS;
+            lpxx->lfQuality=DEFAULT_QUALITY;
+
+            wininfo.cbSize=sizeof(wininfo);
+
+            if( GetWindowInfo( GetDlgItem( hDlg, stc5), &wininfo ) )
+            {
+                MapWindowPoints( 0, hDlg, (LPPOINT) &wininfo.rcWindow, 2);
+                InvalidateRect( hDlg, &wininfo.rcWindow, TRUE );
+            }
+        }
+        break;
+
+    case cmb4:
+        i=SendDlgItemMessageA(hDlg, cmb4, CB_GETCURSEL, 0, 0);
+        if (i!=CB_ERR)
+        {
+            WINDOWINFO wininfo;
+
+            lpcf->rgbColors=textcolors[i];
+            wininfo.cbSize=sizeof(wininfo);
+
+            if( GetWindowInfo( GetDlgItem( hDlg, stc5), &wininfo ) )
+            {
+                MapWindowPoints( 0, hDlg, (LPPOINT) &wininfo.rcWindow, 2);
+                InvalidateRect( hDlg, &wininfo.rcWindow, TRUE );
+            }
+        }
+        break;
+
+    case psh15:
+        i=RegisterWindowMessageA( HELPMSGSTRINGA );
+        if (lpcf->hwndOwner)
+            SendMessageA(lpcf->hwndOwner, i, 0, (LPARAM)GetPropA(hDlg, WINE_FONTDATA));
+        /* if (CFn_HookCallChk(lpcf))
+           CallWindowProc16(lpcf->lpfnHook,hDlg,WM_COMMAND,psh15,(LPARAM)lpcf);*/
+        break;
+
+    case IDOK:
+        if (  (!(lpcf->Flags & CF_LIMITSIZE))  ||
+              ( (lpcf->Flags & CF_LIMITSIZE) &&
+                (lpcf->iPointSize >= 10 * lpcf->nSizeMin) &&
+                (lpcf->iPointSize <= 10 * lpcf->nSizeMax)))
+            EndDialog(hDlg, TRUE);
+        else
+        {
+            char buffer[80];
+            sprintf(buffer,"Select a font size between %d and %d points.",
+                    lpcf->nSizeMin,lpcf->nSizeMax);
+            MessageBoxA(hDlg, buffer, NULL, MB_OK);
+        }
+        return(TRUE);
+    case IDCANCEL:
+        EndDialog(hDlg, FALSE);
+        return(TRUE);
+    }
+    return(FALSE);
+}
+
+LRESULT CFn_WMDestroy(HWND hwnd, WPARAM wParam, LPARAM lParam)
+{
+    return TRUE;
+}
+
+LRESULT CFn_WMPaint(HWND hDlg, WPARAM wParam, LPARAM lParam,
+        LPCHOOSEFONTA lpcf )
+{
+    WINDOWINFO info;
+
+    info.cbSize=sizeof(info);
+
+    if( GetWindowInfo( GetDlgItem( hDlg, stc5), &info ) )
+    {
+        PAINTSTRUCT ps;
+        HDC hdc;
+        HPEN hOrigPen;
+        HFONT hOrigFont;
+        COLORREF rgbPrev;
+        LOGFONTA lf = *(lpcf->lpLogFont);
+
+        MapWindowPoints( 0, hDlg, (LPPOINT) &info.rcWindow, 2);
+        hdc=BeginPaint( hDlg, &ps );
+
+        /* Paint frame */
+        MoveToEx( hdc, info.rcWindow.left, info.rcWindow.bottom, NULL );
+        hOrigPen=SelectObject( hdc, CreatePen( PS_SOLID, 2,
+                                               GetSysColor( COLOR_3DSHADOW ) ));
+        LineTo( hdc, info.rcWindow.left, info.rcWindow.top );
+        LineTo( hdc, info.rcWindow.right, info.rcWindow.top );
+        DeleteObject(SelectObject( hdc, CreatePen( PS_SOLID, 2,
+                                                   GetSysColor( COLOR_3DLIGHT ) )));
+        LineTo( hdc, info.rcWindow.right, info.rcWindow.bottom );
+        LineTo( hdc, info.rcWindow.left, info.rcWindow.bottom );
+        DeleteObject(SelectObject( hdc, hOrigPen ));
+
+        /* Draw the sample text itself */
+        info.rcWindow.right--;
+        info.rcWindow.bottom--;
+        info.rcWindow.top++;
+        info.rcWindow.left++;
+        hOrigFont = SelectObject( hdc, CreateFontIndirectA( &lf ) );
+        rgbPrev=SetTextColor( hdc, lpcf->rgbColors );
+        
+        DrawTextW( hdc,
+                sample_lang_text[CHARSET_ORDER[lpcf->lpLogFont->lfCharSet]],
+                -1, &info.rcWindow, DT_CENTER|DT_VCENTER|DT_SINGLELINE );
+
+        DeleteObject(SelectObject( hdc, hOrigFont ));
+        EndPaint( hDlg, &ps );
+    }
+
+    return FALSE;
+}
+
+/***********************************************************************
+ *           FormatCharDlgProcA   [internal]
+ */
+INT_PTR CALLBACK FormatCharDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam,
+        LPARAM lParam)
+{
+    LPCHOOSEFONTA lpcf;
+    INT_PTR res = FALSE;
+    if (uMsg!=WM_INITDIALOG)
+    {
+        lpcf=(LPCHOOSEFONTA)GetPropA(hDlg, WINE_FONTDATA);
+        if (!lpcf && uMsg != WM_MEASUREITEM)
+            return FALSE;
+        if (CFn_HookCallChk32(lpcf))
+            res=CallWindowProcA((WNDPROC)lpcf->lpfnHook, hDlg, uMsg, wParam, lParam);
+        if (res)
+            return res;
+    }
+    else
+    {
+        lpcf=(LPCHOOSEFONTA)lParam;
+        if (!CFn_WMInitDialog(hDlg, wParam, lParam, lpcf))
+        {
+            TRACE("CFn_WMInitDialog returned FALSE\n");
+            return FALSE;
+        }
+        if (CFn_HookCallChk32(lpcf))
+            return CallWindowProcA((WNDPROC)lpcf->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
+    }
+    switch (uMsg)
+    {
+    case WM_MEASUREITEM:
+        return CFn_WMMeasureItem(hDlg, wParam, lParam);
+    case WM_DRAWITEM:
+        return CFn_WMDrawItem(hDlg, wParam, lParam);
+    case WM_COMMAND:
+        return CFn_WMCommand(hDlg, wParam, lParam, lpcf);
+    case WM_DESTROY:
+        return CFn_WMDestroy(hDlg, wParam, lParam);
+    case WM_CHOOSEFONT_GETLOGFONT:
+        TRACE("WM_CHOOSEFONT_GETLOGFONT lParam=%08lX\n",
+                lParam);
+        FIXME("current logfont back to caller\n");
+        break;
+    case WM_PAINT:
+        return CFn_WMPaint(hDlg, wParam, lParam, lpcf);
+    }
+    return res;
+}
+
+/***********************************************************************
+ *           FormatCharDlgProcW   [internal]
+ */
+INT_PTR CALLBACK FormatCharDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam,
+        LPARAM lParam)
+{
+    LPCHOOSEFONTW lpcf32w;
+    LPCHOOSEFONTA lpcf32a;
+    INT_PTR res = FALSE;
+    if (uMsg!=WM_INITDIALOG)
+    {
+        lpcf32w=(LPCHOOSEFONTW)GetPropA(hDlg, WINE_FONTDATA);
+        if (!lpcf32w)
+            return FALSE;
+        if (CFn_HookCallChk32((LPCHOOSEFONTA)lpcf32w))
+            res=CallWindowProcW((WNDPROC)lpcf32w->lpfnHook, hDlg, uMsg, wParam, lParam);
+        if (res)
+            return res;
+    }
+    else
+    {
+        lpcf32w=(LPCHOOSEFONTW)lParam;
+        lpcf32a=(LPCHOOSEFONTA)lpcf32w->lpTemplateName;
+        if (!CFn_WMInitDialog(hDlg, wParam, lParam, lpcf32a))
+        {
+            TRACE("CFn_WMInitDialog returned FALSE\n");
+            return FALSE;
+        }
+        if (CFn_HookCallChk32((LPCHOOSEFONTA)lpcf32w))
+            return CallWindowProcW((WNDPROC)lpcf32w->lpfnHook,hDlg,WM_INITDIALOG,wParam,lParam);
+    }
+    lpcf32a=(LPCHOOSEFONTA)lpcf32w->lpTemplateName;
+    switch (uMsg)
+    {
+    case WM_MEASUREITEM:
+        return CFn_WMMeasureItem(hDlg, wParam, lParam);
+    case WM_DRAWITEM:
+        return CFn_WMDrawItem(hDlg, wParam, lParam);
+    case WM_COMMAND:
+        return CFn_WMCommand(hDlg, wParam, lParam, lpcf32a);
+    case WM_DESTROY:
+        return CFn_WMDestroy(hDlg, wParam, lParam);
+    case WM_CHOOSEFONT_GETLOGFONT:
+        TRACE("WM_CHOOSEFONT_GETLOGFONT lParam=%08lX\n",
+                lParam);
+        FIXME("current logfont back to caller\n");
+        break;
+    }
+    return res;
+}
diff --git a/reactos/lib/comdlg32/fontdlg16.c b/reactos/lib/comdlg32/fontdlg16.c
new file mode 100644 (file)
index 0000000..bb10e40
--- /dev/null
@@ -0,0 +1,351 @@
+/*
+ * COMMDLG - Font Dialog
+ *
+ * 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 <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winnls.h"
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
+#include "commdlg.h"
+#include "dlgs.h"
+#include "wine/debug.h"
+#include "cderr.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+#include "cdlg16.h"
+
+static void FONT_LogFont16To32A( const LPLOGFONT16 font16, LPLOGFONTA font32 )
+{
+    font32->lfHeight = font16->lfHeight;
+    font32->lfWidth = font16->lfWidth;
+    font32->lfEscapement = font16->lfEscapement;
+    font32->lfOrientation = font16->lfOrientation;
+    font32->lfWeight = font16->lfWeight;
+    font32->lfItalic = font16->lfItalic;
+    font32->lfUnderline = font16->lfUnderline;
+    font32->lfStrikeOut = font16->lfStrikeOut;
+    font32->lfCharSet = font16->lfCharSet;
+    font32->lfOutPrecision = font16->lfOutPrecision;
+    font32->lfClipPrecision = font16->lfClipPrecision;
+    font32->lfQuality = font16->lfQuality;
+    font32->lfPitchAndFamily = font16->lfPitchAndFamily;
+    lstrcpynA( font32->lfFaceName, font16->lfFaceName, LF_FACESIZE );
+};
+
+static void FONT_Metrics16To32A( const TEXTMETRIC16 *pm16,
+                                 NEWTEXTMETRICEXA *pnm32a)
+{
+    ZeroMemory( pnm32a, sizeof(NEWTEXTMETRICEXA));
+    /* NOTE: only the fields used by AddFontStyle() are filled in */
+    pnm32a->ntmTm.tmHeight = pm16->tmHeight;
+    pnm32a->ntmTm.tmExternalLeading = pm16->tmExternalLeading;
+};
+
+static void CFn_CHOOSEFONT16to32A(LPCHOOSEFONT16 chf16, LPCHOOSEFONTA chf32a)
+{
+  chf32a->lStructSize=sizeof(CHOOSEFONTA);
+  chf32a->hwndOwner=HWND_32(chf16->hwndOwner);
+  chf32a->hDC=HDC_32(chf16->hDC);
+  chf32a->iPointSize=chf16->iPointSize;
+  chf32a->Flags=chf16->Flags;
+  chf32a->rgbColors=chf16->rgbColors;
+  chf32a->lCustData=chf16->lCustData;
+  chf32a->lpfnHook=NULL;
+  chf32a->lpTemplateName=MapSL(chf16->lpTemplateName);
+  chf32a->hInstance=HINSTANCE_32(chf16->hInstance);
+  chf32a->lpszStyle=MapSL(chf16->lpszStyle);
+  chf32a->nFontType=chf16->nFontType;
+  chf32a->nSizeMax=chf16->nSizeMax;
+  chf32a->nSizeMin=chf16->nSizeMin;
+  FONT_LogFont16To32A(MapSL(chf16->lpLogFont), chf32a->lpLogFont);
+};
+
+/***********************************************************************
+ *                          CFn_HookCallChk                 [internal]
+ */
+static BOOL CFn_HookCallChk(LPCHOOSEFONT16 lpcf)
+{
+ if (lpcf)
+  if(lpcf->Flags & CF_ENABLEHOOK)
+   if (lpcf->lpfnHook)
+    return TRUE;
+ return FALSE;
+}
+
+/***********************************************************************
+ *                FontFamilyEnumProc                     (COMMDLG.19)
+ */
+INT16 WINAPI FontFamilyEnumProc16( SEGPTR logfont, SEGPTR metrics,
+                                   UINT16 nFontType, LPARAM lParam )
+{
+  HWND hwnd=HWND_32(LOWORD(lParam));
+  HWND hDlg=GetParent(hwnd);
+  LPCHOOSEFONT16 lpcf=(LPCHOOSEFONT16)GetWindowLongA(hDlg, DWL_USER);
+  LOGFONT16 *lplf = MapSL( logfont );
+  TEXTMETRIC16 *lpmtrx16 = MapSL(metrics);
+  ENUMLOGFONTEXA elf32a;
+  NEWTEXTMETRICEXA nmtrx32a;
+  FONT_LogFont16To32A(lplf, &(elf32a.elfLogFont));
+  FONT_Metrics16To32A(lpmtrx16, &nmtrx32a);
+  return AddFontFamily(&elf32a, &nmtrx32a, nFontType,
+          (LPCHOOSEFONTA)lpcf->lpTemplateName, hwnd,NULL);
+}
+
+/***********************************************************************
+ *                 FontStyleEnumProc                     (COMMDLG.18)
+ */
+INT16 WINAPI FontStyleEnumProc16( SEGPTR logfont, SEGPTR metrics,
+                                  UINT16 nFontType, LPARAM lParam )
+{
+  HWND hcmb2=HWND_32(LOWORD(lParam));
+  HWND hcmb3=HWND_32(HIWORD(lParam));
+  HWND hDlg=GetParent(hcmb3);
+  LPCHOOSEFONT16 lpcf=(LPCHOOSEFONT16)GetWindowLongA(hDlg, DWL_USER);
+  LOGFONT16 *lplf = MapSL(logfont);
+  TEXTMETRIC16 *lpmtrx16 = MapSL(metrics);
+  ENUMLOGFONTEXA elf32a;
+  NEWTEXTMETRICEXA nmtrx32a;
+  FONT_LogFont16To32A(lplf, &(elf32a.elfLogFont));
+  FONT_Metrics16To32A(lpmtrx16, &nmtrx32a);
+  return AddFontStyle(&elf32a, &nmtrx32a, nFontType,
+          (LPCHOOSEFONTA)lpcf->lpTemplateName, hcmb2, hcmb3, hDlg, TRUE);
+}
+
+/***********************************************************************
+ *                        ChooseFont   (COMMDLG.15)
+ */
+BOOL16 WINAPI ChooseFont16(LPCHOOSEFONT16 lpChFont)
+{
+    HINSTANCE16 hInst;
+    HANDLE16 hDlgTmpl16 = 0, hResource16 = 0;
+    HGLOBAL16 hGlobal16 = 0;
+    BOOL16 bRet = FALSE;
+    LPCVOID template;
+    FARPROC16 ptr;
+    CHOOSEFONTA cf32a;
+    LOGFONTA lf32a;
+    LOGFONT16 *font16;
+    SEGPTR lpTemplateName;
+
+    cf32a.lpLogFont=&lf32a;
+    CFn_CHOOSEFONT16to32A(lpChFont, &cf32a);
+
+    TRACE("ChooseFont\n");
+    if (!lpChFont) return FALSE;
+
+    if (TRACE_ON(commdlg))
+       _dump_cf_flags(lpChFont->Flags);
+
+    if (lpChFont->Flags & CF_ENABLETEMPLATEHANDLE)
+    {
+        if (!(template = LockResource16( lpChFont->hInstance )))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return FALSE;
+        }
+    }
+    else if (lpChFont->Flags & CF_ENABLETEMPLATE)
+    {
+        HANDLE16 hResInfo;
+        if (!(hResInfo = FindResource16( lpChFont->hInstance,
+                                         MapSL(lpChFont->lpTemplateName),
+                                         (LPSTR)RT_DIALOG)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+            return FALSE;
+        }
+        if (!(hDlgTmpl16 = LoadResource16( lpChFont->hInstance, hResInfo )) ||
+            !(template = LockResource16( hDlgTmpl16 )))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return FALSE;
+        }
+    }
+    else
+    {
+       HRSRC hResInfo;
+       HGLOBAL hDlgTmpl32;
+        LPCVOID template32;
+        DWORD size;
+        if (!(hResInfo = FindResourceA(COMDLG32_hInstance, "CHOOSE_FONT", (LPSTR)RT_DIALOG)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+            return FALSE;
+        }
+        if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo)) ||
+            !(template32 = LockResource(hDlgTmpl32)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return FALSE;
+        }
+        size = SizeofResource(GetModuleHandleA("COMDLG32"), hResInfo);
+        hGlobal16 = GlobalAlloc16(0, size);
+        if (!hGlobal16)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE);
+            ERR("alloc failure for %ld bytes\n", size);
+            return FALSE;
+        }
+        template = GlobalLock16(hGlobal16);
+        if (!template)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE);
+            ERR("global lock failure for %x handle\n", hGlobal16);
+            GlobalFree16(hGlobal16);
+            return FALSE;
+        }
+        ConvertDialog32To16((LPVOID)template32, size, (LPVOID)template);
+        hDlgTmpl16 = hGlobal16;
+
+    }
+
+    /* lpTemplateName is not used in the dialog */
+    lpTemplateName=lpChFont->lpTemplateName;
+    lpChFont->lpTemplateName=(SEGPTR)&cf32a;
+
+    ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 16);
+    hInst = GetWindowLongA(HWND_32(lpChFont->hwndOwner), GWL_HINSTANCE);
+    bRet = DialogBoxIndirectParam16(hInst, hDlgTmpl16, lpChFont->hwndOwner,
+                     (DLGPROC16) ptr, (DWORD)lpChFont);
+    if (hResource16) FreeResource16(hDlgTmpl16);
+    if (hGlobal16)
+    {
+        GlobalUnlock16(hGlobal16);
+        GlobalFree16(hGlobal16);
+    }
+    lpChFont->lpTemplateName=lpTemplateName;
+
+    lpChFont->iPointSize = cf32a.iPointSize;
+    lpChFont->Flags = cf32a.Flags;
+    lpChFont->rgbColors = cf32a.rgbColors;
+    lpChFont->lCustData = cf32a.lCustData;
+    lpChFont->nFontType = cf32a.nFontType;
+
+    font16 = MapSL(lpChFont->lpLogFont);
+    font16->lfHeight = cf32a.lpLogFont->lfHeight;
+    font16->lfWidth = cf32a.lpLogFont->lfWidth;
+    font16->lfEscapement = cf32a.lpLogFont->lfEscapement;
+    font16->lfOrientation = cf32a.lpLogFont->lfOrientation;
+    font16->lfWeight = cf32a.lpLogFont->lfWeight;
+    font16->lfItalic = cf32a.lpLogFont->lfItalic;
+    font16->lfUnderline = cf32a.lpLogFont->lfUnderline;
+    font16->lfStrikeOut = cf32a.lpLogFont->lfStrikeOut;
+    font16->lfCharSet = cf32a.lpLogFont->lfCharSet;
+    font16->lfOutPrecision = cf32a.lpLogFont->lfOutPrecision;
+    font16->lfClipPrecision = cf32a.lpLogFont->lfClipPrecision;
+    font16->lfQuality = cf32a.lpLogFont->lfQuality;
+    font16->lfPitchAndFamily = cf32a.lpLogFont->lfPitchAndFamily;
+    lstrcpynA( font16->lfFaceName, cf32a.lpLogFont->lfFaceName, LF_FACESIZE );
+    return bRet;
+}
+
+/***********************************************************************
+ *           FormatCharDlgProc   (COMMDLG.16)
+             FIXME: 1. some strings are "hardcoded", but it's better load from sysres
+                    2. some CF_.. flags are not supported
+                    3. some TType extensions
+ */
+BOOL16 CALLBACK FormatCharDlgProc16(HWND16 hDlg16, UINT16 message,
+                                  WPARAM16 wParam, LPARAM lParam)
+{
+  HWND hDlg = HWND_32(hDlg16);
+  LPCHOOSEFONT16 lpcf;
+  BOOL16 res=0;
+  if (message!=WM_INITDIALOG)
+  {
+   lpcf=(LPCHOOSEFONT16)GetWindowLongA(hDlg, DWL_USER);
+   if (!lpcf && message != WM_MEASUREITEM)
+      return FALSE;
+   if (CFn_HookCallChk(lpcf))
+     res=CallWindowProc16((WNDPROC16)lpcf->lpfnHook,hDlg16,message,wParam,lParam);
+   if (res)
+    return res;
+  }
+  else
+  {
+    lpcf=(LPCHOOSEFONT16)lParam;
+    if (!CFn_WMInitDialog(hDlg, wParam, lParam, (LPCHOOSEFONTA)lpcf->lpTemplateName))
+    {
+      TRACE("CFn_WMInitDialog returned FALSE\n");
+      return FALSE;
+    }
+    if (CFn_HookCallChk(lpcf))
+      return CallWindowProc16((WNDPROC16)lpcf->lpfnHook,hDlg16,WM_INITDIALOG,wParam,lParam);
+  }
+  switch (message)
+    {
+    case WM_MEASUREITEM:
+        {
+            MEASUREITEMSTRUCT16* mis16 = MapSL(lParam);
+            MEASUREITEMSTRUCT mis;
+            mis.CtlType    = mis16->CtlType;
+            mis.CtlID      = mis16->CtlID;
+            mis.itemID     = mis16->itemID;
+            mis.itemWidth  = mis16->itemWidth;
+            mis.itemHeight = mis16->itemHeight;
+            mis.itemData   = mis16->itemData;
+            res = CFn_WMMeasureItem(hDlg, wParam, (LPARAM)&mis);
+            mis16->itemWidth  = (UINT16)mis.itemWidth;
+            mis16->itemHeight = (UINT16)mis.itemHeight;
+        }
+        break;
+    case WM_DRAWITEM:
+        {
+            DRAWITEMSTRUCT16* dis16 = MapSL(lParam);
+            DRAWITEMSTRUCT dis;
+            dis.CtlType    = dis16->CtlType;
+            dis.CtlID      = dis16->CtlID;
+            dis.itemID     = dis16->itemID;
+            dis.itemAction = dis16->itemAction;
+            dis.itemState  = dis16->itemState;
+            dis.hwndItem   = HWND_32(dis16->hwndItem);
+            dis.hDC        = HDC_32(dis16->hDC);
+            dis.itemData   = dis16->itemData;
+            CONV_RECT16TO32( &dis16->rcItem, &dis.rcItem );
+            res = CFn_WMDrawItem(hDlg, wParam, (LPARAM)&dis);
+        }
+        break;
+    case WM_COMMAND:
+        res=CFn_WMCommand(hDlg, MAKEWPARAM( wParam, HIWORD(lParam) ), LOWORD(lParam),
+                          (LPCHOOSEFONTA)lpcf->lpTemplateName);
+        break;
+    case WM_DESTROY:
+        res=CFn_WMDestroy(hDlg, wParam, lParam);
+        break;
+    case WM_CHOOSEFONT_GETLOGFONT:
+        TRACE("WM_CHOOSEFONT_GETLOGFONT lParam=%08lX\n", lParam);
+        FIXME("current logfont back to caller\n");
+        break;
+    case WM_PAINT:
+        res= CFn_WMPaint(hDlg, wParam, lParam, (LPCHOOSEFONTA)lpcf->lpTemplateName);
+        break;
+    }
+  return res;
+}
diff --git a/reactos/lib/comdlg32/generic.c b/reactos/lib/comdlg32/generic.c
new file mode 100644 (file)
index 0000000..cf69d8d
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * COMMDLG/COMDLG32 functions
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ * Copyright 1998,1999 Bertho Stultiens
+ * Copyright 1999 Klaas van Gend
+ *
+ * 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 <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "commdlg.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+#include "cdlg16.h"
+
+/***********************************************************************
+ *     DllEntryPoint                   [COMMDLG.32]
+ *
+ *    Initialization code for the COMMDLG DLL
+ *
+ * RETURNS:
+ */
+BOOL WINAPI COMMDLG_DllEntryPoint(DWORD Reason, HINSTANCE16 hInst, WORD ds, WORD HeapSize, DWORD res1, WORD res2)
+{
+       TRACE("(%08lx, %04x, %04x, %04x, %08lx, %04x)\n", Reason, hInst, ds, HeapSize, res1, res2);
+       return TRUE;
+}
+
+
+/***********************************************************************
+ *     CommDlgExtendedError16                  [COMMDLG.26]
+ *
+ * Get the last error value if a commdlg function fails.
+ *     RETURNS
+ *             Current error value which might not be valid
+ *             if a previous call succeeded.
+ */
+DWORD WINAPI CommDlgExtendedError16(void)
+{
+       return CommDlgExtendedError();
+}
diff --git a/reactos/lib/comdlg32/makefile b/reactos/lib/comdlg32/makefile
new file mode 100644 (file)
index 0000000..39e056f
--- /dev/null
@@ -0,0 +1,9 @@
+# $Id: makefile,v 1.1 2004/01/09 01:58:22 sedwards Exp $
+
+PATH_TO_TOP = ../..
+
+TARGET_TYPE = winedll
+
+include $(PATH_TO_TOP)/rules.mak
+
+include $(TOOLS_PATH)/helper.mk
diff --git a/reactos/lib/comdlg32/printdlg.c b/reactos/lib/comdlg32/printdlg.c
new file mode 100644 (file)
index 0000000..b0742b6
--- /dev/null
@@ -0,0 +1,2928 @@
+/*
+ * COMMDLG - Print Dialog
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ * Copyright 1999 Klaas van Gend
+ * Copyright 2000 Huw D M Davies
+ *
+ * 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 <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
+//#define NONAMELESSUNION
+//#define NONAMELESSSTRUCT
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winspool.h"
+#include "winerror.h"
+
+#include "wine/debug.h"
+
+#include "commdlg.h"
+#include "dlgs.h"
+#include "cderr.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+#include "printdlg.h"
+
+#include "ros.h"
+
+/* Yes these constants are the same, but we're just copying win98 */
+#define UPDOWN_ID 0x270f
+#define MAX_COPIES 9999
+
+/* Debugging info */
+static struct pd_flags psd_flags[] = {
+  {PSD_MINMARGINS,"PSD_MINMARGINS"},
+  {PSD_MARGINS,"PSD_MARGINS"},
+  {PSD_INTHOUSANDTHSOFINCHES,"PSD_INTHOUSANDTHSOFINCHES"},
+  {PSD_INHUNDREDTHSOFMILLIMETERS,"PSD_INHUNDREDTHSOFMILLIMETERS"},
+  {PSD_DISABLEMARGINS,"PSD_DISABLEMARGINS"},
+  {PSD_DISABLEPRINTER,"PSD_DISABLEPRINTER"},
+  {PSD_NOWARNING,"PSD_NOWARNING"},
+  {PSD_DISABLEORIENTATION,"PSD_DISABLEORIENTATION"},
+  {PSD_RETURNDEFAULT,"PSD_RETURNDEFAULT"},
+  {PSD_DISABLEPAPER,"PSD_DISABLEPAPER"},
+  {PSD_SHOWHELP,"PSD_SHOWHELP"},
+  {PSD_ENABLEPAGESETUPHOOK,"PSD_ENABLEPAGESETUPHOOK"},
+  {PSD_ENABLEPAGESETUPTEMPLATE,"PSD_ENABLEPAGESETUPTEMPLATE"},
+  {PSD_ENABLEPAGESETUPTEMPLATEHANDLE,"PSD_ENABLEPAGESETUPTEMPLATEHANDLE"},
+  {PSD_ENABLEPAGEPAINTHOOK,"PSD_ENABLEPAGEPAINTHOOK"},
+  {PSD_DISABLEPAGEPAINTING,"PSD_DISABLEPAGEPAINTING"},
+  {-1, NULL}
+};
+
+/***********************************************************************
+ *    PRINTDLG_OpenDefaultPrinter
+ *
+ * Returns a winspool printer handle to the default printer in *hprn
+ * Caller must call ClosePrinter on the handle
+ *
+ * Returns TRUE on success else FALSE
+ */
+BOOL PRINTDLG_OpenDefaultPrinter(HANDLE *hprn)
+{
+    char buf[260];
+    DWORD dwBufLen = sizeof(buf);
+    BOOL res;
+    if(!GetDefaultPrinterA(buf, &dwBufLen))
+        return FALSE;
+    res = OpenPrinterA(buf, hprn, NULL);
+    if (!res)
+       FIXME("Could not open printer %s?!\n",buf);
+    return res;
+}
+
+/***********************************************************************
+ *    PRINTDLG_SetUpPrinterListCombo
+ *
+ * Initializes printer list combox.
+ * hDlg:  HWND of dialog
+ * id:    Control id of combo
+ * name:  Name of printer to select
+ *
+ * Initializes combo with list of available printers.  Selects printer 'name'
+ * If name is NULL or does not exist select the default printer.
+ *
+ * Returns number of printers added to list.
+ */
+INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name)
+{
+    DWORD needed, num;
+    INT i;
+    LPPRINTER_INFO_2A pi;
+    EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &needed, &num);
+    pi = HeapAlloc(GetProcessHeap(), 0, needed);
+    EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, (LPBYTE)pi, needed, &needed,
+                 &num);
+
+    for(i = 0; i < num; i++) {
+        SendDlgItemMessageA(hDlg, id, CB_ADDSTRING, 0,
+                           (LPARAM)pi[i].pPrinterName );
+    }
+    HeapFree(GetProcessHeap(), 0, pi);
+    if(!name ||
+       (i = SendDlgItemMessageA(hDlg, id, CB_FINDSTRINGEXACT, -1,
+                               (LPARAM)name)) == CB_ERR) {
+
+        char buf[260];
+        DWORD dwBufLen = sizeof(buf);
+        FIXME("Can't find '%s' in printer list so trying to find default\n",
+             name);
+       if(!GetDefaultPrinterA(buf, &dwBufLen))
+           return num;
+       i = SendDlgItemMessageA(hDlg, id, CB_FINDSTRINGEXACT, -1, (LPARAM)buf);
+       if(i == CB_ERR)
+           FIXME("Can't find default printer in printer list\n");
+    }
+    SendDlgItemMessageA(hDlg, id, CB_SETCURSEL, i, 0);
+    return num;
+}
+
+static INT PRINTDLG_SetUpPrinterListComboW(HWND hDlg, UINT id, LPCWSTR name)
+{
+    DWORD needed, num;
+    INT i;
+    LPPRINTER_INFO_2W pi;
+    EnumPrintersW(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &needed, &num);
+    pi = HeapAlloc(GetProcessHeap(), 0, needed);
+    EnumPrintersW(PRINTER_ENUM_LOCAL, NULL, 2, (LPBYTE)pi, needed, &needed,
+                 &num);
+
+    for(i = 0; i < num; i++) {
+        SendDlgItemMessageW(hDlg, id, CB_ADDSTRING, 0,
+                           (LPARAM)pi[i].pPrinterName );
+    }
+    HeapFree(GetProcessHeap(), 0, pi);
+    if(!name ||
+       (i = SendDlgItemMessageW(hDlg, id, CB_FINDSTRINGEXACT, -1,
+                               (LPARAM)name)) == CB_ERR) {
+
+       /* ansi is ok */
+        char buf[260];
+        DWORD dwBufLen = sizeof(buf);
+        FIXME("Can't find '%s' in printer list so trying to find default\n",
+             debugstr_w(name));
+       if(!GetDefaultPrinterA(buf, &dwBufLen))
+           return num;
+       i = SendDlgItemMessageA(hDlg, id, CB_FINDSTRINGEXACT, -1, (LPARAM)buf);
+       if(i == CB_ERR)
+           FIXME("Can't find default printer in printer list\n");
+    }
+    SendDlgItemMessageW(hDlg, id, CB_SETCURSEL, i, 0);
+    return num;
+}
+
+/***********************************************************************
+ *             PRINTDLG_CreateDevNames          [internal]
+ *
+ *
+ *   creates a DevNames structure.
+ *
+ *  (NB. when we handle unicode the offsets will be in wchars).
+ */
+static BOOL PRINTDLG_CreateDevNames(HGLOBAL *hmem, char* DeviceDriverName,
+                                   char* DeviceName, char* OutputPort)
+{
+    long size;
+    char*   pDevNamesSpace;
+    char*   pTempPtr;
+    LPDEVNAMES lpDevNames;
+    char buf[260];
+    DWORD dwBufLen = sizeof(buf);
+
+    size = strlen(DeviceDriverName) + 1
+            + strlen(DeviceName) + 1
+            + strlen(OutputPort) + 1
+            + sizeof(DEVNAMES);
+
+    if(*hmem)
+        *hmem = GlobalReAlloc(*hmem, size, GMEM_MOVEABLE);
+    else
+        *hmem = GlobalAlloc(GMEM_MOVEABLE, size);
+    if (*hmem == 0)
+        return FALSE;
+
+    pDevNamesSpace = GlobalLock(*hmem);
+    lpDevNames = (LPDEVNAMES) pDevNamesSpace;
+
+    pTempPtr = pDevNamesSpace + sizeof(DEVNAMES);
+    strcpy(pTempPtr, DeviceDriverName);
+    lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace;
+
+    pTempPtr += strlen(DeviceDriverName) + 1;
+    strcpy(pTempPtr, DeviceName);
+    lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace;
+
+    pTempPtr += strlen(DeviceName) + 1;
+    strcpy(pTempPtr, OutputPort);
+    lpDevNames->wOutputOffset = pTempPtr - pDevNamesSpace;
+
+    GetDefaultPrinterA(buf, &dwBufLen);
+    lpDevNames->wDefault = (strcmp(buf, DeviceName) == 0) ? 1 : 0;
+    GlobalUnlock(*hmem);
+    return TRUE;
+}
+
+static BOOL PRINTDLG_CreateDevNamesW(HGLOBAL *hmem, LPCWSTR DeviceDriverName,
+                                   LPCWSTR DeviceName, LPCWSTR OutputPort)
+{
+    long size;
+    LPWSTR   pDevNamesSpace;
+    LPWSTR   pTempPtr;
+    LPDEVNAMES lpDevNames;
+    WCHAR bufW[260];
+    DWORD dwBufLen = sizeof(bufW) / sizeof(WCHAR);
+
+    size = sizeof(WCHAR)*lstrlenW(DeviceDriverName) + 2
+            + sizeof(WCHAR)*lstrlenW(DeviceName) + 2
+            + sizeof(WCHAR)*lstrlenW(OutputPort) + 2
+            + sizeof(DEVNAMES);
+
+    if(*hmem)
+        *hmem = GlobalReAlloc(*hmem, size, GMEM_MOVEABLE);
+    else
+        *hmem = GlobalAlloc(GMEM_MOVEABLE, size);
+    if (*hmem == 0)
+        return FALSE;
+
+    pDevNamesSpace = GlobalLock(*hmem);
+    lpDevNames = (LPDEVNAMES) pDevNamesSpace;
+
+    pTempPtr = (LPWSTR)((LPDEVNAMES)pDevNamesSpace + 1);
+    lstrcpyW(pTempPtr, DeviceDriverName);
+    lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace;
+
+    pTempPtr += lstrlenW(DeviceDriverName) + 1;
+    lstrcpyW(pTempPtr, DeviceName);
+    lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace;
+
+    pTempPtr += lstrlenW(DeviceName) + 1;
+    lstrcpyW(pTempPtr, OutputPort);
+    lpDevNames->wOutputOffset = pTempPtr - pDevNamesSpace;
+
+    GetDefaultPrinterW(bufW, &dwBufLen);
+    lpDevNames->wDefault = (lstrcmpW(bufW, DeviceName) == 0) ? 1 : 0;
+    GlobalUnlock(*hmem);
+    return TRUE;
+}
+
+/***********************************************************************
+ *             PRINTDLG_UpdatePrintDlg          [internal]
+ *
+ *
+ *   updates the PrintDlg structure for return values.
+ *
+ * RETURNS
+ *   FALSE if user is not allowed to close (i.e. wrong nTo or nFrom values)
+ *   TRUE  if successful.
+ */
+static BOOL PRINTDLG_UpdatePrintDlgA(HWND hDlg,
+                                   PRINT_PTRA* PrintStructures)
+{
+    LPPRINTDLGA       lppd = PrintStructures->dlg.lpPrintDlg;
+    PDEVMODEA         lpdm = PrintStructures->lpDevMode;
+    LPPRINTER_INFO_2A pi = PrintStructures->lpPrinterInfo;
+
+
+    if(!lpdm) {
+       FIXME("No lpdm ptr?\n");
+       return FALSE;
+    }
+
+
+    if(!(lppd->Flags & PD_PRINTSETUP)) {
+        /* check whether nFromPage and nToPage are within range defined by
+        * nMinPage and nMaxPage
+        */
+        if (IsDlgButtonChecked(hDlg, rad3) == BST_CHECKED) { /* Pages */
+           WORD nToPage;
+           WORD nFromPage;
+           nFromPage = GetDlgItemInt(hDlg, edt1, NULL, FALSE);
+           nToPage   = GetDlgItemInt(hDlg, edt2, NULL, FALSE);
+           if (nFromPage < lppd->nMinPage || nFromPage > lppd->nMaxPage ||
+               nToPage < lppd->nMinPage || nToPage > lppd->nMaxPage) {
+               char resourcestr[256];
+               char resultstr[256];
+               LoadStringA(COMDLG32_hInstance, PD32_INVALID_PAGE_RANGE,
+                           resourcestr, 255);
+               sprintf(resultstr,resourcestr, lppd->nMinPage, lppd->nMaxPage);
+               LoadStringA(COMDLG32_hInstance, PD32_PRINT_TITLE,
+                           resourcestr, 255);
+               MessageBoxA(hDlg, resultstr, resourcestr,
+                           MB_OK | MB_ICONWARNING);
+               return FALSE;
+           }
+           lppd->nFromPage = nFromPage;
+           lppd->nToPage   = nToPage;
+           lppd->Flags |= PD_PAGENUMS;
+       }
+       else
+           lppd->Flags &= ~PD_PAGENUMS;
+
+       if (IsDlgButtonChecked(hDlg, chx1) == BST_CHECKED) {/* Print to file */
+           lppd->Flags |= PD_PRINTTOFILE;
+           pi->pPortName = "FILE:";
+       }
+
+       if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED) { /* Collate */
+           FIXME("Collate lppd not yet implemented as output\n");
+       }
+
+       /* set PD_Collate and nCopies */
+       if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) {
+         /*  The application doesn't support multiple copies or collate...
+          */
+           lppd->Flags &= ~PD_COLLATE;
+           lppd->nCopies = 1;
+         /* if the printer driver supports it... store info there
+          * otherwise no collate & multiple copies !
+          */
+           if (lpdm->dmFields & DM_COLLATE)
+               lpdm->dmCollate =
+                 (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED);
+           if (lpdm->dmFields & DM_COPIES)
+               lpdm->dmCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
+       } else {
+           if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED)
+               lppd->Flags |= PD_COLLATE;
+            else
+               lppd->Flags &= ~PD_COLLATE;
+            lppd->nCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
+       }
+    }
+    return TRUE;
+}
+
+static BOOL PRINTDLG_UpdatePrintDlgW(HWND hDlg,
+                                   PRINT_PTRW* PrintStructures)
+{
+    LPPRINTDLGW       lppd = PrintStructures->dlg.lpPrintDlg;
+    PDEVMODEW         lpdm = PrintStructures->lpDevMode;
+    LPPRINTER_INFO_2W pi = PrintStructures->lpPrinterInfo;
+
+
+    if(!lpdm) {
+       FIXME("No lpdm ptr?\n");
+       return FALSE;
+    }
+
+
+    if(!(lppd->Flags & PD_PRINTSETUP)) {
+        /* check whether nFromPage and nToPage are within range defined by
+        * nMinPage and nMaxPage
+        */
+        if (IsDlgButtonChecked(hDlg, rad3) == BST_CHECKED) { /* Pages */
+           WORD nToPage;
+           WORD nFromPage;
+           nFromPage = GetDlgItemInt(hDlg, edt1, NULL, FALSE);
+           nToPage   = GetDlgItemInt(hDlg, edt2, NULL, FALSE);
+           if (nFromPage < lppd->nMinPage || nFromPage > lppd->nMaxPage ||
+               nToPage < lppd->nMinPage || nToPage > lppd->nMaxPage) {
+               char resourcestr[256];
+               char resultstr[256];
+               LoadStringA(COMDLG32_hInstance, PD32_INVALID_PAGE_RANGE,
+                           resourcestr, 255);
+               sprintf(resultstr,resourcestr, lppd->nMinPage, lppd->nMaxPage);
+               LoadStringA(COMDLG32_hInstance, PD32_PRINT_TITLE,
+                           resourcestr, 255);
+               MessageBoxA(hDlg, resultstr, resourcestr,
+                           MB_OK | MB_ICONWARNING);
+               return FALSE;
+           }
+           lppd->nFromPage = nFromPage;
+           lppd->nToPage   = nToPage;
+       }
+
+       if (IsDlgButtonChecked(hDlg, chx1) == BST_CHECKED) {/* Print to file */
+           static WCHAR file[] = {'F','I','L','E',':',0};
+           lppd->Flags |= PD_PRINTTOFILE;
+           pi->pPortName = file;
+       }
+
+       if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED) { /* Collate */
+           FIXME("Collate lppd not yet implemented as output\n");
+       }
+
+       /* set PD_Collate and nCopies */
+       if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) {
+         /*  The application doesn't support multiple copies or collate...
+          */
+           lppd->Flags &= ~PD_COLLATE;
+           lppd->nCopies = 1;
+         /* if the printer driver supports it... store info there
+          * otherwise no collate & multiple copies !
+          */
+           if (lpdm->dmFields & DM_COLLATE)
+               lpdm->dmCollate =
+                 (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED);
+           if (lpdm->dmFields & DM_COPIES)
+               lpdm->dmCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
+       } else {
+           if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED)
+               lppd->Flags |= PD_COLLATE;
+            else
+               lppd->Flags &= ~PD_COLLATE;
+            lppd->nCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
+       }
+    }
+    return TRUE;
+}
+
+static BOOL PRINTDLG_PaperSizeA(
+       PRINTDLGA       *pdlga,const char *PaperSize,LPPOINT size
+) {
+    DEVNAMES   *dn;
+    DEVMODEA   *dm;
+    LPSTR      devname,portname;
+    int                i;
+    INT                NrOfEntries,ret;
+    char       *Names = NULL;
+    POINT      *points = NULL;
+    BOOL       retval = FALSE;
+
+    dn = GlobalLock(pdlga->hDevNames);
+    dm = GlobalLock(pdlga->hDevMode);
+    devname    = ((char*)dn)+dn->wDeviceOffset;
+    portname   = ((char*)dn)+dn->wOutputOffset;
+
+
+    NrOfEntries = DeviceCapabilitiesA(devname,portname,DC_PAPERNAMES,NULL,dm);
+    if (!NrOfEntries) {
+       FIXME("No papernames found for %s/%s\n",devname,portname);
+       goto out;
+    }
+    if (NrOfEntries == -1) {
+       ERR("Hmm ? DeviceCapabilities() DC_PAPERNAMES failed, ret -1 !\n");
+       goto out;
+    }
+
+    Names = (char*)HeapAlloc(GetProcessHeap(),0,NrOfEntries*64);
+    if (NrOfEntries != (ret=DeviceCapabilitiesA(devname,portname,DC_PAPERNAMES,Names,dm))) {
+       FIXME("Number of returned vals %d is not %d\n",NrOfEntries,ret);
+       goto out;
+    }
+    for (i=0;i<NrOfEntries;i++)
+       if (!strcmp(PaperSize,Names+(64*i)))
+           break;
+    HeapFree(GetProcessHeap(),0,Names);
+    if (i==NrOfEntries) {
+       FIXME("Papersize %s not found in list?\n",PaperSize);
+       goto out;
+    }
+    points = HeapAlloc(GetProcessHeap(),0,sizeof(points[0])*NrOfEntries);
+    if (NrOfEntries!=(ret=DeviceCapabilitiesA(devname,portname,DC_PAPERSIZE,(LPBYTE)points,dm))) {
+       FIXME("Number of returned sizes %d is not %d?\n",NrOfEntries,ret);
+       goto out;
+    }
+    /* this is _10ths_ of a millimeter */
+    size->x=points[i].x;
+    size->y=points[i].y;
+    retval = TRUE;
+out:
+    GlobalUnlock(pdlga->hDevNames);
+    GlobalUnlock(pdlga->hDevMode);
+    if (Names) HeapFree(GetProcessHeap(),0,Names);
+    if (points) HeapFree(GetProcessHeap(),0,points);
+    return retval;
+}
+
+static BOOL PRINTDLG_PaperSizeW(
+       PRINTDLGW       *pdlga,const WCHAR *PaperSize,LPPOINT size
+) {
+    DEVNAMES   *dn;
+    DEVMODEW   *dm;
+    LPWSTR     devname,portname;
+    int                i;
+    INT                NrOfEntries,ret;
+    WCHAR      *Names = NULL;
+    POINT      *points = NULL;
+    BOOL       retval = FALSE;
+
+    dn = GlobalLock(pdlga->hDevNames);
+    dm = GlobalLock(pdlga->hDevMode);
+    devname    = ((WCHAR*)dn)+dn->wDeviceOffset;
+    portname   = ((WCHAR*)dn)+dn->wOutputOffset;
+
+
+    NrOfEntries = DeviceCapabilitiesW(devname,portname,DC_PAPERNAMES,NULL,dm);
+    if (!NrOfEntries) {
+       FIXME("No papernames found for %s/%s\n",debugstr_w(devname),debugstr_w(portname));
+       goto out;
+    }
+    if (NrOfEntries == -1) {
+       ERR("Hmm ? DeviceCapabilities() DC_PAPERNAMES failed, ret -1 !\n");
+       goto out;
+    }
+
+    Names = (WCHAR*)HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*NrOfEntries*64);
+    if (NrOfEntries != (ret=DeviceCapabilitiesW(devname,portname,DC_PAPERNAMES,Names,dm))) {
+       FIXME("Number of returned vals %d is not %d\n",NrOfEntries,ret);
+       goto out;
+    }
+    for (i=0;i<NrOfEntries;i++)
+       if (!lstrcmpW(PaperSize,Names+(64*i)))
+           break;
+    HeapFree(GetProcessHeap(),0,Names);
+    if (i==NrOfEntries) {
+       FIXME("Papersize %s not found in list?\n",debugstr_w(PaperSize));
+       goto out;
+    }
+    points = HeapAlloc(GetProcessHeap(),0,sizeof(points[0])*NrOfEntries);
+    if (NrOfEntries!=(ret=DeviceCapabilitiesW(devname,portname,DC_PAPERSIZE,(LPWSTR)points,dm))) {
+       FIXME("Number of returned sizes %d is not %d?\n",NrOfEntries,ret);
+       goto out;
+    }
+    /* this is _10ths_ of a millimeter */
+    size->x=points[i].x;
+    size->y=points[i].y;
+    retval = TRUE;
+out:
+    GlobalUnlock(pdlga->hDevNames);
+    GlobalUnlock(pdlga->hDevMode);
+    if (Names) HeapFree(GetProcessHeap(),0,Names);
+    if (points) HeapFree(GetProcessHeap(),0,points);
+    return retval;
+}
+
+
+/************************************************************************
+ * PRINTDLG_SetUpPaperComboBox
+ *
+ * Initialize either the papersize or inputslot combos of the Printer Setup
+ * dialog.  We store the associated word (eg DMPAPER_A4) as the item data.
+ * We also try to re-select the old selection.
+ */
+static BOOL PRINTDLG_SetUpPaperComboBoxA(HWND hDlg,
+                                       int   nIDComboBox,
+                                       char* PrinterName,
+                                       char* PortName,
+                                       LPDEVMODEA dm)
+{
+    int     i;
+    int     NrOfEntries;
+    char*   Names;
+    WORD*   Words;
+    DWORD   Sel;
+    WORD    oldWord = 0;
+    int     NamesSize;
+    int     fwCapability_Names;
+    int     fwCapability_Words;
+
+    TRACE(" Printer: %s, Port: %s, ComboID: %d\n",PrinterName,PortName,nIDComboBox);
+
+    /* query the dialog box for the current selected value */
+    Sel = SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETCURSEL, 0, 0);
+    if(Sel != CB_ERR) {
+        /* we enter here only if a different printer is selected after
+         * the Print Setup dialog is opened. The current settings are
+         * stored into the newly selected printer.
+         */
+        oldWord = SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETITEMDATA,
+                                      Sel, 0);
+        if (dm) {
+            if (nIDComboBox == cmb2)
+                dm->dmPaperSize = oldWord;
+            else
+                dm->dmDefaultSource = oldWord;
+        }
+    }
+    else {
+        /* we enter here only when the Print setup dialog is initially
+         * opened. In this case the settings are restored from when
+         * the dialog was last closed.
+         */
+        if (dm) {
+            if (nIDComboBox == cmb2)
+                oldWord = dm->dmPaperSize;
+            else
+                oldWord = dm->dmDefaultSource;
+        }
+    }
+
+    if (nIDComboBox == cmb2) {
+         NamesSize          = 64;
+         fwCapability_Names = DC_PAPERNAMES;
+         fwCapability_Words = DC_PAPERS;
+    } else {
+         nIDComboBox        = cmb3;
+         NamesSize          = 24;
+         fwCapability_Names = DC_BINNAMES;
+         fwCapability_Words = DC_BINS;
+    }
+
+    /* for some printer drivers, DeviceCapabilities calls a VXD to obtain the
+     * paper settings. As Wine doesn't allow VXDs, this results in a crash.
+     */
+    WARN(" if your printer driver uses VXDs, expect a crash now!\n");
+    NrOfEntries = DeviceCapabilitiesA(PrinterName, PortName,
+                                      fwCapability_Names, NULL, dm);
+    if (NrOfEntries == 0)
+         WARN("no Name Entries found!\n");
+    else if (NrOfEntries < 0)
+         return FALSE;
+
+    if(DeviceCapabilitiesA(PrinterName, PortName, fwCapability_Words, NULL, dm)
+       != NrOfEntries) {
+        ERR("Number of caps is different\n");
+       NrOfEntries = 0;
+    }
+
+    Names = HeapAlloc(GetProcessHeap(),0, NrOfEntries*sizeof(char)*NamesSize);
+    Words = HeapAlloc(GetProcessHeap(),0, NrOfEntries*sizeof(WORD));
+    NrOfEntries = DeviceCapabilitiesA(PrinterName, PortName,
+                                      fwCapability_Names, Names, dm);
+    NrOfEntries = DeviceCapabilitiesA(PrinterName, PortName,
+                                     fwCapability_Words, (LPSTR)Words, dm);
+
+    /* reset any current content in the combobox */
+    SendDlgItemMessageA(hDlg, nIDComboBox, CB_RESETCONTENT, 0, 0);
+
+    /* store new content */
+    for (i = 0; i < NrOfEntries; i++) {
+        DWORD pos = SendDlgItemMessageA(hDlg, nIDComboBox, CB_ADDSTRING, 0,
+                                       (LPARAM)(&Names[i*NamesSize]) );
+       SendDlgItemMessageA(hDlg, nIDComboBox, CB_SETITEMDATA, pos,
+                           Words[i]);
+    }
+
+    /* Look for old selection - can't do this is previous loop since
+       item order will change as more items are added */
+    Sel = 0;
+    for (i = 0; i < NrOfEntries; i++) {
+        if(SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETITEMDATA, i, 0) ==
+          oldWord) {
+           Sel = i;
+           break;
+       }
+    }
+    SendDlgItemMessageA(hDlg, nIDComboBox, CB_SETCURSEL, Sel, 0);
+
+    HeapFree(GetProcessHeap(),0,Words);
+    HeapFree(GetProcessHeap(),0,Names);
+    return TRUE;
+}
+
+static BOOL PRINTDLG_SetUpPaperComboBoxW(HWND hDlg,
+                                       int   nIDComboBox,
+                                       WCHAR* PrinterName,
+                                       WCHAR* PortName,
+                                       LPDEVMODEW dm)
+{
+    int     i;
+    int     NrOfEntries;
+    WCHAR*  Names;
+    WORD*   Words;
+    DWORD   Sel;
+    WORD    oldWord = 0;
+    int     NamesSize;
+    int     fwCapability_Names;
+    int     fwCapability_Words;
+
+    TRACE(" Printer: %s, Port: %s, ComboID: %d\n",debugstr_w(PrinterName),debugstr_w(PortName),nIDComboBox);
+
+    /* query the dialog box for the current selected value */
+    Sel = SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETCURSEL, 0, 0);
+    if(Sel != CB_ERR) {
+        /* we enter here only if a different printer is selected after
+         * the Print Setup dialog is opened. The current settings are
+         * stored into the newly selected printer.
+         */
+        oldWord = SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETITEMDATA,
+                                      Sel, 0);
+        if (dm) {
+            if (nIDComboBox == cmb2)
+                dm->dmPaperSize = oldWord;
+            else
+                dm->dmDefaultSource = oldWord;
+        }
+    }
+    else {
+        /* we enter here only when the Print setup dialog is initially
+         * opened. In this case the settings are restored from when
+         * the dialog was last closed.
+         */
+        if (dm) {
+            if (nIDComboBox == cmb2)
+                oldWord = dm->dmPaperSize;
+            else
+                oldWord = dm->dmDefaultSource;
+        }
+    }
+
+    if (nIDComboBox == cmb2) {
+         NamesSize          = 64;
+         fwCapability_Names = DC_PAPERNAMES;
+         fwCapability_Words = DC_PAPERS;
+    } else {
+         nIDComboBox        = cmb3;
+         NamesSize          = 24;
+         fwCapability_Names = DC_BINNAMES;
+         fwCapability_Words = DC_BINS;
+    }
+
+    /* for some printer drivers, DeviceCapabilities calls a VXD to obtain the
+     * paper settings. As Wine doesn't allow VXDs, this results in a crash.
+     */
+    WARN(" if your printer driver uses VXDs, expect a crash now!\n");
+    NrOfEntries = DeviceCapabilitiesW(PrinterName, PortName,
+                                      fwCapability_Names, NULL, dm);
+    if (NrOfEntries == 0)
+         WARN("no Name Entries found!\n");
+    else if (NrOfEntries < 0)
+         return FALSE;
+
+    if(DeviceCapabilitiesW(PrinterName, PortName, fwCapability_Words, NULL, dm)
+       != NrOfEntries) {
+        ERR("Number of caps is different\n");
+       NrOfEntries = 0;
+    }
+
+    Names = HeapAlloc(GetProcessHeap(),0, NrOfEntries*sizeof(WCHAR)*NamesSize);
+    Words = HeapAlloc(GetProcessHeap(),0, NrOfEntries*sizeof(WORD));
+    NrOfEntries = DeviceCapabilitiesW(PrinterName, PortName,
+                                      fwCapability_Names, Names, dm);
+    NrOfEntries = DeviceCapabilitiesW(PrinterName, PortName,
+                                     fwCapability_Words, (LPWSTR)Words, dm);
+
+    /* reset any current content in the combobox */
+    SendDlgItemMessageA(hDlg, nIDComboBox, CB_RESETCONTENT, 0, 0);
+
+    /* store new content */
+    for (i = 0; i < NrOfEntries; i++) {
+        DWORD pos = SendDlgItemMessageW(hDlg, nIDComboBox, CB_ADDSTRING, 0,
+                                       (LPARAM)(&Names[i*NamesSize]) );
+       SendDlgItemMessageW(hDlg, nIDComboBox, CB_SETITEMDATA, pos,
+                           Words[i]);
+    }
+
+    /* Look for old selection - can't do this is previous loop since
+       item order will change as more items are added */
+    Sel = 0;
+    for (i = 0; i < NrOfEntries; i++) {
+        if(SendDlgItemMessageA(hDlg, nIDComboBox, CB_GETITEMDATA, i, 0) ==
+          oldWord) {
+           Sel = i;
+           break;
+       }
+    }
+    SendDlgItemMessageA(hDlg, nIDComboBox, CB_SETCURSEL, Sel, 0);
+
+    HeapFree(GetProcessHeap(),0,Words);
+    HeapFree(GetProcessHeap(),0,Names);
+    return TRUE;
+}
+
+
+/***********************************************************************
+ *               PRINTDLG_UpdatePrinterInfoTexts               [internal]
+ */
+static void PRINTDLG_UpdatePrinterInfoTextsA(HWND hDlg, LPPRINTER_INFO_2A pi)
+{
+    char   StatusMsg[256];
+    char   ResourceString[256];
+    int    i;
+
+    /* Status Message */
+    StatusMsg[0]='\0';
+
+    /* add all status messages */
+    for (i = 0; i < 25; i++) {
+        if (pi->Status & (1<<i)) {
+           LoadStringA(COMDLG32_hInstance, PD32_PRINTER_STATUS_PAUSED+i,
+                       ResourceString, 255);
+           strcat(StatusMsg,ResourceString);
+        }
+    }
+    /* append "ready" */
+    /* FIXME: status==ready must only be appended if really so.
+              but how to detect? */
+    LoadStringA(COMDLG32_hInstance, PD32_PRINTER_STATUS_READY,
+               ResourceString, 255);
+    strcat(StatusMsg,ResourceString);
+    SetDlgItemTextA(hDlg, stc12, StatusMsg);
+
+    /* set all other printer info texts */
+    SetDlgItemTextA(hDlg, stc11, pi->pDriverName);
+    
+    if (pi->pLocation != NULL && pi->pLocation[0] != '\0')
+        SetDlgItemTextA(hDlg, stc14, pi->pLocation);
+    else
+        SetDlgItemTextA(hDlg, stc14, pi->pPortName);
+    SetDlgItemTextA(hDlg, stc13, pi->pComment ? pi->pComment : "");
+    return;
+}
+
+static void PRINTDLG_UpdatePrinterInfoTextsW(HWND hDlg, LPPRINTER_INFO_2W pi)
+{
+    WCHAR   StatusMsg[256];
+    WCHAR   ResourceString[256];
+    static const WCHAR emptyW[] = {0};
+    int    i;
+
+    /* Status Message */
+    StatusMsg[0]='\0';
+
+    /* add all status messages */
+    for (i = 0; i < 25; i++) {
+        if (pi->Status & (1<<i)) {
+           LoadStringW(COMDLG32_hInstance, PD32_PRINTER_STATUS_PAUSED+i,
+                       ResourceString, 255);
+           lstrcatW(StatusMsg,ResourceString);
+        }
+    }
+    /* append "ready" */
+    /* FIXME: status==ready must only be appended if really so.
+              but how to detect? */
+    LoadStringW(COMDLG32_hInstance, PD32_PRINTER_STATUS_READY,
+               ResourceString, 255);
+    lstrcatW(StatusMsg,ResourceString);
+    SetDlgItemTextW(hDlg, stc12, StatusMsg);
+
+    /* set all other printer info texts */
+    SetDlgItemTextW(hDlg, stc11, pi->pDriverName);
+    if (pi->pLocation != NULL && pi->pLocation[0] != '\0')
+        SetDlgItemTextW(hDlg, stc14, pi->pLocation);
+    else
+        SetDlgItemTextW(hDlg, stc14, pi->pPortName);
+    SetDlgItemTextW(hDlg, stc13, pi->pComment ? pi->pComment : emptyW);
+}
+
+
+/*******************************************************************
+ *
+ *                 PRINTDLG_ChangePrinter
+ *
+ */
+BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name,
+                                  PRINT_PTRA *PrintStructures)
+{
+    LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg;
+    LPDEVMODEA lpdm = NULL;
+    LONG dmSize;
+    DWORD needed;
+    HANDLE hprn;
+
+    if(PrintStructures->lpPrinterInfo)
+        HeapFree(GetProcessHeap(),0, PrintStructures->lpPrinterInfo);
+    if(PrintStructures->lpDriverInfo)
+        HeapFree(GetProcessHeap(),0, PrintStructures->lpDriverInfo);
+    if(!OpenPrinterA(name, &hprn, NULL)) {
+        ERR("Can't open printer %s\n", name);
+       return FALSE;
+    }
+    GetPrinterA(hprn, 2, NULL, 0, &needed);
+    PrintStructures->lpPrinterInfo = HeapAlloc(GetProcessHeap(),0,needed);
+    GetPrinterA(hprn, 2, (LPBYTE)PrintStructures->lpPrinterInfo, needed,
+               &needed);
+    GetPrinterDriverA(hprn, NULL, 3, NULL, 0, &needed);
+    PrintStructures->lpDriverInfo = HeapAlloc(GetProcessHeap(),0,needed);
+    if (!GetPrinterDriverA(hprn, NULL, 3, (LPBYTE)PrintStructures->lpDriverInfo,
+           needed, &needed)) {
+       ERR("GetPrinterDriverA failed for %s, fix your config!\n",PrintStructures->lpPrinterInfo->pPrinterName);
+       return FALSE;
+    }
+    ClosePrinter(hprn);
+
+    PRINTDLG_UpdatePrinterInfoTextsA(hDlg, PrintStructures->lpPrinterInfo);
+
+    if(PrintStructures->lpDevMode) {
+        HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode);
+       PrintStructures->lpDevMode = NULL;
+    }
+
+    dmSize = DocumentPropertiesA(0, 0, name, NULL, NULL, 0);
+    if(dmSize == -1) {
+        ERR("DocumentProperties fails on %s\n", debugstr_a(name));
+       return FALSE;
+    }
+    PrintStructures->lpDevMode = HeapAlloc(GetProcessHeap(), 0, dmSize);
+    dmSize = DocumentPropertiesA(0, 0, name, PrintStructures->lpDevMode, NULL,
+                                DM_OUT_BUFFER);
+    if(lppd->hDevMode && (lpdm = GlobalLock(lppd->hDevMode)) &&
+                         !strcmp(lpdm->dmDeviceName,
+                                 PrintStructures->lpDevMode->dmDeviceName)) {
+      /* Supplied devicemode matches current printer so try to use it */
+        DocumentPropertiesA(0, 0, name, PrintStructures->lpDevMode, lpdm,
+                           DM_OUT_BUFFER | DM_IN_BUFFER);
+    }
+    if(lpdm)
+        GlobalUnlock(lppd->hDevMode);
+
+    lpdm = PrintStructures->lpDevMode;  /* use this as a shortcut */
+
+    if(!(lppd->Flags & PD_PRINTSETUP)) {
+      /* Print range (All/Range/Selection) */
+        SetDlgItemInt(hDlg, edt1, lppd->nFromPage, FALSE);
+       SetDlgItemInt(hDlg, edt2, lppd->nToPage, FALSE);
+       CheckRadioButton(hDlg, rad1, rad3, rad1);               /* default */
+       if (lppd->Flags & PD_NOSELECTION)
+           EnableWindow(GetDlgItem(hDlg, rad2), FALSE);
+       else
+           if (lppd->Flags & PD_SELECTION)
+               CheckRadioButton(hDlg, rad1, rad3, rad2);
+       if (lppd->Flags & PD_NOPAGENUMS) {
+           EnableWindow(GetDlgItem(hDlg, rad3), FALSE);
+           EnableWindow(GetDlgItem(hDlg, stc2),FALSE);
+           EnableWindow(GetDlgItem(hDlg, edt1), FALSE);
+           EnableWindow(GetDlgItem(hDlg, stc3),FALSE);
+           EnableWindow(GetDlgItem(hDlg, edt2), FALSE);
+       } else {
+           if (lppd->Flags & PD_PAGENUMS)
+               CheckRadioButton(hDlg, rad1, rad3, rad3);
+       }
+       /* "All xxx pages"... */
+       {
+           char        resourcestr[64];
+           char        result[64];
+           LoadStringA(COMDLG32_hInstance, PD32_PRINT_ALL_X_PAGES,
+                       resourcestr, 49);
+           sprintf(result,resourcestr,lppd->nMaxPage - lppd->nMinPage + 1);
+           SendDlgItemMessageA(hDlg, rad1, WM_SETTEXT, 0, (LPARAM) result);
+       }
+
+       /* Collate pages
+        *
+        * FIXME: The ico3 is not displayed for some reason. I don't know why.
+        */
+       if (lppd->Flags & PD_COLLATE) {
+           SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                               (LPARAM)PrintStructures->hCollateIcon);
+           CheckDlgButton(hDlg, chx2, 1);
+       } else {
+           SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                               (LPARAM)PrintStructures->hNoCollateIcon);
+           CheckDlgButton(hDlg, chx2, 0);
+       }
+
+       if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) {
+         /* if printer doesn't support it: no Collate */
+           if (!(lpdm->dmFields & DM_COLLATE)) {
+               EnableWindow(GetDlgItem(hDlg, chx2), FALSE);
+               EnableWindow(GetDlgItem(hDlg, ico3), FALSE);
+           }
+       }
+
+       /* nCopies */
+       {
+         INT copies;
+         if (lppd->hDevMode == 0)
+             copies = lppd->nCopies;
+         else
+             copies = lpdm->dmCopies;
+         if(copies == 0) copies = 1;
+         else if(copies < 0) copies = MAX_COPIES;
+         SetDlgItemInt(hDlg, edt3, copies, FALSE);
+       }
+
+       if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) {
+         /* if printer doesn't support it: no nCopies */
+           if (!(lpdm->dmFields & DM_COPIES)) {
+               EnableWindow(GetDlgItem(hDlg, edt3), FALSE);
+               EnableWindow(GetDlgItem(hDlg, stc5), FALSE);
+           }
+       }
+
+       /* print to file */
+       CheckDlgButton(hDlg, chx1, (lppd->Flags & PD_PRINTTOFILE) ? 1 : 0);
+       if (lppd->Flags & PD_DISABLEPRINTTOFILE)
+            EnableWindow(GetDlgItem(hDlg, chx1), FALSE);
+       if (lppd->Flags & PD_HIDEPRINTTOFILE)
+            ShowWindow(GetDlgItem(hDlg, chx1), SW_HIDE);
+
+    } else { /* PD_PRINTSETUP */
+      BOOL bPortrait = (lpdm->dmOrientation == DMORIENT_PORTRAIT);
+
+      PRINTDLG_SetUpPaperComboBoxA(hDlg, cmb2,
+                                 PrintStructures->lpPrinterInfo->pPrinterName,
+                                 PrintStructures->lpPrinterInfo->pPortName,
+                                 lpdm);
+      PRINTDLG_SetUpPaperComboBoxA(hDlg, cmb3,
+                                 PrintStructures->lpPrinterInfo->pPrinterName,
+                                 PrintStructures->lpPrinterInfo->pPortName,
+                                 lpdm);
+      CheckRadioButton(hDlg, rad1, rad2, bPortrait ? rad1: rad2);
+      SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                          (LPARAM)(bPortrait ? PrintStructures->hPortraitIcon :
+                                   PrintStructures->hLandscapeIcon));
+
+    }
+
+    /* help button */
+    if ((lppd->Flags & PD_SHOWHELP)==0) {
+        /* hide if PD_SHOWHELP not specified */
+        ShowWindow(GetDlgItem(hDlg, pshHelp), SW_HIDE);
+    }
+    return TRUE;
+}
+
+static BOOL PRINTDLG_ChangePrinterW(HWND hDlg, WCHAR *name,
+                                  PRINT_PTRW *PrintStructures)
+{
+    LPPRINTDLGW lppd = PrintStructures->dlg.lpPrintDlg;
+    LPDEVMODEW lpdm = NULL;
+    LONG dmSize;
+    DWORD needed;
+    HANDLE hprn;
+
+    if(PrintStructures->lpPrinterInfo)
+        HeapFree(GetProcessHeap(),0, PrintStructures->lpPrinterInfo);
+    if(PrintStructures->lpDriverInfo)
+        HeapFree(GetProcessHeap(),0, PrintStructures->lpDriverInfo);
+    if(!OpenPrinterW(name, &hprn, NULL)) {
+        ERR("Can't open printer %s\n", debugstr_w(name));
+       return FALSE;
+    }
+    GetPrinterW(hprn, 2, NULL, 0, &needed);
+    PrintStructures->lpPrinterInfo = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*needed);
+    GetPrinterW(hprn, 2, (LPBYTE)PrintStructures->lpPrinterInfo, needed,
+               &needed);
+    GetPrinterDriverW(hprn, NULL, 3, NULL, 0, &needed);
+    PrintStructures->lpDriverInfo = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*needed);
+    if (!GetPrinterDriverW(hprn, NULL, 3, (LPBYTE)PrintStructures->lpDriverInfo,
+           needed, &needed)) {
+       ERR("GetPrinterDriverA failed for %s, fix your config!\n",debugstr_w(PrintStructures->lpPrinterInfo->pPrinterName));
+       return FALSE;
+    }
+    ClosePrinter(hprn);
+
+    PRINTDLG_UpdatePrinterInfoTextsW(hDlg, PrintStructures->lpPrinterInfo);
+
+    if(PrintStructures->lpDevMode) {
+        HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode);
+       PrintStructures->lpDevMode = NULL;
+    }
+
+    dmSize = DocumentPropertiesW(0, 0, name, NULL, NULL, 0);
+    if(dmSize == -1) {
+        ERR("DocumentProperties fails on %s\n", debugstr_w(name));
+       return FALSE;
+    }
+    PrintStructures->lpDevMode = HeapAlloc(GetProcessHeap(), 0, dmSize);
+    dmSize = DocumentPropertiesW(0, 0, name, PrintStructures->lpDevMode, NULL,
+                                DM_OUT_BUFFER);
+    if(lppd->hDevMode && (lpdm = GlobalLock(lppd->hDevMode)) &&
+                         !lstrcmpW(lpdm->dmDeviceName,
+                                 PrintStructures->lpDevMode->dmDeviceName)) {
+      /* Supplied devicemode matches current printer so try to use it */
+        DocumentPropertiesW(0, 0, name, PrintStructures->lpDevMode, lpdm,
+                           DM_OUT_BUFFER | DM_IN_BUFFER);
+    }
+    if(lpdm)
+        GlobalUnlock(lppd->hDevMode);
+
+    lpdm = PrintStructures->lpDevMode;  /* use this as a shortcut */
+
+    if(!(lppd->Flags & PD_PRINTSETUP)) {
+      /* Print range (All/Range/Selection) */
+        SetDlgItemInt(hDlg, edt1, lppd->nFromPage, FALSE);
+       SetDlgItemInt(hDlg, edt2, lppd->nToPage, FALSE);
+       CheckRadioButton(hDlg, rad1, rad3, rad1);               /* default */
+       if (lppd->Flags & PD_NOSELECTION)
+           EnableWindow(GetDlgItem(hDlg, rad2), FALSE);
+       else
+           if (lppd->Flags & PD_SELECTION)
+               CheckRadioButton(hDlg, rad1, rad3, rad2);
+       if (lppd->Flags & PD_NOPAGENUMS) {
+           EnableWindow(GetDlgItem(hDlg, rad3), FALSE);
+           EnableWindow(GetDlgItem(hDlg, stc2),FALSE);
+           EnableWindow(GetDlgItem(hDlg, edt1), FALSE);
+           EnableWindow(GetDlgItem(hDlg, stc3),FALSE);
+           EnableWindow(GetDlgItem(hDlg, edt2), FALSE);
+       } else {
+           if (lppd->Flags & PD_PAGENUMS)
+               CheckRadioButton(hDlg, rad1, rad3, rad3);
+       }
+       /* "All xxx pages"... */
+       {
+           /* ansi is ok */
+           char        resourcestr[64];
+           char        result[64];
+           LoadStringA(COMDLG32_hInstance, PD32_PRINT_ALL_X_PAGES,
+                       resourcestr, 49);
+           sprintf(result,resourcestr,lppd->nMaxPage - lppd->nMinPage + 1);
+           SendDlgItemMessageA(hDlg, rad1, WM_SETTEXT, 0, (LPARAM) result);
+       }
+
+       /* Collate pages
+        *
+        * FIXME: The ico3 is not displayed for some reason. I don't know why.
+        */
+       if (lppd->Flags & PD_COLLATE) {
+           SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                               (LPARAM)PrintStructures->hCollateIcon);
+           CheckDlgButton(hDlg, chx2, 1);
+       } else {
+           SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                               (LPARAM)PrintStructures->hNoCollateIcon);
+           CheckDlgButton(hDlg, chx2, 0);
+       }
+
+       if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) {
+         /* if printer doesn't support it: no Collate */
+           if (!(lpdm->dmFields & DM_COLLATE)) {
+               EnableWindow(GetDlgItem(hDlg, chx2), FALSE);
+               EnableWindow(GetDlgItem(hDlg, ico3), FALSE);
+           }
+       }
+
+       /* nCopies */
+       {
+         INT copies;
+         if (lppd->hDevMode == 0)
+             copies = lppd->nCopies;
+         else
+             copies = lpdm->dmCopies;
+         if(copies == 0) copies = 1;
+         else if(copies < 0) copies = MAX_COPIES;
+         SetDlgItemInt(hDlg, edt3, copies, FALSE);
+       }
+
+       if (lppd->Flags & PD_USEDEVMODECOPIESANDCOLLATE) {
+         /* if printer doesn't support it: no nCopies */
+           if (!(lpdm->dmFields & DM_COPIES)) {
+               EnableWindow(GetDlgItem(hDlg, edt3), FALSE);
+               EnableWindow(GetDlgItem(hDlg, stc5), FALSE);
+           }
+       }
+
+       /* print to file */
+       CheckDlgButton(hDlg, chx1, (lppd->Flags & PD_PRINTTOFILE) ? 1 : 0);
+       if (lppd->Flags & PD_DISABLEPRINTTOFILE)
+            EnableWindow(GetDlgItem(hDlg, chx1), FALSE);
+       if (lppd->Flags & PD_HIDEPRINTTOFILE)
+            ShowWindow(GetDlgItem(hDlg, chx1), SW_HIDE);
+
+    } else { /* PD_PRINTSETUP */
+      BOOL bPortrait = (lpdm->dmOrientation == DMORIENT_PORTRAIT);
+
+      PRINTDLG_SetUpPaperComboBoxW(hDlg, cmb2,
+                                 PrintStructures->lpPrinterInfo->pPrinterName,
+                                 PrintStructures->lpPrinterInfo->pPortName,
+                                 lpdm);
+      PRINTDLG_SetUpPaperComboBoxW(hDlg, cmb3,
+                                 PrintStructures->lpPrinterInfo->pPrinterName,
+                                 PrintStructures->lpPrinterInfo->pPortName,
+                                 lpdm);
+      CheckRadioButton(hDlg, rad1, rad2, bPortrait ? rad1: rad2);
+      SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                          (LPARAM)(bPortrait ? PrintStructures->hPortraitIcon :
+                                   PrintStructures->hLandscapeIcon));
+
+    }
+
+    /* help button */
+    if ((lppd->Flags & PD_SHOWHELP)==0) {
+        /* hide if PD_SHOWHELP not specified */
+        ShowWindow(GetDlgItem(hDlg, pshHelp), SW_HIDE);
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *           PRINTDLG_WMInitDialog                      [internal]
+ */
+static LRESULT PRINTDLG_WMInitDialog(HWND hDlg, WPARAM wParam,
+                                    PRINT_PTRA* PrintStructures)
+{
+    LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg;
+    DEVNAMES *pdn;
+    DEVMODEA *pdm;
+    char *name = NULL;
+    UINT comboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4;
+
+    /* load Collate ICONs */
+    /* We load these with LoadImage because they are not a standard
+       size and we don't want them rescaled */
+    PrintStructures->hCollateIcon =
+      LoadImageA(COMDLG32_hInstance, "PD32_COLLATE", IMAGE_ICON, 0, 0, 0);
+    PrintStructures->hNoCollateIcon =
+      LoadImageA(COMDLG32_hInstance, "PD32_NOCOLLATE", IMAGE_ICON, 0, 0, 0);
+
+    /* These can be done with LoadIcon */
+    PrintStructures->hPortraitIcon =
+      LoadIconA(COMDLG32_hInstance, "PD32_PORTRAIT");
+    PrintStructures->hLandscapeIcon =
+      LoadIconA(COMDLG32_hInstance, "PD32_LANDSCAPE");
+
+    if(PrintStructures->hCollateIcon == 0 ||
+       PrintStructures->hNoCollateIcon == 0 ||
+       PrintStructures->hPortraitIcon == 0 ||
+       PrintStructures->hLandscapeIcon == 0) {
+        ERR("no icon in resourcefile\n");
+       COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+       EndDialog(hDlg, FALSE);
+    }
+
+    /*
+     * if lppd->Flags PD_SHOWHELP is specified, a HELPMESGSTRING message
+     * must be registered and the Help button must be shown.
+     */
+    if (lppd->Flags & PD_SHOWHELP) {
+        if((PrintStructures->HelpMessageID =
+           RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) {
+           COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL);
+           return FALSE;
+       }
+    } else
+        PrintStructures->HelpMessageID = 0;
+
+    if(!(lppd->Flags &PD_PRINTSETUP)) {
+        PrintStructures->hwndUpDown =
+         CreateUpDownControl(WS_CHILD | WS_VISIBLE | WS_BORDER |
+                             UDS_NOTHOUSANDS | UDS_ARROWKEYS |
+                             UDS_ALIGNRIGHT | UDS_SETBUDDYINT, 0, 0, 0, 0,
+                             hDlg, UPDOWN_ID, COMDLG32_hInstance,
+                             GetDlgItem(hDlg, edt3), MAX_COPIES, 1, 1);
+    }
+
+    /* FIXME: I allow more freedom than either Win95 or WinNT,
+     *        which do not agree to what errors should be thrown or not
+     *        in case nToPage or nFromPage is out-of-range.
+     */
+    if (lppd->nMaxPage < lppd->nMinPage)
+       lppd->nMaxPage = lppd->nMinPage;
+    if (lppd->nMinPage == lppd->nMaxPage)
+       lppd->Flags |= PD_NOPAGENUMS;
+    if (lppd->nToPage < lppd->nMinPage)
+        lppd->nToPage = lppd->nMinPage;
+    if (lppd->nToPage > lppd->nMaxPage)
+        lppd->nToPage = lppd->nMaxPage;
+    if (lppd->nFromPage < lppd->nMinPage)
+        lppd->nFromPage = lppd->nMinPage;
+    if (lppd->nFromPage > lppd->nMaxPage)
+        lppd->nFromPage = lppd->nMaxPage;
+
+    /* if we have the combo box, fill it */
+    if (GetDlgItem(hDlg,comboID)) {
+       /* Fill Combobox
+        */
+       pdn = GlobalLock(lppd->hDevNames);
+       pdm = GlobalLock(lppd->hDevMode);
+       if(pdn)
+           name = (char*)pdn + pdn->wDeviceOffset;
+       else if(pdm)
+           name = pdm->dmDeviceName;
+       PRINTDLG_SetUpPrinterListComboA(hDlg, comboID, name);
+       if(pdm) GlobalUnlock(lppd->hDevMode);
+       if(pdn) GlobalUnlock(lppd->hDevNames);
+
+       /* Now find selected printer and update rest of dlg */
+       name = HeapAlloc(GetProcessHeap(),0,256);
+       if (GetDlgItemTextA(hDlg, comboID, name, 255))
+           PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures);
+       HeapFree(GetProcessHeap(),0,name);
+    } else {
+       /* else use default printer */
+       char name[200];
+        DWORD dwBufLen = sizeof(name);
+       BOOL ret = GetDefaultPrinterA(name, &dwBufLen);
+
+       if (ret)
+           PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures);
+       else
+           FIXME("No default printer found, expect problems!\n");
+    }
+    return TRUE;
+}
+
+static LRESULT PRINTDLG_WMInitDialogW(HWND hDlg, WPARAM wParam,
+                                    PRINT_PTRW* PrintStructures)
+{
+    LPPRINTDLGW lppd = PrintStructures->dlg.lpPrintDlg;
+    DEVNAMES *pdn;
+    DEVMODEW *pdm;
+    WCHAR *name = NULL;
+    UINT comboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4;
+
+    /* load Collate ICONs */
+    /* We load these with LoadImage because they are not a standard
+       size and we don't want them rescaled */
+    PrintStructures->hCollateIcon =
+      LoadImageA(COMDLG32_hInstance, "PD32_COLLATE", IMAGE_ICON, 0, 0, 0);
+    PrintStructures->hNoCollateIcon =
+      LoadImageA(COMDLG32_hInstance, "PD32_NOCOLLATE", IMAGE_ICON, 0, 0, 0);
+
+    /* These can be done with LoadIcon */
+    PrintStructures->hPortraitIcon =
+      LoadIconA(COMDLG32_hInstance, "PD32_PORTRAIT");
+    PrintStructures->hLandscapeIcon =
+      LoadIconA(COMDLG32_hInstance, "PD32_LANDSCAPE");
+
+    if(PrintStructures->hCollateIcon == 0 ||
+       PrintStructures->hNoCollateIcon == 0 ||
+       PrintStructures->hPortraitIcon == 0 ||
+       PrintStructures->hLandscapeIcon == 0) {
+        ERR("no icon in resourcefile\n");
+       COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+       EndDialog(hDlg, FALSE);
+    }
+
+    /*
+     * if lppd->Flags PD_SHOWHELP is specified, a HELPMESGSTRING message
+     * must be registered and the Help button must be shown.
+     */
+    if (lppd->Flags & PD_SHOWHELP) {
+        if((PrintStructures->HelpMessageID =
+           RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) {
+           COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL);
+           return FALSE;
+       }
+    } else
+        PrintStructures->HelpMessageID = 0;
+
+    if(!(lppd->Flags &PD_PRINTSETUP)) {
+        PrintStructures->hwndUpDown =
+         CreateUpDownControl(WS_CHILD | WS_VISIBLE | WS_BORDER |
+                             UDS_NOTHOUSANDS | UDS_ARROWKEYS |
+                             UDS_ALIGNRIGHT | UDS_SETBUDDYINT, 0, 0, 0, 0,
+                             hDlg, UPDOWN_ID, COMDLG32_hInstance,
+                             GetDlgItem(hDlg, edt3), MAX_COPIES, 1, 1);
+    }
+
+    /* FIXME: I allow more freedom than either Win95 or WinNT,
+     *        which do not agree to what errors should be thrown or not
+     *        in case nToPage or nFromPage is out-of-range.
+     */
+    if (lppd->nMaxPage < lppd->nMinPage)
+       lppd->nMaxPage = lppd->nMinPage;
+    if (lppd->nMinPage == lppd->nMaxPage)
+       lppd->Flags |= PD_NOPAGENUMS;
+    if (lppd->nToPage < lppd->nMinPage)
+        lppd->nToPage = lppd->nMinPage;
+    if (lppd->nToPage > lppd->nMaxPage)
+        lppd->nToPage = lppd->nMaxPage;
+    if (lppd->nFromPage < lppd->nMinPage)
+        lppd->nFromPage = lppd->nMinPage;
+    if (lppd->nFromPage > lppd->nMaxPage)
+        lppd->nFromPage = lppd->nMaxPage;
+
+    /* if we have the combo box, fill it */
+    if (GetDlgItem(hDlg,comboID)) {
+       /* Fill Combobox
+        */
+       pdn = GlobalLock(lppd->hDevNames);
+       pdm = GlobalLock(lppd->hDevMode);
+       if(pdn)
+           name = (WCHAR*)pdn + pdn->wDeviceOffset;
+       else if(pdm)
+           name = pdm->dmDeviceName;
+       PRINTDLG_SetUpPrinterListComboW(hDlg, comboID, name);
+       if(pdm) GlobalUnlock(lppd->hDevMode);
+       if(pdn) GlobalUnlock(lppd->hDevNames);
+
+       /* Now find selected printer and update rest of dlg */
+       /* ansi is ok here */
+       name = HeapAlloc(GetProcessHeap(),0,256*sizeof(WCHAR));
+       if (GetDlgItemTextW(hDlg, comboID, name, 255))
+           PRINTDLG_ChangePrinterW(hDlg, name, PrintStructures);
+       HeapFree(GetProcessHeap(),0,name);
+    } else {
+       /* else use default printer */
+       WCHAR name[200];
+        DWORD dwBufLen = sizeof(name) / sizeof(WCHAR);
+       BOOL ret = GetDefaultPrinterW(name, &dwBufLen);
+
+       if (ret)
+           PRINTDLG_ChangePrinterW(hDlg, name, PrintStructures);
+       else
+           FIXME("No default printer found, expect problems!\n");
+    }
+    return TRUE;
+}
+
+/***********************************************************************
+ *                              PRINTDLG_WMCommand               [internal]
+ */
+LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam,
+                       LPARAM lParam, PRINT_PTRA* PrintStructures)
+{
+    LPPRINTDLGA lppd = PrintStructures->dlg.lpPrintDlg;
+    UINT PrinterComboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4;
+    LPDEVMODEA lpdm = PrintStructures->lpDevMode;
+
+    switch (LOWORD(wParam))  {
+    case IDOK:
+        TRACE(" OK button was hit\n");
+        if (PRINTDLG_UpdatePrintDlgA(hDlg, PrintStructures)!=TRUE) {
+           FIXME("Update printdlg was not successful!\n");
+           return(FALSE);
+       }
+       EndDialog(hDlg, TRUE);
+       return(TRUE);
+
+    case IDCANCEL:
+        TRACE(" CANCEL button was hit\n");
+        EndDialog(hDlg, FALSE);
+       return(FALSE);
+
+     case pshHelp:
+        TRACE(" HELP button was hit\n");
+        SendMessageA(lppd->hwndOwner, PrintStructures->HelpMessageID,
+                               (WPARAM) hDlg, (LPARAM) lppd);
+        break;
+
+     case chx2:                         /* collate pages checkbox */
+        if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED)
+            SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                                    (LPARAM)PrintStructures->hCollateIcon);
+        else
+            SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                                    (LPARAM)PrintStructures->hNoCollateIcon);
+        break;
+     case edt1:                         /* from page nr editbox */
+     case edt2:                         /* to page nr editbox */
+        if (HIWORD(wParam)==EN_CHANGE) {
+           WORD nToPage;
+           WORD nFromPage;
+           nFromPage = GetDlgItemInt(hDlg, edt1, NULL, FALSE);
+           nToPage   = GetDlgItemInt(hDlg, edt2, NULL, FALSE);
+            if (nFromPage != lppd->nFromPage || nToPage != lppd->nToPage)
+               CheckRadioButton(hDlg, rad1, rad3, rad3);
+       }
+        break;
+
+    case edt3:
+        if(HIWORD(wParam) == EN_CHANGE) {
+           INT copies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
+           if(copies <= 1)
+               EnableWindow(GetDlgItem(hDlg, chx2), FALSE);
+           else
+               EnableWindow(GetDlgItem(hDlg, chx2), TRUE);
+       }
+       break;
+
+#if 0
+     case psh1:                       /* Print Setup */
+       {
+           PRINTDLG16  pdlg;
+
+           if (!PrintStructures->dlg.lpPrintDlg16) {
+               FIXME("The 32bit print dialog does not have this button!?\n");
+               break;
+           }
+
+           memcpy(&pdlg,PrintStructures->dlg.lpPrintDlg16,sizeof(pdlg));
+           pdlg.Flags |= PD_PRINTSETUP;
+           pdlg.hwndOwner = HWND_16(hDlg);
+           if (!PrintDlg16(&pdlg))
+               break;
+       }
+       break;
+#endif
+     case psh2:                       /* Properties button */
+       {
+         HANDLE hPrinter;
+         char   PrinterName[256];
+
+         GetDlgItemTextA(hDlg, PrinterComboID, PrinterName, 255);
+         if (!OpenPrinterA(PrinterName, &hPrinter, NULL)) {
+            FIXME(" Call to OpenPrinter did not succeed!\n");
+            break;
+        }
+        DocumentPropertiesA(hDlg, hPrinter, PrinterName,
+                            PrintStructures->lpDevMode,
+                            PrintStructures->lpDevMode,
+                            DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT);
+        ClosePrinter(hPrinter);
+         break;
+       }
+
+    case rad1: /* Paperorientation */
+        if (lppd->Flags & PD_PRINTSETUP)
+        {
+              lpdm->dmOrientation = DMORIENT_PORTRAIT;
+              SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                          (LPARAM)(PrintStructures->hPortraitIcon));
+        }
+        break;
+
+    case rad2: /* Paperorientation */
+        if (lppd->Flags & PD_PRINTSETUP)
+        {
+              lpdm->dmOrientation = DMORIENT_LANDSCAPE;
+              SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                          (LPARAM)(PrintStructures->hLandscapeIcon));
+        }
+        break;
+
+    case cmb1: /* Printer Combobox in PRINT SETUP, quality combobox in PRINT */
+        if (PrinterComboID != wParam) {
+            FIXME("No handling for print quality combo box yet.\n");
+            break;
+        }
+        /* FALLTHROUGH */
+    case cmb4:                         /* Printer combobox */
+         if (HIWORD(wParam)==CBN_SELCHANGE) {
+            char   PrinterName[256];
+            GetDlgItemTextA(hDlg, LOWORD(wParam), PrinterName, 255);
+            PRINTDLG_ChangePrinterA(hDlg, PrinterName, PrintStructures);
+        }
+        break;
+
+    case cmb2: /* Papersize */
+      {
+         DWORD Sel = SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0);
+         if(Sel != CB_ERR)
+             lpdm->dmPaperSize = SendDlgItemMessageA(hDlg, cmb2,
+                                                           CB_GETITEMDATA,
+                                                           Sel, 0);
+      }
+      break;
+
+    case cmb3: /* Bin */
+      {
+         DWORD Sel = SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0);
+         if(Sel != CB_ERR)
+             lpdm->dmDefaultSource = SendDlgItemMessageA(hDlg, cmb3,
+                                                         CB_GETITEMDATA, Sel,
+                                                         0);
+      }
+      break;
+    }
+    if(lppd->Flags & PD_PRINTSETUP) {
+        switch (LOWORD(wParam)) {
+       case rad1:                         /* orientation */
+       case rad2:
+           if (IsDlgButtonChecked(hDlg, rad1) == BST_CHECKED) {
+               if(lpdm->dmOrientation != DMORIENT_PORTRAIT) {
+                   lpdm->dmOrientation = DMORIENT_PORTRAIT;
+                   SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE,
+                                       (WPARAM)IMAGE_ICON,
+                                       (LPARAM)PrintStructures->hPortraitIcon);
+                   SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE,
+                                       (WPARAM)IMAGE_ICON,
+                                       (LPARAM)PrintStructures->hPortraitIcon);
+               }
+           } else {
+               if(lpdm->dmOrientation != DMORIENT_LANDSCAPE) {
+                   lpdm->dmOrientation = DMORIENT_LANDSCAPE;
+                   SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE,
+                                       (WPARAM)IMAGE_ICON,
+                                       (LPARAM)PrintStructures->hLandscapeIcon);
+                   SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE,
+                                       (WPARAM)IMAGE_ICON,
+                                       (LPARAM)PrintStructures->hLandscapeIcon);
+               }
+           }
+           break;
+       }
+    }
+    return FALSE;
+}
+
+static LRESULT PRINTDLG_WMCommandW(HWND hDlg, WPARAM wParam,
+                       LPARAM lParam, PRINT_PTRW* PrintStructures)
+{
+    LPPRINTDLGW lppd = PrintStructures->dlg.lpPrintDlg;
+    UINT PrinterComboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4;
+    LPDEVMODEW lpdm = PrintStructures->lpDevMode;
+
+    switch (LOWORD(wParam))  {
+    case IDOK:
+        TRACE(" OK button was hit\n");
+        if (PRINTDLG_UpdatePrintDlgW(hDlg, PrintStructures)!=TRUE) {
+           FIXME("Update printdlg was not successful!\n");
+           return(FALSE);
+       }
+       EndDialog(hDlg, TRUE);
+       return(TRUE);
+
+    case IDCANCEL:
+        TRACE(" CANCEL button was hit\n");
+        EndDialog(hDlg, FALSE);
+       return(FALSE);
+
+     case pshHelp:
+        TRACE(" HELP button was hit\n");
+        SendMessageW(lppd->hwndOwner, PrintStructures->HelpMessageID,
+                               (WPARAM) hDlg, (LPARAM) lppd);
+        break;
+
+     case chx2:                         /* collate pages checkbox */
+        if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED)
+            SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                                    (LPARAM)PrintStructures->hCollateIcon);
+        else
+            SendDlgItemMessageA(hDlg, ico3, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                                    (LPARAM)PrintStructures->hNoCollateIcon);
+        break;
+     case edt1:                         /* from page nr editbox */
+     case edt2:                         /* to page nr editbox */
+        if (HIWORD(wParam)==EN_CHANGE) {
+           WORD nToPage;
+           WORD nFromPage;
+           nFromPage = GetDlgItemInt(hDlg, edt1, NULL, FALSE);
+           nToPage   = GetDlgItemInt(hDlg, edt2, NULL, FALSE);
+            if (nFromPage != lppd->nFromPage || nToPage != lppd->nToPage)
+               CheckRadioButton(hDlg, rad1, rad3, rad3);
+       }
+        break;
+
+    case edt3:
+        if(HIWORD(wParam) == EN_CHANGE) {
+           INT copies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
+           if(copies <= 1)
+               EnableWindow(GetDlgItem(hDlg, chx2), FALSE);
+           else
+               EnableWindow(GetDlgItem(hDlg, chx2), TRUE);
+       }
+       break;
+
+     case psh1:                       /* Print Setup */
+       {
+               ERR("psh1 is called from 16bit code only, we should not get here.\n");
+       }
+       break;
+     case psh2:                       /* Properties button */
+       {
+         HANDLE hPrinter;
+         WCHAR  PrinterName[256];
+
+         GetDlgItemTextW(hDlg, PrinterComboID, PrinterName, 255);
+         if (!OpenPrinterW(PrinterName, &hPrinter, NULL)) {
+            FIXME(" Call to OpenPrinter did not succeed!\n");
+            break;
+        }
+        DocumentPropertiesW(hDlg, hPrinter, PrinterName,
+                            PrintStructures->lpDevMode,
+                            PrintStructures->lpDevMode,
+                            DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT);
+        ClosePrinter(hPrinter);
+         break;
+       }
+
+    case rad1: /* Paperorientation */
+        if (lppd->Flags & PD_PRINTSETUP)
+        {
+              lpdm->dmOrientation = DMORIENT_PORTRAIT;
+              SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                          (LPARAM)(PrintStructures->hPortraitIcon));
+        }
+        break;
+
+    case rad2: /* Paperorientation */
+        if (lppd->Flags & PD_PRINTSETUP)
+        {
+              lpdm->dmOrientation = DMORIENT_LANDSCAPE;
+              SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE, (WPARAM) IMAGE_ICON,
+                          (LPARAM)(PrintStructures->hLandscapeIcon));
+        }
+        break;
+
+    case cmb1: /* Printer Combobox in PRINT SETUP, quality combobox in PRINT */
+        if (PrinterComboID != wParam) {
+            FIXME("No handling for print quality combo box yet.\n");
+            break;
+        }
+        /* FALLTHROUGH */
+    case cmb4:                         /* Printer combobox */
+         if (HIWORD(wParam)==CBN_SELCHANGE) {
+            WCHAR   PrinterName[256];
+            GetDlgItemTextW(hDlg, LOWORD(wParam), PrinterName, 255);
+            PRINTDLG_ChangePrinterW(hDlg, PrinterName, PrintStructures);
+        }
+        break;
+
+    case cmb2: /* Papersize */
+      {
+         DWORD Sel = SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0);
+         if(Sel != CB_ERR)
+             lpdm->dmPaperSize = SendDlgItemMessageA(hDlg, cmb2,
+                                                           CB_GETITEMDATA,
+                                                           Sel, 0);
+      }
+      break;
+
+    case cmb3: /* Bin */
+      {
+         DWORD Sel = SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0);
+         if(Sel != CB_ERR)
+             lpdm->dmDefaultSource = SendDlgItemMessageW(hDlg, cmb3,
+                                                         CB_GETITEMDATA, Sel,
+                                                         0);
+      }
+      break;
+    }
+    if(lppd->Flags & PD_PRINTSETUP) {
+        switch (LOWORD(wParam)) {
+       case rad1:                         /* orientation */
+       case rad2:
+           if (IsDlgButtonChecked(hDlg, rad1) == BST_CHECKED) {
+               if(lpdm->dmOrientation != DMORIENT_PORTRAIT) {
+                   lpdm->dmOrientation = DMORIENT_PORTRAIT;
+                   SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE,
+                                       (WPARAM)IMAGE_ICON,
+                                       (LPARAM)PrintStructures->hPortraitIcon);
+                   SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE,
+                                       (WPARAM)IMAGE_ICON,
+                                       (LPARAM)PrintStructures->hPortraitIcon);
+               }
+           } else {
+               if(lpdm->dmOrientation != DMORIENT_LANDSCAPE) {
+                   lpdm->dmOrientation = DMORIENT_LANDSCAPE;
+                   SendDlgItemMessageA(hDlg, stc10, STM_SETIMAGE,
+                                       (WPARAM)IMAGE_ICON,
+                                       (LPARAM)PrintStructures->hLandscapeIcon);
+                   SendDlgItemMessageA(hDlg, ico1, STM_SETIMAGE,
+                                       (WPARAM)IMAGE_ICON,
+                                       (LPARAM)PrintStructures->hLandscapeIcon);
+               }
+           }
+           break;
+       }
+    }
+    return FALSE;
+}
+
+/***********************************************************************
+ *           PrintDlgProcA                     [internal]
+ */
+INT_PTR CALLBACK PrintDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam,
+                         LPARAM lParam)
+{
+    PRINT_PTRA* PrintStructures;
+    INT_PTR res = FALSE;
+
+    if (uMsg!=WM_INITDIALOG) {
+        PrintStructures = (PRINT_PTRA*)GetPropA(hDlg,"__WINE_PRINTDLGDATA");
+       if (!PrintStructures)
+           return FALSE;
+    } else {
+        PrintStructures = (PRINT_PTRA*) lParam;
+       SetPropA(hDlg,"__WINE_PRINTDLGDATA",PrintStructures);
+       res = PRINTDLG_WMInitDialog(hDlg, wParam, PrintStructures);
+
+       if(PrintStructures->dlg.lpPrintDlg->Flags & PD_ENABLEPRINTHOOK)
+           res = PrintStructures->dlg.lpPrintDlg->lpfnPrintHook(
+               hDlg, uMsg, wParam, (LPARAM)PrintStructures->dlg.lpPrintDlg
+           );
+       return res;
+    }
+
+    if(PrintStructures->dlg.lpPrintDlg->Flags & PD_ENABLEPRINTHOOK) {
+        res = PrintStructures->dlg.lpPrintDlg->lpfnPrintHook(hDlg,uMsg,wParam,
+                                                        lParam);
+       if(res) return res;
+    }
+
+    switch (uMsg) {
+    case WM_COMMAND:
+        return PRINTDLG_WMCommandA(hDlg, wParam, lParam, PrintStructures);
+
+    case WM_DESTROY:
+       DestroyIcon(PrintStructures->hCollateIcon);
+       DestroyIcon(PrintStructures->hNoCollateIcon);
+        DestroyIcon(PrintStructures->hPortraitIcon);
+        DestroyIcon(PrintStructures->hLandscapeIcon);
+       if(PrintStructures->hwndUpDown)
+           DestroyWindow(PrintStructures->hwndUpDown);
+        return FALSE;
+    }
+    return res;
+}
+
+INT_PTR CALLBACK PrintDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam,
+                         LPARAM lParam)
+{
+    static const WCHAR propW[] = {'_','_','W','I','N','E','_','P','R','I','N','T','D','L','G','D','A','T','A',0};
+    PRINT_PTRW* PrintStructures;
+    INT_PTR res = FALSE;
+
+    if (uMsg!=WM_INITDIALOG) {
+       PrintStructures = (PRINT_PTRW*) GetPropW(hDlg, propW);
+       if (!PrintStructures)
+           return FALSE;
+    } else {
+        PrintStructures = (PRINT_PTRW*) lParam;
+       SetPropW(hDlg, propW, PrintStructures);
+       res = PRINTDLG_WMInitDialogW(hDlg, wParam, PrintStructures);
+
+       if(PrintStructures->dlg.lpPrintDlg->Flags & PD_ENABLEPRINTHOOK)
+           res = PrintStructures->dlg.lpPrintDlg->lpfnPrintHook(hDlg, uMsg, wParam, (LPARAM)PrintStructures->dlg.lpPrintDlg);
+       return res;
+    }
+
+    if(PrintStructures->dlg.lpPrintDlg->Flags & PD_ENABLEPRINTHOOK) {
+        res = PrintStructures->dlg.lpPrintDlg->lpfnPrintHook(hDlg,uMsg,wParam, lParam);
+       if(res) return res;
+    }
+
+    switch (uMsg) {
+    case WM_COMMAND:
+        return PRINTDLG_WMCommandW(hDlg, wParam, lParam, PrintStructures);
+
+    case WM_DESTROY:
+       DestroyIcon(PrintStructures->hCollateIcon);
+       DestroyIcon(PrintStructures->hNoCollateIcon);
+        DestroyIcon(PrintStructures->hPortraitIcon);
+        DestroyIcon(PrintStructures->hLandscapeIcon);
+       if(PrintStructures->hwndUpDown)
+           DestroyWindow(PrintStructures->hwndUpDown);
+        return FALSE;
+    }
+    return res;
+}
+
+/************************************************************
+ *
+ *      PRINTDLG_GetDlgTemplate
+ *
+ */
+static HGLOBAL PRINTDLG_GetDlgTemplateA(PRINTDLGA *lppd)
+{
+    HRSRC hResInfo;
+    HGLOBAL hDlgTmpl;
+
+    if (lppd->Flags & PD_PRINTSETUP) {
+       if(lppd->Flags & PD_ENABLESETUPTEMPLATEHANDLE) {
+           hDlgTmpl = lppd->hSetupTemplate;
+       } else if(lppd->Flags & PD_ENABLESETUPTEMPLATE) {
+           hResInfo = FindResourceA(lppd->hInstance,
+                                    lppd->lpSetupTemplateName, (LPSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource(lppd->hInstance, hResInfo);
+       } else {
+           hResInfo = FindResourceA(COMDLG32_hInstance, "PRINT32_SETUP",
+                                    (LPSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo);
+       }
+    } else {
+       if(lppd->Flags & PD_ENABLEPRINTTEMPLATEHANDLE) {
+           hDlgTmpl = lppd->hPrintTemplate;
+       } else if(lppd->Flags & PD_ENABLEPRINTTEMPLATE) {
+           hResInfo = FindResourceA(lppd->hInstance,
+                                    lppd->lpPrintTemplateName,
+                                    (LPSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource(lppd->hInstance, hResInfo);
+       } else {
+           hResInfo = FindResourceA(COMDLG32_hInstance, "PRINT32",
+                                    (LPSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo);
+       }
+    }
+    return hDlgTmpl;
+}
+
+static HGLOBAL PRINTDLG_GetDlgTemplateW(PRINTDLGW *lppd)
+{
+    HRSRC hResInfo;
+    HGLOBAL hDlgTmpl;
+    const WCHAR xpsetup[] = { 'P','R','I','N','T','3','2','_','S','E','T','U','P',0};
+    const WCHAR xprint[] = { 'P','R','I','N','T','3','2',0};
+
+    if (lppd->Flags & PD_PRINTSETUP) {
+       if(lppd->Flags & PD_ENABLESETUPTEMPLATEHANDLE) {
+           hDlgTmpl = lppd->hSetupTemplate;
+       } else if(lppd->Flags & PD_ENABLESETUPTEMPLATE) {
+           hResInfo = FindResourceW(lppd->hInstance,
+                                    lppd->lpSetupTemplateName, (LPWSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource(lppd->hInstance, hResInfo);
+       } else {
+           hResInfo = FindResourceW(COMDLG32_hInstance, xpsetup, (LPWSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo);
+       }
+    } else {
+       if(lppd->Flags & PD_ENABLEPRINTTEMPLATEHANDLE) {
+           hDlgTmpl = lppd->hPrintTemplate;
+       } else if(lppd->Flags & PD_ENABLEPRINTTEMPLATE) {
+           hResInfo = FindResourceW(lppd->hInstance,
+                                    lppd->lpPrintTemplateName,
+                                    (LPWSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource(lppd->hInstance, hResInfo);
+       } else {
+           hResInfo = FindResourceW(COMDLG32_hInstance, xprint, (LPWSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo);
+       }
+    }
+    return hDlgTmpl;
+}
+
+/***********************************************************************
+ *
+ *      PRINTDLG_CreateDC
+ *
+ */
+static BOOL PRINTDLG_CreateDCA(LPPRINTDLGA lppd)
+{
+    DEVNAMES *pdn = GlobalLock(lppd->hDevNames);
+    DEVMODEA *pdm = GlobalLock(lppd->hDevMode);
+
+    if(lppd->Flags & PD_RETURNDC) {
+        lppd->hDC = CreateDCA((char*)pdn + pdn->wDriverOffset,
+                             (char*)pdn + pdn->wDeviceOffset,
+                             (char*)pdn + pdn->wOutputOffset,
+                             pdm );
+    } else if(lppd->Flags & PD_RETURNIC) {
+        lppd->hDC = CreateICA((char*)pdn + pdn->wDriverOffset,
+                             (char*)pdn + pdn->wDeviceOffset,
+                             (char*)pdn + pdn->wOutputOffset,
+                             pdm );
+    }
+    GlobalUnlock(lppd->hDevNames);
+    GlobalUnlock(lppd->hDevMode);
+    return lppd->hDC ? TRUE : FALSE;
+}
+
+static BOOL PRINTDLG_CreateDCW(LPPRINTDLGW lppd)
+{
+    DEVNAMES *pdn = GlobalLock(lppd->hDevNames);
+    DEVMODEW *pdm = GlobalLock(lppd->hDevMode);
+
+    if(lppd->Flags & PD_RETURNDC) {
+        lppd->hDC = CreateDCW((WCHAR*)pdn + pdn->wDriverOffset,
+                             (WCHAR*)pdn + pdn->wDeviceOffset,
+                             (WCHAR*)pdn + pdn->wOutputOffset,
+                             pdm );
+    } else if(lppd->Flags & PD_RETURNIC) {
+        lppd->hDC = CreateICW((WCHAR*)pdn + pdn->wDriverOffset,
+                             (WCHAR*)pdn + pdn->wDeviceOffset,
+                             (WCHAR*)pdn + pdn->wOutputOffset,
+                             pdm );
+    }
+    GlobalUnlock(lppd->hDevNames);
+    GlobalUnlock(lppd->hDevMode);
+    return lppd->hDC ? TRUE : FALSE;
+}
+
+/***********************************************************************
+ *           PrintDlgA   (COMDLG32.@)
+ *
+ *  Displays the the PRINT dialog box, which enables the user to specify
+ *  specific properties of the print job.
+ *
+ * RETURNS
+ *  nonzero if the user pressed the OK button
+ *  zero    if the user cancelled the window or an error occurred
+ *
+ * BUGS
+ *  PrintDlg:
+ *  * The Collate Icons do not display, even though they are in the code.
+ *  * The Properties Button(s) should call DocumentPropertiesA().
+ *  PrintSetupDlg:
+ *  * The Paper Orientation Icons are not implemented yet.
+ *  * The Properties Button(s) should call DocumentPropertiesA().
+ *  * Settings are not yet taken from a provided DevMode or
+ *    default printer settings.
+ */
+
+BOOL WINAPI PrintDlgA(
+                     LPPRINTDLGA lppd /* [in/out] ptr to PRINTDLG32 struct */
+                     )
+{
+    BOOL      bRet = FALSE;
+    LPVOID   ptr;
+    HINSTANCE hInst = (HINSTANCE)GetWindowLongA( lppd->hwndOwner, GWL_HINSTANCE );
+
+    if(TRACE_ON(commdlg)) {
+        char flagstr[1000] = "";
+       struct pd_flags *pflag = pd_flags;
+       for( ; pflag->name; pflag++) {
+           if(lppd->Flags & pflag->flag)
+               strcat(flagstr, pflag->name);
+       }
+       TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
+             "pp. %d-%d, min p %d, max p %d, copies %d, hinst %p\n"
+             "flags %08lx (%s)\n",
+             lppd, lppd->hwndOwner, lppd->hDevMode, lppd->hDevNames,
+             lppd->nFromPage, lppd->nToPage, lppd->nMinPage, lppd->nMaxPage,
+             lppd->nCopies, lppd->hInstance, lppd->Flags, flagstr);
+    }
+
+    if(lppd->lStructSize != sizeof(PRINTDLGA)) {
+        WARN("structure size failure !!!\n");
+       COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE);
+       return FALSE;
+    }
+
+    if(lppd->Flags & PD_RETURNDEFAULT) {
+        PRINTER_INFO_2A *pbuf;
+       DRIVER_INFO_3A  *dbuf;
+       HANDLE hprn;
+       DWORD needed;
+
+       if(lppd->hDevMode || lppd->hDevNames) {
+           WARN("hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n");
+           COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE);
+           return FALSE;
+       }
+        if(!PRINTDLG_OpenDefaultPrinter(&hprn)) {
+           WARN("Can't find default printer\n");
+           COMDLG32_SetCommDlgExtendedError(PDERR_NODEFAULTPRN);
+           return FALSE;
+       }
+
+       GetPrinterA(hprn, 2, NULL, 0, &needed);
+       pbuf = HeapAlloc(GetProcessHeap(), 0, needed);
+       GetPrinterA(hprn, 2, (LPBYTE)pbuf, needed, &needed);
+
+       GetPrinterDriverA(hprn, NULL, 3, NULL, 0, &needed);
+       dbuf = HeapAlloc(GetProcessHeap(),0,needed);
+       if (!GetPrinterDriverA(hprn, NULL, 3, (LPBYTE)dbuf, needed, &needed)) {
+           ERR("GetPrinterDriverA failed, le %ld, fix your config for printer %s!\n",GetLastError(),pbuf->pPrinterName);
+           COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE);
+           return FALSE;
+       }
+       ClosePrinter(hprn);
+
+       PRINTDLG_CreateDevNames(&(lppd->hDevNames),
+                                 dbuf->pDriverPath,
+                                 pbuf->pPrinterName,
+                                 pbuf->pPortName);
+       lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, pbuf->pDevMode->dmSize +
+                                    pbuf->pDevMode->dmDriverExtra);
+       ptr = GlobalLock(lppd->hDevMode);
+       memcpy(ptr, pbuf->pDevMode, pbuf->pDevMode->dmSize +
+              pbuf->pDevMode->dmDriverExtra);
+       GlobalUnlock(lppd->hDevMode);
+       HeapFree(GetProcessHeap(), 0, pbuf);
+       HeapFree(GetProcessHeap(), 0, dbuf);
+       bRet = TRUE;
+    } else {
+       HGLOBAL hDlgTmpl;
+       PRINT_PTRA *PrintStructures;
+
+    /* load Dialog resources,
+     * depending on Flags indicates Print32 or Print32_setup dialog
+     */
+       hDlgTmpl = PRINTDLG_GetDlgTemplateA(lppd);
+       if (!hDlgTmpl) {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+       ptr = LockResource( hDlgTmpl );
+       if (!ptr) {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+
+        PrintStructures = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                                   sizeof(PRINT_PTRA));
+       PrintStructures->dlg.lpPrintDlg = lppd;
+
+       /* and create & process the dialog .
+        * -1 is failure, 0 is broken hwnd, everything else is ok.
+        */
+       bRet = (0<DialogBoxIndirectParamA(hInst, ptr, lppd->hwndOwner,
+                                          PrintDlgProcA,
+                                          (LPARAM)PrintStructures));
+
+       if(bRet) {
+           DEVMODEA *lpdm = PrintStructures->lpDevMode, *lpdmReturn;
+           PRINTER_INFO_2A *pi = PrintStructures->lpPrinterInfo;
+           DRIVER_INFO_3A *di = PrintStructures->lpDriverInfo;
+
+           if (lppd->hDevMode == 0) {
+               TRACE(" No hDevMode yet... Need to create my own\n");
+               lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE,
+                                       lpdm->dmSize + lpdm->dmDriverExtra);
+           } else {
+               WORD locks;
+               if((locks = (GlobalFlags(lppd->hDevMode) & GMEM_LOCKCOUNT))) {
+                   WARN("hDevMode has %d locks on it. Unlocking it now\n", locks);
+                   while(locks--) {
+                       GlobalUnlock(lppd->hDevMode);
+                       TRACE("Now got %d locks\n", locks);
+                   }
+               }
+               lppd->hDevMode = GlobalReAlloc(lppd->hDevMode,
+                                              lpdm->dmSize + lpdm->dmDriverExtra,
+                                              GMEM_MOVEABLE);
+           }
+           lpdmReturn = GlobalLock(lppd->hDevMode);
+           memcpy(lpdmReturn, lpdm, lpdm->dmSize + lpdm->dmDriverExtra);
+
+           if (lppd->hDevNames != 0) {
+               WORD locks;
+               if((locks = (GlobalFlags(lppd->hDevNames) & GMEM_LOCKCOUNT))) {
+                   WARN("hDevNames has %d locks on it. Unlocking it now\n", locks);
+                   while(locks--)
+                       GlobalUnlock(lppd->hDevNames);
+               }
+           }
+           PRINTDLG_CreateDevNames(&(lppd->hDevNames),
+                   di->pDriverPath,
+                   pi->pPrinterName,
+                   pi->pPortName
+           );
+           GlobalUnlock(lppd->hDevMode);
+       }
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode);
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpPrinterInfo);
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpDriverInfo);
+       HeapFree(GetProcessHeap(), 0, PrintStructures);
+    }
+    if(bRet && (lppd->Flags & PD_RETURNDC || lppd->Flags & PD_RETURNIC))
+        bRet = PRINTDLG_CreateDCA(lppd);
+
+    TRACE("exit! (%d)\n", bRet);
+    return bRet;
+}
+
+/***********************************************************************
+ *           PrintDlgW   (COMDLG32.@)
+ */
+BOOL WINAPI PrintDlgW(
+                     LPPRINTDLGW lppd /* [in/out] ptr to PRINTDLG32 struct */
+                     )
+{
+    BOOL      bRet = FALSE;
+    LPVOID   ptr;
+    HINSTANCE hInst = (HINSTANCE)GetWindowLongW( lppd->hwndOwner, GWL_HINSTANCE );
+
+    if(TRACE_ON(commdlg)) {
+        char flagstr[1000] = "";
+       struct pd_flags *pflag = pd_flags;
+       for( ; pflag->name; pflag++) {
+           if(lppd->Flags & pflag->flag)
+               strcat(flagstr, pflag->name);
+       }
+       TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
+             "pp. %d-%d, min p %d, max p %d, copies %d, hinst %p\n"
+             "flags %08lx (%s)\n",
+             lppd, lppd->hwndOwner, lppd->hDevMode, lppd->hDevNames,
+             lppd->nFromPage, lppd->nToPage, lppd->nMinPage, lppd->nMaxPage,
+             lppd->nCopies, lppd->hInstance, lppd->Flags, flagstr);
+    }
+
+    if(lppd->lStructSize != sizeof(PRINTDLGW)) {
+        WARN("structure size failure !!!\n");
+       COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE);
+       return FALSE;
+    }
+
+    if(lppd->Flags & PD_RETURNDEFAULT) {
+        PRINTER_INFO_2W *pbuf;
+       DRIVER_INFO_3W  *dbuf;
+       HANDLE hprn;
+       DWORD needed;
+
+       if(lppd->hDevMode || lppd->hDevNames) {
+           WARN("hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n");
+           COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE);
+           return FALSE;
+       }
+        if(!PRINTDLG_OpenDefaultPrinter(&hprn)) {
+           WARN("Can't find default printer\n");
+           COMDLG32_SetCommDlgExtendedError(PDERR_NODEFAULTPRN);
+           return FALSE;
+       }
+
+       GetPrinterW(hprn, 2, NULL, 0, &needed);
+       pbuf = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*needed);
+       GetPrinterW(hprn, 2, (LPBYTE)pbuf, needed, &needed);
+
+       GetPrinterDriverW(hprn, NULL, 3, NULL, 0, &needed);
+       dbuf = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*needed);
+       if (!GetPrinterDriverW(hprn, NULL, 3, (LPBYTE)dbuf, needed, &needed)) {
+           ERR("GetPrinterDriverA failed, le %ld, fix your config for printer %s!\n",GetLastError(),debugstr_w(pbuf->pPrinterName));
+           COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE);
+           return FALSE;
+       }
+       ClosePrinter(hprn);
+
+       PRINTDLG_CreateDevNamesW(&(lppd->hDevNames),
+                                 dbuf->pDriverPath,
+                                 pbuf->pPrinterName,
+                                 pbuf->pPortName);
+       lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, pbuf->pDevMode->dmSize +
+                                    pbuf->pDevMode->dmDriverExtra);
+       ptr = GlobalLock(lppd->hDevMode);
+       memcpy(ptr, pbuf->pDevMode, pbuf->pDevMode->dmSize +
+              pbuf->pDevMode->dmDriverExtra);
+       GlobalUnlock(lppd->hDevMode);
+       HeapFree(GetProcessHeap(), 0, pbuf);
+       HeapFree(GetProcessHeap(), 0, dbuf);
+       bRet = TRUE;
+    } else {
+       HGLOBAL hDlgTmpl;
+       PRINT_PTRW *PrintStructures;
+
+    /* load Dialog resources,
+     * depending on Flags indicates Print32 or Print32_setup dialog
+     */
+       hDlgTmpl = PRINTDLG_GetDlgTemplateW(lppd);
+       if (!hDlgTmpl) {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+       ptr = LockResource( hDlgTmpl );
+       if (!ptr) {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+
+        PrintStructures = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                                   sizeof(PRINT_PTRW));
+       PrintStructures->dlg.lpPrintDlg = lppd;
+
+       /* and create & process the dialog .
+        * -1 is failure, 0 is broken hwnd, everything else is ok.
+        */
+       bRet = (0<DialogBoxIndirectParamW(hInst, ptr, lppd->hwndOwner,
+                                          PrintDlgProcW,
+                                          (LPARAM)PrintStructures));
+
+       if(bRet) {
+           DEVMODEW *lpdm = PrintStructures->lpDevMode, *lpdmReturn;
+           PRINTER_INFO_2W *pi = PrintStructures->lpPrinterInfo;
+           DRIVER_INFO_3W *di = PrintStructures->lpDriverInfo;
+
+           if (lppd->hDevMode == 0) {
+               TRACE(" No hDevMode yet... Need to create my own\n");
+               lppd->hDevMode = GlobalAlloc(GMEM_MOVEABLE,
+                                       lpdm->dmSize + lpdm->dmDriverExtra);
+           } else {
+               WORD locks;
+               if((locks = (GlobalFlags(lppd->hDevMode) & GMEM_LOCKCOUNT))) {
+                   WARN("hDevMode has %d locks on it. Unlocking it now\n", locks);
+                   while(locks--) {
+                       GlobalUnlock(lppd->hDevMode);
+                       TRACE("Now got %d locks\n", locks);
+                   }
+               }
+               lppd->hDevMode = GlobalReAlloc(lppd->hDevMode,
+                                              lpdm->dmSize + lpdm->dmDriverExtra,
+                                              GMEM_MOVEABLE);
+           }
+           lpdmReturn = GlobalLock(lppd->hDevMode);
+           memcpy(lpdmReturn, lpdm, lpdm->dmSize + lpdm->dmDriverExtra);
+
+           if (lppd->hDevNames != 0) {
+               WORD locks;
+               if((locks = (GlobalFlags(lppd->hDevNames) & GMEM_LOCKCOUNT))) {
+                   WARN("hDevNames has %d locks on it. Unlocking it now\n", locks);
+                   while(locks--)
+                       GlobalUnlock(lppd->hDevNames);
+               }
+           }
+           PRINTDLG_CreateDevNamesW(&(lppd->hDevNames),
+                   di->pDriverPath,
+                   pi->pPrinterName,
+                   pi->pPortName
+           );
+           GlobalUnlock(lppd->hDevMode);
+       }
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode);
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpPrinterInfo);
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpDriverInfo);
+       HeapFree(GetProcessHeap(), 0, PrintStructures);
+    }
+    if(bRet && (lppd->Flags & PD_RETURNDC || lppd->Flags & PD_RETURNIC))
+        bRet = PRINTDLG_CreateDCW(lppd);
+
+    TRACE("exit! (%d)\n", bRet);
+    return bRet;
+}
+
+/***********************************************************************
+ *
+ *          PageSetupDlg
+ * rad1 - portrait
+ * rad2 - landscape
+ * cmb2 - paper size
+ * cmb3 - source (tray?)
+ * edt4 - border left
+ * edt5 - border top
+ * edt6 - border right
+ * edt7 - border bottom
+ * psh3 - "Printer..."
+ */
+
+typedef struct {
+    LPPAGESETUPDLGA    dlga;
+    PRINTDLGA          pdlg;
+} PageSetupDataA;
+
+typedef struct {
+    LPPAGESETUPDLGW    dlga;
+    PRINTDLGW          pdlg;
+} PageSetupDataW;
+
+static HGLOBAL PRINTDLG_GetPGSTemplateA(PAGESETUPDLGA *lppd)
+{
+    HRSRC hResInfo;
+    HGLOBAL hDlgTmpl;
+
+    if(lppd->Flags & PSD_ENABLEPAGESETUPTEMPLATEHANDLE) {
+       hDlgTmpl = lppd->hPageSetupTemplate;
+    } else if(lppd->Flags & PSD_ENABLEPAGESETUPTEMPLATE) {
+       hResInfo = FindResourceA(lppd->hInstance,
+                                lppd->lpPageSetupTemplateName, (LPSTR)RT_DIALOG);
+       hDlgTmpl = LoadResource(lppd->hInstance, hResInfo);
+    } else {
+       hResInfo = FindResourceA(COMDLG32_hInstance,(LPCSTR)PAGESETUPDLGORD,(LPSTR)RT_DIALOG);
+       hDlgTmpl = LoadResource(COMDLG32_hInstance,hResInfo);
+    }
+    return hDlgTmpl;
+}
+
+static HGLOBAL PRINTDLG_GetPGSTemplateW(PAGESETUPDLGW *lppd)
+{
+    HRSRC hResInfo;
+    HGLOBAL hDlgTmpl;
+
+    if(lppd->Flags & PSD_ENABLEPAGESETUPTEMPLATEHANDLE) {
+       hDlgTmpl = lppd->hPageSetupTemplate;
+    } else if(lppd->Flags & PSD_ENABLEPAGESETUPTEMPLATE) {
+       hResInfo = FindResourceW(lppd->hInstance,
+                                lppd->lpPageSetupTemplateName, (LPWSTR)RT_DIALOG);
+       hDlgTmpl = LoadResource(lppd->hInstance, hResInfo);
+    } else {
+       hResInfo = FindResourceW(COMDLG32_hInstance,(LPCWSTR)PAGESETUPDLGORD,(LPWSTR)RT_DIALOG);
+       hDlgTmpl = LoadResource(COMDLG32_hInstance,hResInfo);
+    }
+    return hDlgTmpl;
+}
+
+static DWORD
+_c_10mm2size(PAGESETUPDLGA *dlga,DWORD size) {
+    if (dlga->Flags & PSD_INTHOUSANDTHSOFINCHES)
+       return 10*size*10/25.4;
+    /* If we don't have a flag, we can choose one. Use millimeters
+     * to avoid confusing me
+     */
+    dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS;
+    return 10*size;
+}
+
+
+static DWORD
+_c_inch2size(PAGESETUPDLGA *dlga,DWORD size) {
+    if (dlga->Flags & PSD_INTHOUSANDTHSOFINCHES)
+       return size;
+    if (dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS)
+       return (size*254)/10;
+    /* if we don't have a flag, we can choose one. Use millimeters
+     * to avoid confusing me
+     */
+    dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS;
+    return (size*254)/10;
+}
+
+static void
+_c_size2strA(PageSetupDataA *pda,DWORD size,LPSTR strout) {
+    strcpy(strout,"<undef>");
+    if (pda->dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) {
+       sprintf(strout,"%.2fmm",(size*1.0)/100.0);
+       return;
+    }
+    if (pda->dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) {
+       sprintf(strout,"%.2fin",(size*1.0)/1000.0);
+       return;
+    }
+    pda->dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS;
+    sprintf(strout,"%.2fmm",(size*1.0)/100.0);
+    return;
+}
+static void
+_c_size2strW(PageSetupDataW *pda,DWORD size,LPSTR strout) {
+    strcpy(strout,"<undef>");
+    if (pda->dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) {
+       sprintf(strout,"%.2fmm",(size*1.0)/100.0);
+       return;
+    }
+    if (pda->dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) {
+       sprintf(strout,"%.2fin",(size*1.0)/1000.0);
+       return;
+    }
+    pda->dlga->Flags |= PSD_INHUNDREDTHSOFMILLIMETERS;
+    sprintf(strout,"%.2fmm",(size*1.0)/100.0);
+    return;
+}
+
+static DWORD
+_c_str2size(PAGESETUPDLGA *dlga,LPCSTR strin) {
+    float      val;
+    char       rest[200];
+
+    rest[0]='\0';
+    if (!sscanf(strin,"%f%s",&val,rest))
+       return 0;
+
+    if (!strcmp(rest,"in") || !strcmp(rest,"inch")) {
+       if (dlga->Flags & PSD_INTHOUSANDTHSOFINCHES)
+           return 1000*val;
+       else
+           return val*25.4*100;
+    }
+    if (!strcmp(rest,"cm")) { rest[0]='m'; val = val*10.0; }
+    if (!strcmp(rest,"m")) { strcpy(rest,"mm"); val = val*1000.0; }
+
+    if (!strcmp(rest,"mm")) {
+       if (dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS)
+           return 100*val;
+       else
+           return 1000.0*val/25.4;
+    }
+    if (rest[0]=='\0') {
+       /* use application supplied default */
+       if (dlga->Flags & PSD_INHUNDREDTHSOFMILLIMETERS) {
+           /* 100*mm */
+           return 100.0*val;
+       }
+       if (dlga->Flags & PSD_INTHOUSANDTHSOFINCHES) {
+           /* 1000*inch */
+           return 1000.0*val;
+       }
+    }
+    ERR("Did not find a conversion for type '%s'!\n",rest);
+    return 0;
+}
+
+
+/*
+ * This is called on finish and will update the output fields of the
+ * struct.
+ */
+static BOOL
+PRINTDLG_PS_UpdateDlgStructA(HWND hDlg, PageSetupDataA *pda) {
+    DEVNAMES   *dn;
+    DEVMODEA   *dm;
+    LPSTR      devname,portname;
+    char       papername[64];
+    char       buf[200];
+
+    dn = GlobalLock(pda->pdlg.hDevNames);
+    dm = GlobalLock(pda->pdlg.hDevMode);
+    devname    = ((char*)dn)+dn->wDeviceOffset;
+    portname   = ((char*)dn)+dn->wOutputOffset;
+    PRINTDLG_SetUpPaperComboBoxA(hDlg,cmb2,devname,portname,dm);
+    PRINTDLG_SetUpPaperComboBoxA(hDlg,cmb3,devname,portname,dm);
+
+    if (GetDlgItemTextA(hDlg,cmb2,papername,sizeof(papername))>0) {
+       PRINTDLG_PaperSizeA(&(pda->pdlg),papername,&(pda->dlga->ptPaperSize));
+       pda->dlga->ptPaperSize.x = _c_10mm2size(pda->dlga,pda->dlga->ptPaperSize.x);
+       pda->dlga->ptPaperSize.y = _c_10mm2size(pda->dlga,pda->dlga->ptPaperSize.y);
+    } else
+       FIXME("could not get dialog text for papersize cmbbox?\n");
+#define GETVAL(id,val) if (GetDlgItemTextA(hDlg,id,buf,sizeof(buf))>0) { val = _c_str2size(pda->dlga,buf); } else { FIXME("could not get dlgitemtexta for %x\n",id); }
+    GETVAL(edt4,pda->dlga->rtMargin.left);
+    GETVAL(edt5,pda->dlga->rtMargin.top);
+    GETVAL(edt6,pda->dlga->rtMargin.right);
+    GETVAL(edt7,pda->dlga->rtMargin.bottom);
+#undef GETVAL
+
+    /* If we are in landscape, swap x and y of page size */
+    if (IsDlgButtonChecked(hDlg, rad2)) {
+       DWORD tmp;
+       tmp = pda->dlga->ptPaperSize.x;
+       pda->dlga->ptPaperSize.x = pda->dlga->ptPaperSize.y;
+       pda->dlga->ptPaperSize.y = tmp;
+    }
+    GlobalUnlock(pda->pdlg.hDevNames);
+    GlobalUnlock(pda->pdlg.hDevMode);
+    return TRUE;
+}
+
+static BOOL
+PRINTDLG_PS_UpdateDlgStructW(HWND hDlg, PageSetupDataW *pda) {
+    DEVNAMES   *dn;
+    DEVMODEW   *dm;
+    LPWSTR     devname,portname;
+    WCHAR      papername[64];
+
+    char       buf[200];
+
+    dn = GlobalLock(pda->pdlg.hDevNames);
+    dm = GlobalLock(pda->pdlg.hDevMode);
+    devname    = ((WCHAR*)dn)+dn->wDeviceOffset;
+    portname   = ((WCHAR*)dn)+dn->wOutputOffset;
+    PRINTDLG_SetUpPaperComboBoxW(hDlg,cmb2,devname,portname,dm);
+    PRINTDLG_SetUpPaperComboBoxW(hDlg,cmb3,devname,portname,dm);
+
+    if (GetDlgItemTextW(hDlg,cmb2,papername,sizeof(papername))>0) {
+       PRINTDLG_PaperSizeW(&(pda->pdlg),papername,&(pda->dlga->ptPaperSize));
+       pda->dlga->ptPaperSize.x = _c_10mm2size((LPPAGESETUPDLGA)pda->dlga,pda->dlga->ptPaperSize.x);
+       pda->dlga->ptPaperSize.y = _c_10mm2size((LPPAGESETUPDLGA)pda->dlga,pda->dlga->ptPaperSize.y);
+    } else
+       FIXME("could not get dialog text for papersize cmbbox?\n");
+#define GETVAL(id,val) if (GetDlgItemTextA(hDlg,id,buf,sizeof(buf))>0) { val = _c_str2size((LPPAGESETUPDLGA)pda->dlga,buf); } else { FIXME("could not get dlgitemtexta for %x\n",id); }
+    GETVAL(edt4,pda->dlga->rtMargin.left);
+    GETVAL(edt5,pda->dlga->rtMargin.top);
+    GETVAL(edt6,pda->dlga->rtMargin.right);
+    GETVAL(edt7,pda->dlga->rtMargin.bottom);
+#undef GETVAL
+
+    /* If we are in landscape, swap x and y of page size */
+    if (IsDlgButtonChecked(hDlg, rad2)) {
+       DWORD tmp;
+       tmp = pda->dlga->ptPaperSize.x;
+       pda->dlga->ptPaperSize.x = pda->dlga->ptPaperSize.y;
+       pda->dlga->ptPaperSize.y = tmp;
+    }
+    GlobalUnlock(pda->pdlg.hDevNames);
+    GlobalUnlock(pda->pdlg.hDevMode);
+    return TRUE;
+}
+
+/*
+ * This is called after returning from PrintDlg().
+ */
+static BOOL
+PRINTDLG_PS_ChangePrinterA(HWND hDlg, PageSetupDataA *pda) {
+    DEVNAMES   *dn;
+    DEVMODEA   *dm;
+    LPSTR      devname,portname;
+
+    dn = GlobalLock(pda->pdlg.hDevNames);
+    dm = GlobalLock(pda->pdlg.hDevMode);
+    devname    = ((char*)dn)+dn->wDeviceOffset;
+    portname   = ((char*)dn)+dn->wOutputOffset;
+    PRINTDLG_SetUpPaperComboBoxA(hDlg,cmb2,devname,portname,dm);
+    PRINTDLG_SetUpPaperComboBoxA(hDlg,cmb3,devname,portname,dm);
+    GlobalUnlock(pda->pdlg.hDevNames);
+    GlobalUnlock(pda->pdlg.hDevMode);
+    return TRUE;
+}
+
+static BOOL
+PRINTDLG_PS_ChangePrinterW(HWND hDlg, PageSetupDataW *pda) {
+    DEVNAMES   *dn;
+    DEVMODEW   *dm;
+    LPWSTR     devname,portname;
+
+    dn = GlobalLock(pda->pdlg.hDevNames);
+    dm = GlobalLock(pda->pdlg.hDevMode);
+    devname    = ((WCHAR*)dn)+dn->wDeviceOffset;
+    portname   = ((WCHAR*)dn)+dn->wOutputOffset;
+    PRINTDLG_SetUpPaperComboBoxW(hDlg,cmb2,devname,portname,dm);
+    PRINTDLG_SetUpPaperComboBoxW(hDlg,cmb3,devname,portname,dm);
+    GlobalUnlock(pda->pdlg.hDevNames);
+    GlobalUnlock(pda->pdlg.hDevMode);
+    return TRUE;
+}
+
+static BOOL
+PRINTDLG_PS_WMCommandA(
+    HWND hDlg, WPARAM wParam, LPARAM lParam, PageSetupDataA *pda
+) {
+    switch (LOWORD(wParam))  {
+    case IDOK:
+        if (!PRINTDLG_PS_UpdateDlgStructA(hDlg, pda))
+           return(FALSE);
+       EndDialog(hDlg, TRUE);
+       return TRUE ;
+
+    case IDCANCEL:
+        EndDialog(hDlg, FALSE);
+       return FALSE ;
+
+    case psh3: {
+       pda->pdlg.Flags         = 0;
+       pda->pdlg.hwndOwner     = hDlg;
+       if (PrintDlgA(&(pda->pdlg)))
+           PRINTDLG_PS_ChangePrinterA(hDlg,pda);
+       return TRUE;
+    }
+    }
+    FIXME("loword (lparam) %d, wparam 0x%x, lparam %08lx, STUB mostly.\n",
+           LOWORD(lParam),wParam,lParam
+    );
+    return FALSE;
+}
+
+static BOOL
+PRINTDLG_PS_WMCommandW(
+    HWND hDlg, WPARAM wParam, LPARAM lParam, PageSetupDataW *pda
+) {
+    switch (LOWORD(wParam))  {
+    case IDOK:
+        if (!PRINTDLG_PS_UpdateDlgStructW(hDlg, pda))
+           return(FALSE);
+       EndDialog(hDlg, TRUE);
+       return TRUE ;
+
+    case IDCANCEL:
+        EndDialog(hDlg, FALSE);
+       return FALSE ;
+
+    case psh3: {
+       pda->pdlg.Flags         = 0;
+       pda->pdlg.hwndOwner     = hDlg;
+       if (PrintDlgW(&(pda->pdlg)))
+           PRINTDLG_PS_ChangePrinterW(hDlg,pda);
+       return TRUE;
+    }
+    }
+    FIXME("loword (lparam) %d, wparam 0x%x, lparam %08lx, STUB mostly.\n",
+           LOWORD(lParam),wParam,lParam
+    );
+    return FALSE;
+}
+
+
+static INT_PTR CALLBACK
+PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+    PageSetupDataA     *pda;
+    INT_PTR            res = FALSE;
+
+    if (uMsg==WM_INITDIALOG) {
+       res = TRUE;
+        pda = (PageSetupDataA*)lParam;
+       SetPropA(hDlg,"__WINE_PAGESETUPDLGDATA",pda);
+       if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) {
+           res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,(LPARAM)pda->dlga);
+           if (!res) {
+               FIXME("Setup page hook failed?\n");
+               res = TRUE;
+           }
+       }
+       if (pda->dlga->Flags & PSD_ENABLEPAGEPAINTHOOK) {
+           FIXME("PagePaintHook not yet implemented!\n");
+       }
+       if (pda->dlga->Flags & PSD_DISABLEPRINTER)
+            EnableWindow(GetDlgItem(hDlg, psh3), FALSE);
+       if (pda->dlga->Flags & PSD_DISABLEMARGINS) {
+            EnableWindow(GetDlgItem(hDlg, edt4), FALSE);
+            EnableWindow(GetDlgItem(hDlg, edt5), FALSE);
+            EnableWindow(GetDlgItem(hDlg, edt6), FALSE);
+            EnableWindow(GetDlgItem(hDlg, edt7), FALSE);
+       }
+       /* width larger as height -> landscape */
+       if (pda->dlga->ptPaperSize.x > pda->dlga->ptPaperSize.y)
+            CheckRadioButton(hDlg, rad1, rad2, rad2);
+       else /* this is default if papersize is not set */
+            CheckRadioButton(hDlg, rad1, rad2, rad1);
+       if (pda->dlga->Flags & PSD_DISABLEORIENTATION) {
+           EnableWindow(GetDlgItem(hDlg,rad1),FALSE);
+           EnableWindow(GetDlgItem(hDlg,rad2),FALSE);
+       }
+       /* We fill them out enabled or not */
+       if (pda->dlga->Flags & PSD_MARGINS) {
+           char str[100];
+           _c_size2strA(pda,pda->dlga->rtMargin.left,str);
+           SetDlgItemTextA(hDlg,edt4,str);
+           _c_size2strA(pda,pda->dlga->rtMargin.top,str);
+           SetDlgItemTextA(hDlg,edt5,str);
+           _c_size2strA(pda,pda->dlga->rtMargin.right,str);
+           SetDlgItemTextA(hDlg,edt6,str);
+           _c_size2strA(pda,pda->dlga->rtMargin.bottom,str);
+           SetDlgItemTextA(hDlg,edt7,str);
+       } else {
+           /* default is 1 inch */
+           DWORD size = _c_inch2size(pda->dlga,1000);
+           char        str[20];
+           _c_size2strA(pda,size,str);
+           SetDlgItemTextA(hDlg,edt4,str);
+           SetDlgItemTextA(hDlg,edt5,str);
+           SetDlgItemTextA(hDlg,edt6,str);
+           SetDlgItemTextA(hDlg,edt7,str);
+       }
+       PRINTDLG_PS_ChangePrinterA(hDlg,pda);
+       if (pda->dlga->Flags & PSD_DISABLEPAPER) {
+           EnableWindow(GetDlgItem(hDlg,cmb2),FALSE);
+           EnableWindow(GetDlgItem(hDlg,cmb3),FALSE);
+       }
+       return TRUE;
+    } else {
+       pda = (PageSetupDataA*)GetPropA(hDlg,"__WINE_PAGESETUPDLGDATA");
+       if (!pda) {
+           WARN("__WINE_PAGESETUPDLGDATA prop not set?\n");
+           return FALSE;
+       }
+       if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) {
+           res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,lParam);
+           if (res) return res;
+       }
+    }
+    switch (uMsg) {
+    case WM_COMMAND:
+        return PRINTDLG_PS_WMCommandA(hDlg, wParam, lParam, pda);
+    }
+    return FALSE;
+}
+
+static INT_PTR CALLBACK
+PageDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+    PageSetupDataW     *pda;
+    BOOL               res = FALSE;
+
+    if (uMsg==WM_INITDIALOG) {
+       res = TRUE;
+        pda = (PageSetupDataW*)lParam;
+       SetPropA(hDlg,"__WINE_PAGESETUPDLGDATA",pda);
+       if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) {
+           res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,(LPARAM)pda->dlga);
+           if (!res) {
+               FIXME("Setup page hook failed?\n");
+               res = TRUE;
+           }
+       }
+       if (pda->dlga->Flags & PSD_ENABLEPAGEPAINTHOOK) {
+           FIXME("PagePaintHook not yet implemented!\n");
+       }
+       if (pda->dlga->Flags & PSD_DISABLEPRINTER)
+            EnableWindow(GetDlgItem(hDlg, psh3), FALSE);
+       if (pda->dlga->Flags & PSD_DISABLEMARGINS) {
+            EnableWindow(GetDlgItem(hDlg, edt4), FALSE);
+            EnableWindow(GetDlgItem(hDlg, edt5), FALSE);
+            EnableWindow(GetDlgItem(hDlg, edt6), FALSE);
+            EnableWindow(GetDlgItem(hDlg, edt7), FALSE);
+       }
+       /* width larger as height -> landscape */
+       if (pda->dlga->ptPaperSize.x > pda->dlga->ptPaperSize.y)
+            CheckRadioButton(hDlg, rad1, rad2, rad2);
+       else /* this is default if papersize is not set */
+            CheckRadioButton(hDlg, rad1, rad2, rad1);
+       if (pda->dlga->Flags & PSD_DISABLEORIENTATION) {
+           EnableWindow(GetDlgItem(hDlg,rad1),FALSE);
+           EnableWindow(GetDlgItem(hDlg,rad2),FALSE);
+       }
+       /* We fill them out enabled or not */
+       if (pda->dlga->Flags & PSD_MARGINS) {
+           char str[100];
+           _c_size2strW(pda,pda->dlga->rtMargin.left,str);
+           SetDlgItemTextA(hDlg,edt4,str);
+           _c_size2strW(pda,pda->dlga->rtMargin.top,str);
+           SetDlgItemTextA(hDlg,edt5,str);
+           _c_size2strW(pda,pda->dlga->rtMargin.right,str);
+           SetDlgItemTextA(hDlg,edt6,str);
+           _c_size2strW(pda,pda->dlga->rtMargin.bottom,str);
+           SetDlgItemTextA(hDlg,edt7,str);
+       } else {
+           /* default is 1 inch */
+           DWORD size = _c_inch2size((LPPAGESETUPDLGA)pda->dlga,1000);
+           char        str[20];
+           _c_size2strW(pda,size,str);
+           SetDlgItemTextA(hDlg,edt4,str);
+           SetDlgItemTextA(hDlg,edt5,str);
+           SetDlgItemTextA(hDlg,edt6,str);
+           SetDlgItemTextA(hDlg,edt7,str);
+       }
+       PRINTDLG_PS_ChangePrinterW(hDlg,pda);
+       if (pda->dlga->Flags & PSD_DISABLEPAPER) {
+           EnableWindow(GetDlgItem(hDlg,cmb2),FALSE);
+           EnableWindow(GetDlgItem(hDlg,cmb3),FALSE);
+       }
+       return TRUE;
+    } else {
+       pda = (PageSetupDataW*)GetPropA(hDlg,"__WINE_PAGESETUPDLGDATA");
+       if (!pda) {
+           WARN("__WINE_PAGESETUPDLGDATA prop not set?\n");
+           return FALSE;
+       }
+       if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) {
+           res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,lParam);
+           if (res) return res;
+       }
+    }
+    switch (uMsg) {
+    case WM_COMMAND:
+        return PRINTDLG_PS_WMCommandW(hDlg, wParam, lParam, pda);
+    }
+    return FALSE;
+}
+
+/***********************************************************************
+ *            PageSetupDlgA  (COMDLG32.@)
+ */
+BOOL WINAPI PageSetupDlgA(LPPAGESETUPDLGA setupdlg) {
+    HGLOBAL            hDlgTmpl;
+    LPVOID             ptr;
+    BOOL               bRet;
+    PageSetupDataA     *pda;
+    PRINTDLGA          pdlg;
+
+    if(TRACE_ON(commdlg)) {
+        char flagstr[1000] = "";
+       struct pd_flags *pflag = psd_flags;
+       for( ; pflag->name; pflag++) {
+           if(setupdlg->Flags & pflag->flag) {
+               strcat(flagstr, pflag->name);
+               strcat(flagstr, "|");
+           }
+       }
+       TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
+             "hinst %p, flags %08lx (%s)\n",
+             setupdlg, setupdlg->hwndOwner, setupdlg->hDevMode,
+             setupdlg->hDevNames,
+             setupdlg->hInstance, setupdlg->Flags, flagstr);
+    }
+
+    /* First get default printer data, we need it right after that. */
+    memset(&pdlg,0,sizeof(pdlg));
+    pdlg.lStructSize   = sizeof(pdlg);
+    pdlg.Flags         = PD_RETURNDEFAULT;
+    bRet = PrintDlgA(&pdlg);
+    if (!bRet) return FALSE;
+
+    /* short cut exit, just return default values */
+    if (setupdlg->Flags & PSD_RETURNDEFAULT) {
+       setupdlg->hDevMode      = pdlg.hDevMode;
+       setupdlg->hDevNames     = pdlg.hDevNames;
+       /* FIXME: Just return "A4" for now. */
+       PRINTDLG_PaperSizeA(&pdlg,"A4",&setupdlg->ptPaperSize);
+       setupdlg->ptPaperSize.x=_c_10mm2size(setupdlg,setupdlg->ptPaperSize.x);
+       setupdlg->ptPaperSize.y=_c_10mm2size(setupdlg,setupdlg->ptPaperSize.y);
+       return TRUE;
+    }
+    hDlgTmpl = PRINTDLG_GetPGSTemplateA(setupdlg);
+    if (!hDlgTmpl) {
+       COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+       return FALSE;
+    }
+    ptr = LockResource( hDlgTmpl );
+    if (!ptr) {
+       COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+       return FALSE;
+    }
+    pda = HeapAlloc(GetProcessHeap(),0,sizeof(*pda));
+    pda->dlga = setupdlg;
+    memcpy(&pda->pdlg,&pdlg,sizeof(pdlg));
+
+    bRet = (0<DialogBoxIndirectParamA(
+               setupdlg->hInstance,
+               ptr,
+               setupdlg->hwndOwner,
+               PageDlgProcA,
+               (LPARAM)pda)
+    );
+    return bRet;
+}
+/***********************************************************************
+ *            PageSetupDlgW  (COMDLG32.@)
+ */
+BOOL WINAPI PageSetupDlgW(LPPAGESETUPDLGW setupdlg) {
+    HGLOBAL            hDlgTmpl;
+    LPVOID             ptr;
+    BOOL               bRet;
+    PageSetupDataW     *pdw;
+    PRINTDLGW          pdlg;
+
+    if(TRACE_ON(commdlg)) {
+        char flagstr[1000] = "";
+       struct pd_flags *pflag = psd_flags;
+       for( ; pflag->name; pflag++) {
+           if(setupdlg->Flags & pflag->flag) {
+               strcat(flagstr, pflag->name);
+               strcat(flagstr, "|");
+           }
+       }
+       TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
+             "hinst %p, flags %08lx (%s)\n",
+             setupdlg, setupdlg->hwndOwner, setupdlg->hDevMode,
+             setupdlg->hDevNames,
+             setupdlg->hInstance, setupdlg->Flags, flagstr);
+    }
+
+    /* First get default printer data, we need it right after that. */
+    memset(&pdlg,0,sizeof(pdlg));
+    pdlg.lStructSize   = sizeof(pdlg);
+    pdlg.Flags         = PD_RETURNDEFAULT;
+    bRet = PrintDlgW(&pdlg);
+    if (!bRet) return FALSE;
+
+    /* short cut exit, just return default values */
+    if (setupdlg->Flags & PSD_RETURNDEFAULT) {
+        const WCHAR a4[] = {'A','4',0};
+       setupdlg->hDevMode      = pdlg.hDevMode;
+       setupdlg->hDevNames     = pdlg.hDevNames;
+       /* FIXME: Just return "A4" for now. */
+       PRINTDLG_PaperSizeW(&pdlg,a4,&setupdlg->ptPaperSize);
+       setupdlg->ptPaperSize.x=_c_10mm2size((LPPAGESETUPDLGA)setupdlg,setupdlg->ptPaperSize.x);
+       setupdlg->ptPaperSize.y=_c_10mm2size((LPPAGESETUPDLGA)setupdlg,setupdlg->ptPaperSize.y);
+       return TRUE;
+    }
+    hDlgTmpl = PRINTDLG_GetPGSTemplateW(setupdlg);
+    if (!hDlgTmpl) {
+       COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+       return FALSE;
+    }
+    ptr = LockResource( hDlgTmpl );
+    if (!ptr) {
+       COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+       return FALSE;
+    }
+    pdw = HeapAlloc(GetProcessHeap(),0,sizeof(*pdw));
+    pdw->dlga = setupdlg;
+    memcpy(&pdw->pdlg,&pdlg,sizeof(pdlg));
+
+    bRet = (0<DialogBoxIndirectParamW(
+               setupdlg->hInstance,
+               ptr,
+               setupdlg->hwndOwner,
+               PageDlgProcW,
+               (LPARAM)pdw)
+    );
+    return bRet;
+}
+
+/***********************************************************************
+ *     PrintDlgExA (COMDLG32.@)
+ */
+HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA lpPrintDlgExA)
+{
+       FIXME("stub\n");
+       return E_NOTIMPL;
+}
+/***********************************************************************
+ *     PrintDlgExW (COMDLG32.@)
+ */
+HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW lpPrintDlgExW)
+{
+       FIXME("stub\n");
+       return E_NOTIMPL;
+}
diff --git a/reactos/lib/comdlg32/printdlg.h b/reactos/lib/comdlg32/printdlg.h
new file mode 100644 (file)
index 0000000..a9d8078
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * COMMDLG - Print Dialog
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ * Copyright 1999 Klaas van Gend
+ * Copyright 2000 Huw D M Davies
+ *
+ * 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_PRINTDLG_H
+#define _WINE_PRINTDLG_H
+
+#include "cdlg.h"
+
+/* This PRINTDLGA internal structure stores
+ * pointers to several throughout useful structures.
+ */
+
+typedef struct
+{
+  LPDEVMODEA        lpDevMode;
+  struct {
+      LPPRINTDLGA       lpPrintDlg;
+  } dlg;
+  LPPRINTER_INFO_2A lpPrinterInfo;
+  LPDRIVER_INFO_3A  lpDriverInfo;
+  UINT              HelpMessageID;
+  HICON             hCollateIcon;    /* PrintDlg only */
+  HICON             hNoCollateIcon;  /* PrintDlg only */
+  HICON             hPortraitIcon;   /* PrintSetupDlg only */
+  HICON             hLandscapeIcon;  /* PrintSetupDlg only */
+  HWND              hwndUpDown;
+} PRINT_PTRA;
+
+typedef struct
+{
+  LPDEVMODEW        lpDevMode;
+  struct {
+      LPPRINTDLGW       lpPrintDlg;
+  } dlg;
+  LPPRINTER_INFO_2W lpPrinterInfo;
+  LPDRIVER_INFO_3W  lpDriverInfo;
+  UINT              HelpMessageID;
+  HICON             hCollateIcon;    /* PrintDlg only */
+  HICON             hNoCollateIcon;  /* PrintDlg only */
+  HICON             hPortraitIcon;   /* PrintSetupDlg only */
+  HICON             hLandscapeIcon;  /* PrintSetupDlg only */
+  HWND              hwndUpDown;
+} PRINT_PTRW;
+
+/* Debugging info */
+static struct pd_flags {
+  DWORD  flag;
+  LPCSTR name;
+} pd_flags[] = {
+  {PD_SELECTION, "PD_SELECTION "},
+  {PD_PAGENUMS, "PD_PAGENUMS "},
+  {PD_NOSELECTION, "PD_NOSELECTION "},
+  {PD_NOPAGENUMS, "PD_NOPAGENUMS "},
+  {PD_COLLATE, "PD_COLLATE "},
+  {PD_PRINTTOFILE, "PD_PRINTTOFILE "},
+  {PD_PRINTSETUP, "PD_PRINTSETUP "},
+  {PD_NOWARNING, "PD_NOWARNING "},
+  {PD_RETURNDC, "PD_RETURNDC "},
+  {PD_RETURNIC, "PD_RETURNIC "},
+  {PD_RETURNDEFAULT, "PD_RETURNDEFAULT "},
+  {PD_SHOWHELP, "PD_SHOWHELP "},
+  {PD_ENABLEPRINTHOOK, "PD_ENABLEPRINTHOOK "},
+  {PD_ENABLESETUPHOOK, "PD_ENABLESETUPHOOK "},
+  {PD_ENABLEPRINTTEMPLATE, "PD_ENABLEPRINTTEMPLATE "},
+  {PD_ENABLESETUPTEMPLATE, "PD_ENABLESETUPTEMPLATE "},
+  {PD_ENABLEPRINTTEMPLATEHANDLE, "PD_ENABLEPRINTTEMPLATEHANDLE "},
+  {PD_ENABLESETUPTEMPLATEHANDLE, "PD_ENABLESETUPTEMPLATEHANDLE "},
+  {PD_USEDEVMODECOPIES, "PD_USEDEVMODECOPIES[ANDCOLLATE] "},
+  {PD_DISABLEPRINTTOFILE, "PD_DISABLEPRINTTOFILE "},
+  {PD_HIDEPRINTTOFILE, "PD_HIDEPRINTTOFILE "},
+  {PD_NONETWORKBUTTON, "PD_NONETWORKBUTTON "},
+  {-1, NULL}
+};
+
+/* Internal Functions
+ * Do not Export to other applications or dlls
+ */
+
+INT PRINTDLG_SetUpPrinterListComboA(HWND hDlg, UINT id, LPCSTR name);
+BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name,
+                                  PRINT_PTRA *PrintStructures);
+BOOL PRINTDLG_OpenDefaultPrinter(HANDLE *hprn);
+LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam,
+                       LPARAM lParam, PRINT_PTRA* PrintStructures);
+
+#endif /* _WINE_PRINTDLG_H */
diff --git a/reactos/lib/comdlg32/printdlg16.c b/reactos/lib/comdlg32/printdlg16.c
new file mode 100644 (file)
index 0000000..157b5d8
--- /dev/null
@@ -0,0 +1,610 @@
+/*
+ * COMMDLG - Print Dialog
+ *
+ * Copyright 1994 Martin Ayotte
+ * Copyright 1996 Albrecht Kleine
+ * Copyright 1999 Klaas van Gend
+ * Copyright 2000 Huw D M Davies
+ *
+ * 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 <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "wine/wingdi16.h"
+#include "winuser.h"
+#include "wine/winuser16.h"
+#include "commdlg.h"
+#include "dlgs.h"
+#include "wine/debug.h"
+#include "cderr.h"
+#include "winspool.h"
+#include "winerror.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
+
+#include "cdlg.h"
+#include "cdlg16.h"
+#include "printdlg.h"
+
+/* This PRINTDLGA16 internal structure stores
+ * pointers to several throughout useful structures.
+ * This structure is a duplicate of the PRINT_PTRA
+ * struct with a extra memeber.
+ */
+
+typedef struct
+{
+  LPDEVMODEA        lpDevMode;
+  struct {
+      LPPRINTDLGA       lpPrintDlg;
+      LPPRINTDLG16     lpPrintDlg16;
+  } dlg;
+  LPPRINTER_INFO_2A lpPrinterInfo;
+  LPDRIVER_INFO_3A  lpDriverInfo;
+  UINT              HelpMessageID;
+  HICON             hCollateIcon;    /* PrintDlg only */
+  HICON             hNoCollateIcon;  /* PrintDlg only */
+  HICON             hPortraitIcon;   /* PrintSetupDlg only */
+  HICON             hLandscapeIcon;  /* PrintSetupDlg only */
+  HWND              hwndUpDown;
+} PRINT_PTRA16;
+
+/* Internal Functions */
+
+static BOOL PRINTDLG_CreateDevNames16(HGLOBAL16 *hmem, char* DeviceDriverName,
+                                     char* DeviceName, char* OutputPort)
+{
+    long size;
+    char*   pDevNamesSpace;
+    char*   pTempPtr;
+    LPDEVNAMES lpDevNames;
+    char buf[260];
+    DWORD dwBufLen = sizeof(buf);
+
+    size = strlen(DeviceDriverName) + 1
+            + strlen(DeviceName) + 1
+            + strlen(OutputPort) + 1
+            + sizeof(DEVNAMES);
+
+    if(*hmem)
+        *hmem = GlobalReAlloc16(*hmem, size, GMEM_MOVEABLE);
+    else
+        *hmem = GlobalAlloc16(GMEM_MOVEABLE, size);
+    if (*hmem == 0)
+        return FALSE;
+
+    pDevNamesSpace = GlobalLock16(*hmem);
+    lpDevNames = (LPDEVNAMES) pDevNamesSpace;
+
+    pTempPtr = pDevNamesSpace + sizeof(DEVNAMES);
+    strcpy(pTempPtr, DeviceDriverName);
+    lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace;
+
+    pTempPtr += strlen(DeviceDriverName) + 1;
+    strcpy(pTempPtr, DeviceName);
+    lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace;
+
+    pTempPtr += strlen(DeviceName) + 1;
+    strcpy(pTempPtr, OutputPort);
+    lpDevNames->wOutputOffset = pTempPtr - pDevNamesSpace;
+
+    GetDefaultPrinterA(buf, &dwBufLen);
+    lpDevNames->wDefault = (strcmp(buf, DeviceName) == 0) ? 1 : 0;
+    GlobalUnlock16(*hmem);
+    return TRUE;
+}
+
+
+/***********************************************************************
+ *           PRINTDLG_WMInitDialog                      [internal]
+ */
+static LRESULT PRINTDLG_WMInitDialog16(HWND hDlg, WPARAM wParam,
+                                    PRINT_PTRA16* PrintStructures)
+{
+    LPPRINTDLG16 lppd = PrintStructures->dlg.lpPrintDlg16;
+    DEVNAMES *pdn;
+    DEVMODEA *pdm;
+    char *name = NULL;
+    UINT comboID = (lppd->Flags & PD_PRINTSETUP) ? cmb1 : cmb4;
+
+    /* load Collate ICONs */
+    PrintStructures->hCollateIcon =
+      LoadIconA(COMDLG32_hInstance, "PD32_COLLATE");
+    PrintStructures->hNoCollateIcon =
+      LoadIconA(COMDLG32_hInstance, "PD32_NOCOLLATE");
+    if(PrintStructures->hCollateIcon == 0 ||
+       PrintStructures->hNoCollateIcon == 0) {
+        ERR("no icon in resourcefile\n");
+       COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+       EndDialog(hDlg, FALSE);
+    }
+
+    /* load Paper Orientation ICON */
+    /* FIXME: not implemented yet */
+
+    /*
+     * if lppd->Flags PD_SHOWHELP is specified, a HELPMESGSTRING message
+     * must be registered and the Help button must be shown.
+     */
+    if (lppd->Flags & PD_SHOWHELP) {
+        if((PrintStructures->HelpMessageID =
+           RegisterWindowMessageA(HELPMSGSTRINGA)) == 0) {
+           COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL);
+           return FALSE;
+       }
+    } else
+        PrintStructures->HelpMessageID = 0;
+
+    if (!(lppd->Flags & PD_PRINTSETUP)) {
+       /* We have a print quality combo box. What shall we do? */
+       if (GetDlgItem(hDlg,cmb1)) {
+           char buf [20];
+
+           FIXME("Print quality only displaying currently.\n");
+
+           pdm = GlobalLock16(lppd->hDevMode);
+           if(pdm) {
+               switch (pdm->dmPrintQuality) {
+               case DMRES_HIGH         : strcpy(buf,"High");break;
+               case DMRES_MEDIUM       : strcpy(buf,"Medium");break;
+               case DMRES_LOW          : strcpy(buf,"Low");break;
+               case DMRES_DRAFT        : strcpy(buf,"Draft");break;
+               case 0                  : strcpy(buf,"Default");break;
+               default                 : sprintf(buf,"%ddpi",pdm->dmPrintQuality);break;
+               }
+               GlobalUnlock16(lppd->hDevMode);
+           } else
+               strcpy(buf,"Default");
+           SendDlgItemMessageA(hDlg,cmb1,CB_ADDSTRING,0,(LPARAM)buf);
+           SendDlgItemMessageA(hDlg,cmb1,CB_SETCURSEL,0,0);
+           EnableWindow(GetDlgItem(hDlg,cmb1),FALSE);
+       }
+    }
+
+    /* FIXME: I allow more freedom than either Win95 or WinNT,
+     *        which do not agree to what errors should be thrown or not
+     *        in case nToPage or nFromPage is out-of-range.
+     */
+    if (lppd->nMaxPage < lppd->nMinPage)
+       lppd->nMaxPage = lppd->nMinPage;
+    if (lppd->nMinPage == lppd->nMaxPage)
+       lppd->Flags |= PD_NOPAGENUMS;
+    if (lppd->nToPage < lppd->nMinPage)
+        lppd->nToPage = lppd->nMinPage;
+    if (lppd->nToPage > lppd->nMaxPage)
+        lppd->nToPage = lppd->nMaxPage;
+    if (lppd->nFromPage < lppd->nMinPage)
+        lppd->nFromPage = lppd->nMinPage;
+    if (lppd->nFromPage > lppd->nMaxPage)
+        lppd->nFromPage = lppd->nMaxPage;
+
+    /* If the printer combo box is in the dialog, fill it */
+    if (GetDlgItem(hDlg,comboID)) {
+       /* Fill Combobox
+        */
+       pdn = GlobalLock16(lppd->hDevNames);
+       pdm = GlobalLock16(lppd->hDevMode);
+       if(pdn)
+           name = (char*)pdn + pdn->wDeviceOffset;
+       else if(pdm)
+           name = pdm->dmDeviceName;
+       PRINTDLG_SetUpPrinterListComboA(hDlg, comboID, name);
+       if(pdm) GlobalUnlock16(lppd->hDevMode);
+       if(pdn) GlobalUnlock16(lppd->hDevNames);
+
+       /* Now find selected printer and update rest of dlg */
+       name = HeapAlloc(GetProcessHeap(),0,256);
+       if (GetDlgItemTextA(hDlg, comboID, name, 255))
+           PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures);
+    } else {
+       /* else just use default printer */
+       char name[200];
+        DWORD dwBufLen = sizeof(name);
+       BOOL ret = GetDefaultPrinterA(name, &dwBufLen);
+
+       if (ret)
+           PRINTDLG_ChangePrinterA(hDlg, name, PrintStructures);
+       else
+           FIXME("No default printer found, expect problems!\n");
+    }
+    HeapFree(GetProcessHeap(),0,name);
+
+    return TRUE;
+}
+
+/************************************************************
+ *
+ *      PRINTDLG_Get16TemplateFrom32             [Internal]
+ *      Generates a 16 bits template from the Wine 32 bits resource
+ *
+ */
+static HGLOBAL16 PRINTDLG_Get16TemplateFrom32(LPCSTR PrintResourceName)
+{
+       HRSRC hResInfo;
+       HGLOBAL hDlgTmpl32;
+        LPCVOID template32;
+        DWORD size;
+        HGLOBAL16 hGlobal16;
+        LPVOID template;
+
+        if (!(hResInfo = FindResourceA(COMDLG32_hInstance,
+               PrintResourceName, (LPSTR)RT_DIALOG)))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
+            return 0;
+        }
+        if (!(hDlgTmpl32 = LoadResource(COMDLG32_hInstance, hResInfo )) ||
+            !(template32 = LockResource( hDlgTmpl32 )))
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+            return 0;
+        }
+        size = SizeofResource(COMDLG32_hInstance, hResInfo);
+        hGlobal16 = GlobalAlloc16(0, size);
+        if (!hGlobal16)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMALLOCFAILURE);
+            ERR("alloc failure for %ld bytes\n", size);
+            return 0;
+        }
+        template = GlobalLock16(hGlobal16);
+        if (!template)
+        {
+            COMDLG32_SetCommDlgExtendedError(CDERR_MEMLOCKFAILURE);
+            ERR("global lock failure for %x handle\n", hGlobal16);
+            GlobalFree16(hGlobal16);
+            return 0;
+        }
+        ConvertDialog32To16((LPVOID)template32, size, (LPVOID)template);
+        GlobalUnlock16(hGlobal16);
+        return hGlobal16;
+}
+
+static BOOL PRINTDLG_CreateDC16(LPPRINTDLG16 lppd)
+{
+    DEVNAMES *pdn = GlobalLock16(lppd->hDevNames);
+    DEVMODEA *pdm = GlobalLock16(lppd->hDevMode);
+
+    if(lppd->Flags & PD_RETURNDC) {
+        lppd->hDC = HDC_16(CreateDCA((char*)pdn + pdn->wDriverOffset,
+                             (char*)pdn + pdn->wDeviceOffset,
+                             (char*)pdn + pdn->wOutputOffset,
+                             pdm ));
+    } else if(lppd->Flags & PD_RETURNIC) {
+        lppd->hDC = HDC_16(CreateICA((char*)pdn + pdn->wDriverOffset,
+                             (char*)pdn + pdn->wDeviceOffset,
+                             (char*)pdn + pdn->wOutputOffset,
+                             pdm ));
+    }
+    GlobalUnlock16(lppd->hDevNames);
+    GlobalUnlock16(lppd->hDevMode);
+    return lppd->hDC ? TRUE : FALSE;
+}
+
+/************************************************************
+ *
+ *      PRINTDLG_GetDlgTemplate
+ *
+ */
+static HGLOBAL16 PRINTDLG_GetDlgTemplate16(PRINTDLG16 *lppd)
+{
+    HGLOBAL16 hDlgTmpl, hResInfo;
+
+    if (lppd->Flags & PD_PRINTSETUP) {
+       if(lppd->Flags & PD_ENABLESETUPTEMPLATEHANDLE) {
+           hDlgTmpl = lppd->hSetupTemplate;
+       } else if(lppd->Flags & PD_ENABLESETUPTEMPLATE) {
+           hResInfo = FindResource16(lppd->hInstance,
+                                    MapSL(lppd->lpSetupTemplateName), (LPSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource16(lppd->hInstance, hResInfo);
+       } else {
+           hDlgTmpl = PRINTDLG_Get16TemplateFrom32("PRINT32_SETUP");
+       }
+    } else {
+       if(lppd->Flags & PD_ENABLEPRINTTEMPLATEHANDLE) {
+           hDlgTmpl = lppd->hPrintTemplate;
+       } else if(lppd->Flags & PD_ENABLEPRINTTEMPLATE) {
+           hResInfo = FindResource16(lppd->hInstance,
+                                    MapSL(lppd->lpPrintTemplateName),
+                                    (LPSTR)RT_DIALOG);
+           hDlgTmpl = LoadResource16(lppd->hInstance, hResInfo);
+       } else {
+           hDlgTmpl = PRINTDLG_Get16TemplateFrom32("PRINT32");
+       }
+    }
+    return hDlgTmpl;
+}
+
+/**********************************************************************
+ *
+ *      16 bit commdlg
+ */
+
+/***********************************************************************
+ *           PrintDlg   (COMMDLG.20)
+ *
+ *  Displays the the PRINT dialog box, which enables the user to specify
+ *  specific properties of the print job.
+ *
+ * RETURNS
+ *  nonzero if the user pressed the OK button
+ *  zero    if the user cancelled the window or an error occurred
+ *
+ * BUGS
+ *  * calls up to the 32-bit versions of the Dialogs, which look different
+ *  * Customizing is *not* implemented.
+ */
+
+BOOL16 WINAPI PrintDlg16(
+             LPPRINTDLG16 lppd /* [in/out] ptr to PRINTDLG struct */
+) {
+    BOOL      bRet = FALSE;
+    LPVOID   ptr;
+    HINSTANCE16 hInst = GetWindowWord( HWND_32(lppd->hwndOwner), GWL_HINSTANCE );
+
+    if(TRACE_ON(commdlg)) {
+        char flagstr[1000] = "";
+       struct pd_flags *pflag = pd_flags;
+       for( ; pflag->name; pflag++) {
+           if(lppd->Flags & pflag->flag)
+               strcat(flagstr, pflag->name);
+       }
+       TRACE("(%p): hwndOwner = %08x, hDevMode = %08x, hDevNames = %08x\n"
+             "pp. %d-%d, min p %d, max p %d, copies %d, hinst %08x\n"
+             "flags %08lx (%s)\n",
+             lppd, lppd->hwndOwner, lppd->hDevMode, lppd->hDevNames,
+             lppd->nFromPage, lppd->nToPage, lppd->nMinPage, lppd->nMaxPage,
+             lppd->nCopies, lppd->hInstance, lppd->Flags, flagstr);
+    }
+
+    if(lppd->lStructSize != sizeof(PRINTDLG16)) {
+        ERR("structure size (%ld/%d)\n",lppd->lStructSize,sizeof(PRINTDLG16));
+       COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE);
+       return FALSE;
+    }
+
+    if(lppd->Flags & PD_RETURNDEFAULT) {
+        PRINTER_INFO_2A *pbuf;
+       DRIVER_INFO_3A  *dbuf;
+       HANDLE hprn;
+       DWORD needed;
+
+       if(lppd->hDevMode || lppd->hDevNames) {
+           WARN("hDevMode or hDevNames non-zero for PD_RETURNDEFAULT\n");
+           COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE);
+           return FALSE;
+       }
+        if(!PRINTDLG_OpenDefaultPrinter(&hprn)) {
+           WARN("Can't find default printer\n");
+           COMDLG32_SetCommDlgExtendedError(PDERR_NODEFAULTPRN);
+           return FALSE;
+       }
+
+       GetPrinterA(hprn, 2, NULL, 0, &needed);
+       pbuf = HeapAlloc(GetProcessHeap(), 0, needed);
+       GetPrinterA(hprn, 2, (LPBYTE)pbuf, needed, &needed);
+       GetPrinterDriverA(hprn, NULL, 3, NULL, 0, &needed);
+       dbuf = HeapAlloc(GetProcessHeap(),0,needed);
+       if (!GetPrinterDriverA(hprn, NULL, 3, (LPBYTE)dbuf, needed, &needed)) {
+           ERR("GetPrinterDriverA failed for %s, le %ld, fix your config!\n",
+                   pbuf->pPrinterName,GetLastError());
+            HeapFree(GetProcessHeap(), 0, dbuf);
+           COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE);
+           return FALSE;
+       }
+       ClosePrinter(hprn);
+       PRINTDLG_CreateDevNames16(&(lppd->hDevNames),
+                               dbuf->pDriverPath,
+                               pbuf->pPrinterName,
+                               pbuf->pPortName);
+       lppd->hDevMode = GlobalAlloc16(GMEM_MOVEABLE,pbuf->pDevMode->dmSize+
+                                    pbuf->pDevMode->dmDriverExtra);
+       ptr = GlobalLock16(lppd->hDevMode);
+       memcpy(ptr, pbuf->pDevMode, pbuf->pDevMode->dmSize +
+              pbuf->pDevMode->dmDriverExtra);
+       GlobalUnlock16(lppd->hDevMode);
+       HeapFree(GetProcessHeap(), 0, pbuf);
+       HeapFree(GetProcessHeap(), 0, dbuf);
+       bRet = TRUE;
+    } else {
+       HGLOBAL16 hDlgTmpl;
+       PRINT_PTRA16 *PrintStructures;
+
+    /* load Dialog resources,
+     * depending on Flags indicates Print32 or Print32_setup dialog
+     */
+       hDlgTmpl = PRINTDLG_GetDlgTemplate16(lppd);
+       if (!hDlgTmpl) {
+           COMDLG32_SetCommDlgExtendedError(CDERR_LOADRESFAILURE);
+           return FALSE;
+       }
+        PrintStructures = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                                   sizeof(PRINT_PTRA16));
+       PrintStructures->dlg.lpPrintDlg16 = lppd;
+       PrintStructures->dlg.lpPrintDlg = (LPPRINTDLGA)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(PRINTDLGA));
+#define CVAL(x)        PrintStructures->dlg.lpPrintDlg->x = lppd->x;
+#define MVAL(x)        PrintStructures->dlg.lpPrintDlg->x = MapSL(lppd->x);
+       CVAL(Flags);
+       PrintStructures->dlg.lpPrintDlg->hwndOwner = HWND_32(lppd->hwndOwner);
+       PrintStructures->dlg.lpPrintDlg->hDC = HDC_32(lppd->hDC);
+       CVAL(nFromPage);CVAL(nToPage);CVAL(nMinPage);CVAL(nMaxPage);
+       CVAL(nCopies);
+       PrintStructures->dlg.lpPrintDlg->hInstance = HINSTANCE_32(lppd->hInstance);
+       CVAL(lCustData);
+       MVAL(lpPrintTemplateName);MVAL(lpSetupTemplateName);
+       /* Don't copy rest, it is 16 bit specific */
+#undef MVAL
+#undef CVAL
+
+       PrintStructures->lpDevMode = HeapAlloc(GetProcessHeap(),0,sizeof(DEVMODEA));
+
+       /* and create & process the dialog .
+        * -1 is failure, 0 is broken hwnd, everything else is ok.
+        */
+       bRet =  (0<DialogBoxIndirectParam16(
+                hInst, hDlgTmpl, lppd->hwndOwner,
+                (DLGPROC16)GetProcAddress16(GetModuleHandle16("COMMDLG"),(LPCSTR)21),
+                (LPARAM)PrintStructures
+               )
+       );
+       if (!PrintStructures->lpPrinterInfo) bRet = FALSE;
+       if(bRet) {
+           DEVMODEA *lpdm = PrintStructures->lpDevMode, *lpdmReturn;
+           PRINTER_INFO_2A *pi = PrintStructures->lpPrinterInfo;
+           DRIVER_INFO_3A *di = PrintStructures->lpDriverInfo;
+
+           if (lppd->hDevMode == 0) {
+               TRACE(" No hDevMode yet... Need to create my own\n");
+               lppd->hDevMode = GlobalAlloc16(GMEM_MOVEABLE,
+                                       lpdm->dmSize + lpdm->dmDriverExtra);
+           } else {
+               WORD locks;
+               if((locks = (GlobalFlags16(lppd->hDevMode)&GMEM_LOCKCOUNT))) {
+                   WARN("hDevMode has %d locks on it. Unlocking it now\n", locks);
+                   while(locks--) {
+                       GlobalUnlock16(lppd->hDevMode);
+                       TRACE("Now got %d locks\n", locks);
+                   }
+               }
+               lppd->hDevMode = GlobalReAlloc16(lppd->hDevMode,
+                                              lpdm->dmSize + lpdm->dmDriverExtra,
+                                              GMEM_MOVEABLE);
+           }
+           lpdmReturn = GlobalLock16(lppd->hDevMode);
+           memcpy(lpdmReturn, lpdm, lpdm->dmSize + lpdm->dmDriverExtra);
+
+           if (lppd->hDevNames != 0) {
+               WORD locks;
+               if((locks = (GlobalFlags16(lppd->hDevNames)&GMEM_LOCKCOUNT))) {
+                   WARN("hDevNames has %d locks on it. Unlocking it now\n", locks);
+                   while(locks--)
+                       GlobalUnlock16(lppd->hDevNames);
+               }
+           }
+           PRINTDLG_CreateDevNames16(&(lppd->hDevNames),
+                   di->pDriverPath,
+                   pi->pPrinterName,
+                   pi->pPortName
+           );
+           GlobalUnlock16(lppd->hDevMode);
+       }
+       if (!(lppd->Flags & (PD_ENABLESETUPTEMPLATEHANDLE | PD_ENABLESETUPTEMPLATE)))
+            GlobalFree16(hDlgTmpl); /* created from the 32 bits resource */
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpDevMode);
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpPrinterInfo);
+       HeapFree(GetProcessHeap(), 0, PrintStructures->lpDriverInfo);
+       HeapFree(GetProcessHeap(), 0, PrintStructures);
+    }
+    if(bRet && (lppd->Flags & PD_RETURNDC || lppd->Flags & PD_RETURNIC))
+        bRet = PRINTDLG_CreateDC16(lppd);
+
+    TRACE("exit! (%d)\n", bRet);
+    return bRet;
+}
+
+/***********************************************************************
+ *           PrintDlgProc   (COMMDLG.21)
+ */
+BOOL16 CALLBACK PrintDlgProc16(HWND16 hDlg16, UINT16 uMsg, WPARAM16 wParam,
+                            LPARAM lParam)
+{
+    HWND hDlg = HWND_32(hDlg16);
+    PRINT_PTRA16* PrintStructures;
+    BOOL16 res = FALSE;
+
+    if (uMsg!=WM_INITDIALOG) {
+        PrintStructures = (PRINT_PTRA16*)GetPropA(hDlg,"__WINE_PRINTDLGDATA");
+       if (!PrintStructures)
+           return FALSE;
+    } else {
+        PrintStructures = (PRINT_PTRA16*) lParam;
+       SetPropA(hDlg,"__WINE_PRINTDLGDATA",PrintStructures);
+       res = PRINTDLG_WMInitDialog16(hDlg, wParam, PrintStructures);
+
+       if(PrintStructures->dlg.lpPrintDlg16->Flags & PD_ENABLEPRINTHOOK) {
+           res = CallWindowProc16(
+               (WNDPROC16)PrintStructures->dlg.lpPrintDlg16->lpfnPrintHook,
+               hDlg16, uMsg, wParam, (LPARAM)PrintStructures->dlg.lpPrintDlg16
+           );
+       }
+       return res;
+    }
+
+    if(PrintStructures->dlg.lpPrintDlg16->Flags & PD_ENABLEPRINTHOOK) {
+        res = CallWindowProc16(
+               (WNDPROC16)PrintStructures->dlg.lpPrintDlg16->lpfnPrintHook,
+               hDlg16,uMsg, wParam, lParam
+       );
+       if(LOWORD(res)) return res;
+    }
+
+    switch (uMsg) {
+    case WM_COMMAND: {
+        /* We need to map those for the 32bit window procedure, compare
+         * with 32Ato16 mapper in winproc.c
+         */
+        return PRINTDLG_WMCommandA(
+               hDlg,
+               MAKEWPARAM(wParam,HIWORD(lParam)),
+               LOWORD(lParam),
+               PrintStructures
+       );
+    }
+    case WM_DESTROY:
+       DestroyIcon(PrintStructures->hCollateIcon);
+       DestroyIcon(PrintStructures->hNoCollateIcon);
+    /* FIXME: don't forget to delete the paper orientation icons here! */
+
+        return FALSE;
+    }
+    return res;
+}
+
+/***********************************************************************
+ *           PrintSetupDlgProc   (COMMDLG.22)
+ */
+BOOL16 CALLBACK PrintSetupDlgProc16(HWND16 hWnd16, UINT16 wMsg, WPARAM16 wParam,
+                                  LPARAM lParam)
+{
+  HWND hWnd = HWND_32(hWnd16);
+  switch (wMsg)
+    {
+    case WM_INITDIALOG:
+      TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
+      ShowWindow(hWnd, SW_SHOWNORMAL);
+      return (TRUE);
+    case WM_COMMAND:
+      switch (wParam) {
+      case IDOK:
+       EndDialog(hWnd, TRUE);
+       return(TRUE);
+      case IDCANCEL:
+       EndDialog(hWnd, FALSE);
+       return(TRUE);
+      }
+      return(FALSE);
+    }
+  return FALSE;
+}
diff --git a/reactos/lib/comdlg32/ros.h b/reactos/lib/comdlg32/ros.h
new file mode 100644 (file)
index 0000000..68280ff
--- /dev/null
@@ -0,0 +1,17 @@
+//#define NEWFILEOPENORD                    1547       /* dlgs.h */
+
+#define OFN_DONTADDTORECENT          0x02000000
+#define OFN_ENABLEINCLUDENOTIFY      0x00400000
+
+#define SAVE_DIALOG                  1         /* comdlg.h */
+#define OPEN_DIALOG                  2         /* comdlg.h */
+
+#define CB_SETITEMDATA16           (WM_USER+17) /* winuser16.h */
+
+#define NTM_PS_OPENTYPE     0x00020000 /* wingdi.h */
+#define NTM_TT_OPENTYPE     0x00040000 /* wingdi.h */
+#define NTM_TYPE1           0x00100000 /* wingdi.h */
+
+#define HWND_16(h32)      (LOWORD(h32)) /* wownt32.h */
+
+
diff --git a/reactos/lib/comdlg32/rsrc.rc b/reactos/lib/comdlg32/rsrc.rc
new file mode 100644 (file)
index 0000000..dc3558d
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Top level resource file for Common Dialogs
+ *
+ * Copyright 1999 Bertho Stultiens
+ *
+ * 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 "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "winnls.h"
+#include "cdlg.h"
+#include "winspool.h"
+#include "filedlgbrowser.h"
+
+/*
+ * Everything that does not depend on language,
+ * like textless bitmaps etc, go into the
+ * neutral language. This will prevent them from
+ * being duplicated for each language.
+ */
+#include "cdlg_xx.rc"
+
+/*
+ * Everything specific to any language goes
+ * in one of the specific files.
+ * Note that you can and may override resources
+ * which also have a neutral version. This is to
+ * get localized bitmaps for example.
+ */
+#include "cdlg_Ca.rc"
+#include "cdlg_Cn.rc"
+#include "cdlg_Cs.rc"
+#include "cdlg_Da.rc"
+#include "cdlg_De.rc"
+#include "cdlg_En.rc"
+#include "cdlg_Eo.rc"
+#include "cdlg_Es.rc"
+#include "cdlg_Fi.rc"
+#include "cdlg_Fr.rc"
+#include "cdlg_Hu.rc"
+#include "cdlg_It.rc"
+#include "cdlg_Ko.rc"
+#include "cdlg_Nl.rc"
+#include "cdlg_No.rc"
+#include "cdlg_Pl.rc"
+#include "cdlg_Pt.rc"
+#include "cdlg_Ru.rc"
+#include "cdlg_Si.rc"
+#include "cdlg_Sk.rc"
+#include "cdlg_Sv.rc"
+#include "cdlg_Wa.rc"
+#include "cdlg_Ja.rc"
+#include "cdlg_Zh.rc"