Return error from low level driver when necessary.
[wine.git] / dlls / commdlg / filedlgbrowser.h
blob694e3a0acdf59d93cc5c016c448ba184523617d8
1 /*
2 * Implementation of IShellBrowser for the File Open common dialog
4 * Copyright 1999 Francois Boisvert
5 * Copyright 1999, 2000 Juergen Schmied
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #ifndef SHBROWSER_H
23 #define SHBROWSER_H
25 #ifndef RC_INVOKED
26 #include <stdarg.h>
27 #endif
29 #define COM_NO_WINDOWS_H
30 #include "windef.h"
31 #include "winbase.h"
32 #include "winuser.h"
33 #include "shlobj.h"
34 #include "objbase.h"
35 #include "commdlg.h"
37 /***********************************************************************
38 * Defines and global variables
40 #define _ICommDlgBrowser_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblCommDlgBrowser)))
41 #define _ICOM_THIS_FromICommDlgBrowser(class, name) class* This = (class*)(((char*)name)-_ICommDlgBrowser_Offset);
43 #define _IServiceProvider_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblServiceProvider)))
44 #define _ICOM_THIS_FromIServiceProvider(class, name) class* This = (class*)(((char*)name)-_IServiceProvider_Offset);
46 /* dialog internal property */
48 #define FODPROP_SAVEDLG 0x0001 /* File dialog is a Save file dialog */
49 #define FODPROP_USEVIEW 0x0002 /* Indicates the user selection must be taken
50 from the IShellView */
52 /***********************************************************************
53 * Data structure
57 typedef struct
59 LPOPENFILENAMEA ofnInfos;
60 BOOL unicode;
61 LPWSTR initdir;
62 LPWSTR filename;
63 LPCWSTR title;
64 LPCWSTR defext;
65 LPCWSTR filter;
66 LPCWSTR customfilter;
67 struct {
68 IShellBrowser *FOIShellBrowser;
69 IShellFolder *FOIShellFolder;
70 IShellView *FOIShellView;
71 IDataObject *FOIDataObject;
72 } Shell;
74 struct {
75 HWND hwndOwner;
76 HWND hwndView;
77 FOLDERSETTINGS folderSettings;
78 LPITEMIDLIST pidlAbsCurrent;
79 LPWSTR lpstrCurrentFilter;
80 } ShellInfos;
82 struct {
83 HWND hwndFileTypeCB;
84 HWND hwndLookInCB;
85 HWND hwndFileName;
86 HWND hwndTB;
87 HWND hwndCustomDlg;
88 DWORD dwDlgProp;
89 } DlgInfos;
91 struct {
92 UINT fileokstring;
93 UINT lbselchstring;
94 UINT helpmsgstring;
95 UINT sharevistring;
96 } HookMsg;
98 } FileOpenDlgInfos;
100 /***********************************************************************
101 * Control ID's
103 #define IDS_ABOUTBOX 101
104 #define IDS_DOCUMENTFOLDERS 102
105 #define IDS_PERSONAL 103
106 #define IDS_FAVORITES 104
107 #define IDS_PATH 105
108 #define IDS_DESKTOP 106
110 #define IDS_FONTS 108
111 #define IDS_MYCOMPUTER 110
112 #define IDS_SYSTEMFOLDERS 112
113 #define IDS_LOCALHARDRIVES 113
114 #define IDS_FILENOTFOUND 114
115 #define IDS_VERIFYFILE 115
116 #define IDS_CREATEFILE 116
117 #define IDS_CREATEFOLDER_DENIED 117
118 #define IDS_FILEOPEN_CAPTION 118
119 #define IDS_OVERWRITEFILE 119
120 #define IDS_INVALID_FILENAME_TITLE 120
121 #define IDS_INVALID_FILENAME 121
122 #define IDS_PATHNOTEXISTING 122
123 #define IDS_FILENOTEXISTING 123
125 /* File Dialog Tooltips string IDs */
127 #define IDS_UPFOLDER 150
128 #define IDS_NEWFOLDER 151
129 #define IDS_LISTVIEW 152
130 #define IDS_REPORTVIEW 153
131 #define IDS_TODESKTOP 154
133 #define IDC_OPENREADONLY chx1
135 #define IDC_TOOLBARSTATIC stc1
136 #define IDC_FILETYPESTATIC stc2
137 #define IDC_FILENAMESTATIC stc3
138 #define IDC_LOOKINSTATIC stc4
140 #define IDC_SHELLSTATIC lst1
142 #define IDC_FILETYPE cmb1
143 #define IDC_LOOKIN cmb2
145 #define IDC_FILENAME edt1
147 #define IDC_TOOLBAR 1
149 /***********************************************************************
150 * Prototypes for the methods of the IShellBrowserImpl class
152 /* Constructor */
153 IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner);
156 LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex);
157 UINT GetNumSelected(IDataObject *doSelected);
159 /* pidl handling */
160 BOOL IsPidlFolder (LPSHELLFOLDER psf, LPCITEMIDLIST pidl);
162 /* Functions used by the EDIT box */
163 void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd);
164 int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed);
166 #endif /*SHBROWSER_H*/