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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 20 */ 21 22 #ifndef SHBROWSER_H 23 #define SHBROWSER_H 24 25 #ifndef RC_INVOKED 26 #include <stdarg.h> 27 #endif 28 29 #include "windef.h" 30 #include "winbase.h" 31 #include "winuser.h" 32 #include "shlobj.h" 33 #include "objbase.h" 34 #include "commdlg.h" 35 36 /*********************************************************************** 37 * Defines and global variables 38 */ 39 40 /* dialog internal property */ 41 42 #define FODPROP_SAVEDLG 0x0001 /* File dialog is a Save file dialog */ 43 #define FODPROP_USEVIEW 0x0002 /* Indicates the user selection must be taken 44 from the IShellView */ 45 46 /*********************************************************************** 47 * Data structure 48 */ 49 50 51 typedef struct 52 { 53 LPOPENFILENAMEW ofnInfos; 54 BOOL unicode; 55 LPWSTR initdir; 56 LPWSTR filename; 57 LPCWSTR title; 58 LPCWSTR defext; 59 LPCWSTR filter; 60 LPCWSTR customfilter; 61 SIZE sizedlg; /* remember the size of the dialog */ 62 POINT initial_size; /* remember the initial size of the dialog */ 63 struct { 64 IShellBrowser *FOIShellBrowser; 65 IShellFolder *FOIShellFolder; 66 IShellView *FOIShellView; 67 IDataObject *FOIDataObject; 68 } Shell; 69 70 struct { 71 HWND hwndOwner; 72 HWND hwndView; 73 FOLDERSETTINGS folderSettings; 74 LPITEMIDLIST pidlAbsCurrent; 75 LPWSTR lpstrCurrentFilter; 76 } ShellInfos; 77 78 struct { 79 HWND hwndFileTypeCB; 80 HWND hwndLookInCB; 81 HWND hwndFileName; 82 HWND hwndTB; 83 HWND hwndGrip; 84 HWND hwndCustomDlg; 85 DWORD dwDlgProp; 86 } DlgInfos; 87 88 struct { 89 UINT fileokstring; 90 UINT lbselchstring; 91 UINT helpmsgstring; 92 UINT sharevistring; 93 } HookMsg; 94 95 BOOL ole_initialized; 96 LPITEMIDLIST places[5]; 97 } FileOpenDlgInfos; 98 99 /*********************************************************************** 100 * Control IDs 101 */ 102 #define IDS_FILENOTFOUND 114 103 #define IDS_VERIFYFILE 115 104 #define IDS_CREATEFILE 116 105 #define IDS_OVERWRITEFILE 119 106 #define IDS_INVALID_FILENAME_TITLE 120 107 #define IDS_INVALID_FILENAME 121 108 #define IDS_PATHNOTEXISTING 122 109 #define IDS_FILENOTEXISTING 123 110 #define IDS_INVALID_FOLDERNAME 124 111 112 /* File Dialog Tooltips string IDs */ 113 114 #define IDS_UPFOLDER 150 115 #define IDS_NEWFOLDER 151 116 #define IDS_LISTVIEW 152 117 #define IDS_REPORTVIEW 153 118 #define IDS_TODESKTOP 154 119 120 #define IDC_OPENREADONLY chx1 121 122 #define IDC_TOOLBARSTATIC stc1 123 #define IDC_FILETYPESTATIC stc2 124 #define IDC_FILENAMESTATIC stc3 125 #define IDC_LOOKINSTATIC stc4 126 127 #define IDC_SHELLSTATIC lst1 128 129 #define IDC_FILETYPE cmb1 130 #define IDC_LOOKIN cmb2 131 132 #define IDC_FILENAME edt1 133 134 #define IDC_TOOLBAR 1 135 #define IDC_TOOLBARPLACES ctl1 136 137 /*********************************************************************** 138 * Prototypes for the methods of the IShellBrowserImpl class 139 */ 140 /* Constructor */ 141 IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner) DECLSPEC_HIDDEN; 142 143 144 LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex) DECLSPEC_HIDDEN; 145 146 /* Functions used by the EDIT box */ 147 void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd) DECLSPEC_HIDDEN; 148 149 /************************************************************************** 150 * External Prototypes 151 */ 152 extern FileOpenDlgInfos *get_filedlg_infoptr(HWND hwnd) DECLSPEC_HIDDEN; 153 154 extern IShellFolder* GetShellFolderFromPidl(LPITEMIDLIST pidlAbs) DECLSPEC_HIDDEN; 155 extern LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl) DECLSPEC_HIDDEN; 156 157 extern int FILEDLG95_LOOKIN_SelectItem(HWND hwnd,LPITEMIDLIST pidl) DECLSPEC_HIDDEN; 158 extern LRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode) DECLSPEC_HIDDEN; 159 160 #endif /*SHBROWSER_H*/ 161