Implement GetTextExtentPointI and add support for ETO_GLYPH_INDEX.
[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 #include "shlobj.h"
26 #include "winbase.h"
27 #include "objbase.h"
28 #include "commdlg.h"
29
30 /***********************************************************************
31  * Defines and global variables
32  */
33 #define _ICommDlgBrowser_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblCommDlgBrowser)))
34 #define _ICOM_THIS_FromICommDlgBrowser(class, name) class* This = (class*)(((char*)name)-_ICommDlgBrowser_Offset);
35
36 #define _IServiceProvider_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblServiceProvider)))
37 #define _ICOM_THIS_FromIServiceProvider(class, name) class* This = (class*)(((char*)name)-_IServiceProvider_Offset);
38
39 /* dialog internal property */
40
41 #define FODPROP_SAVEDLG 0x0001  /* File dialog is a Save file dialog */
42 #define FODPROP_USEVIEW 0x0002  /* Indicates the user selection must be taken 
43                                    from the IShellView */
44
45 /***********************************************************************
46  * Data structure
47  */
48
49
50 typedef struct
51 {
52     
53     LPOPENFILENAMEA ofnInfos;
54     struct {
55         IShellBrowser *FOIShellBrowser; 
56         IShellFolder *FOIShellFolder;
57         IShellView *FOIShellView;
58         IDataObject *FOIDataObject;
59     } Shell;
60
61     struct {
62         HWND hwndOwner;
63         HWND hwndView;
64         RECT rectView;
65         FOLDERSETTINGS folderSettings;
66         LPITEMIDLIST pidlAbsCurrent;
67         LPWSTR lpstrCurrentFilter;
68     } ShellInfos;
69
70     struct {
71         HWND hwndFileTypeCB;
72         HWND hwndLookInCB;
73         HWND hwndFileName;
74         HWND hwndTB;
75         HWND hwndCustomDlg;
76         DWORD dwDlgProp;
77     } DlgInfos;
78
79     struct {
80         UINT fileokstring;
81         UINT lbselchstring;
82         UINT helpmsgstring;
83         UINT sharevistring;
84     } HookMsg;
85
86 } FileOpenDlgInfos;
87
88 /***********************************************************************
89  * Control ID's
90  */
91 #define IDS_ABOUTBOX                    101
92 #define IDS_DOCUMENTFOLDERS             102
93 #define IDS_PERSONAL                    103
94 #define IDS_FAVORITES                   104
95 #define IDS_PATH                        105
96 #define IDS_DESKTOP                     106
97
98 #define IDS_FONTS                       108
99 #define IDS_MYCOMPUTER                  110
100 #define IDS_SYSTEMFOLDERS               112
101 #define IDS_LOCALHARDRIVES              113
102 #define IDS_FILENOTFOUND                114
103 #define IDS_VERIFYFILE                  115
104 #define IDS_CREATEFILE                  116
105 #define IDS_CREATEFOLDER_DENIED         117
106 #define IDS_FILEOPEN_CAPTION            118
107 #define IDL_OVERWRITEFILE               119
108 #define IDS_INVALID_FILENAME_TITLE      120
109 #define IDS_INVALID_FILENAME            121
110 #define IDS_PATHNOTEXISTING             122
111 #define IDS_FILENOTEXISTING             123
112
113 /* File Dialog Tooltips string IDs */
114
115 #define IDS_UPFOLDER                    150
116 #define IDS_NEWFOLDER                   151
117 #define IDS_LISTVIEW                    152
118 #define IDS_REPORTVIEW                  153
119 #define IDS_TODESKTOP                   154
120
121 #define IDC_OPENREADONLY                chx1
122
123 #define IDC_TOOLBARSTATIC               stc1
124 #define IDC_FILETYPESTATIC              stc2
125 #define IDC_FILENAMESTATIC              stc3
126 #define IDC_LOOKINSTATIC                stc4
127
128 #define IDC_SHELLSTATIC                 lst1
129
130 #define IDC_FILETYPE                    cmb1
131 #define IDC_LOOKIN                      cmb2
132
133 #define IDC_FILENAME                    edt1
134
135 #define IDC_TOOLBAR                     ctl1
136
137 /***********************************************************************
138  * Prototypes for the methods of the IShellBrowserImpl class
139  */
140 /* Constructor */
141 IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner);
142
143
144 LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex);
145 UINT GetNumSelected(IDataObject *doSelected);
146
147 /* pidl handling */
148 BOOL IsPidlFolder (LPSHELLFOLDER psf, LPITEMIDLIST pidl);
149
150 /* Functions used by the EDIT box */
151 void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd);
152 int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPSTR * lpstrFileList, UINT * sizeUsed);
153
154 #endif /*SHBROWSER_H*/