Horizontal scrollbar is hidden when edit control is emptied.
[wine] / dlls / commdlg / filedlgbrowser.h
1 /*
2  *  Implementation of IShellBrowser for the File Open common dialog
3  *
4  * Copyright 1999 Francois Boisvert
5  * Copyright 1999, 2000 Juergen Schmied
6  *
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.
11  *
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.
16  *
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
20  */
21
22 #ifndef SHBROWSER_H
23 #define SHBROWSER_H
24
25 #ifndef RC_INVOKED
26 #include <stdarg.h>
27 #endif
28
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"
36
37 /***********************************************************************
38  * Defines and global variables
39  */
40 #define _ICommDlgBrowser_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblCommDlgBrowser)))
41 #define _ICOM_THIS_FromICommDlgBrowser(class, name) class* This = (class*)(((char*)name)-_ICommDlgBrowser_Offset);
42
43 #define _IServiceProvider_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblServiceProvider)))
44 #define _ICOM_THIS_FromIServiceProvider(class, name) class* This = (class*)(((char*)name)-_IServiceProvider_Offset);
45
46 /* dialog internal property */
47
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 */
51
52 /***********************************************************************
53  * Data structure
54  */
55
56
57 typedef struct
58 {
59     LPOPENFILENAMEW 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;
73
74     struct {
75         HWND hwndOwner;
76         HWND hwndView;
77         FOLDERSETTINGS folderSettings;
78         LPITEMIDLIST pidlAbsCurrent;
79         LPWSTR lpstrCurrentFilter;
80     } ShellInfos;
81
82     struct {
83         HWND hwndFileTypeCB;
84         HWND hwndLookInCB;
85         HWND hwndFileName;
86         HWND hwndTB;
87         HWND hwndCustomDlg;
88         DWORD dwDlgProp;
89     } DlgInfos;
90
91     struct {
92         UINT fileokstring;
93         UINT lbselchstring;
94         UINT helpmsgstring;
95         UINT sharevistring;
96     } HookMsg;
97
98 } FileOpenDlgInfos;
99
100 /***********************************************************************
101  * Control ID's
102  */
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
109
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
124
125 /* File Dialog Tooltips string IDs */
126
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
132
133 #define IDC_OPENREADONLY                chx1
134
135 #define IDC_TOOLBARSTATIC               stc1
136 #define IDC_FILETYPESTATIC              stc2
137 #define IDC_FILENAMESTATIC              stc3
138 #define IDC_LOOKINSTATIC                stc4
139
140 #define IDC_SHELLSTATIC                 lst1
141
142 #define IDC_FILETYPE                    cmb1
143 #define IDC_LOOKIN                      cmb2
144
145 #define IDC_FILENAME                    edt1
146
147 #define IDC_TOOLBAR                     1
148
149 /***********************************************************************
150  * Prototypes for the methods of the IShellBrowserImpl class
151  */
152 /* Constructor */
153 IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner);
154
155
156 LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex);
157 UINT GetNumSelected(IDataObject *doSelected);
158
159 /* pidl handling */
160 BOOL IsPidlFolder (LPSHELLFOLDER psf, LPCITEMIDLIST pidl);
161
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, char separator);
165
166 #endif /*SHBROWSER_H*/