--- /dev/null
+*.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
--- /dev/null
+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:
--- /dev/null
+
+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
--- /dev/null
+/*
+ * 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 */
--- /dev/null
+/*
+ * 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 */
--- /dev/null
+/*
+ * 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 */
+}
--- /dev/null
+/*
+ * 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 "Ú<ima:", 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
+}
--- /dev/null
+/*
+ * 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)
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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; "
+}
--- /dev/null
+/*
+ * 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"
+}
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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"
+}
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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©?"
+}
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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; "
+}
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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" */
+}
--- /dev/null
+/*
+ * 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"
+}
--- /dev/null
+/*
+ * 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 "Ïèòàíèå â áåçîïàñíîì ðåæèìå; "
+}
--- /dev/null
+/*
+ * 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; "
+}
--- /dev/null
+/*
+ * 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; "
+}
--- /dev/null
+/*
+ * 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; "
+}
--- /dev/null
+/*
+ * 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
+}
--- /dev/null
+/*
+ * 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 "´æ\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 "Áí´æÐÂ\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)
--- /dev/null
+/*
+ * 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'
+}*/
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+@ 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
--- /dev/null
+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
--- /dev/null
+/*
+ * 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);
+}
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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
+};
--- /dev/null
+/*
+ * 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*/
--- /dev/null
+/*
+ * 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);
+}
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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);
+}
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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();
+}
--- /dev/null
+# $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
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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 */
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+//#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 */
+
+
--- /dev/null
+/*
+ * 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"