ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

shlobj.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) the Wine project
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 #ifndef __WINE_SHLOBJ_H
00020 #define __WINE_SHLOBJ_H
00021 
00022 #include <ole2.h>
00023 #include <commctrl.h>
00024 #include <prsht.h>
00025 #include <shlguid.h>
00026 
00027 #ifdef WINE_NO_UNICODE_MACROS
00028 #undef GetObject
00029 #endif
00030 
00031 #ifdef __cplusplus
00032 extern "C" {
00033 #endif /* defined(__cplusplus) */
00034 
00035 /* Except for specific structs, this header is byte packed */
00036 #include <pshpack1.h>
00037 
00038 #include <shtypes.h>
00039 #include <shobjidl.h>
00040 
00041 typedef struct
00042 {
00043     DWORD         dwSize;
00044     DWORD         dwMask;
00045     SHELLVIEWID*  pvid;
00046     LPSTR         pszWebViewTemplate;
00047     DWORD         cchWebViewTemplate;
00048     LPSTR         pszWebViewTemplateVersion;
00049     LPSTR         pszInfoTip;
00050     DWORD         cchInfoTip;
00051     CLSID*        pclsid;
00052     DWORD         dwFlags;
00053     LPSTR         pszIconFile;
00054     DWORD         cchIconFile;
00055     int           iIconIndex;
00056     LPSTR         pszLogo;
00057     DWORD         cchLogo;
00058 } SHFOLDERCUSTOMSETTINGSA, *LPSHFOLDERCUSTOMSETTINGSA;
00059 
00060 typedef struct
00061 {
00062     DWORD         dwSize;
00063     DWORD         dwMask;
00064     SHELLVIEWID*  pvid;
00065     LPWSTR        pszWebViewTemplate;
00066     DWORD         cchWebViewTemplate;
00067     LPWSTR        pszWebViewTemplateVersion;
00068     LPWSTR        pszInfoTip;
00069     DWORD         cchInfoTip;
00070     CLSID*        pclsid;
00071     DWORD         dwFlags;
00072     LPWSTR        pszIconFile;
00073     DWORD         cchIconFile;
00074     int           iIconIndex;
00075     LPWSTR        pszLogo;
00076     DWORD         cchLogo;
00077 } SHFOLDERCUSTOMSETTINGSW, *LPSHFOLDERCUSTOMSETTINGSW;
00078 
00079 #ifndef HPSXA_DEFINED
00080 #define HPSXA_DEFINED
00081 DECLARE_HANDLE(HPSXA);
00082 #endif
00083 
00084 UINT         WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM);
00085 LPVOID       WINAPI SHAlloc(SIZE_T) __WINE_ALLOC_SIZE(1);
00086 HRESULT      WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*);
00087 HPSXA        WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT);
00088 HPSXA        WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*);
00089 HRESULT      WINAPI SHCreateShellItem(LPCITEMIDLIST,IShellFolder*,LPCITEMIDLIST,IShellItem**);
00090 DWORD        WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*);
00091 DWORD        WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*);
00092 #define             SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString)
00093 HRESULT      WINAPI SHCreateStdEnumFmtEtc(UINT,const FORMATETC *,IEnumFORMATETC**);
00094 void         WINAPI SHDestroyPropSheetExtArray(HPSXA);
00095 BOOL         WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST);
00096 DWORD        WINAPI SHFormatDrive(HWND,UINT,UINT,UINT);
00097 void         WINAPI SHFree(LPVOID);
00098 BOOL         WINAPI GetFileNameFromBrowse(HWND,LPWSTR,UINT,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
00099 HRESULT      WINAPI SHGetInstanceExplorer(IUnknown**);
00100 VOID         WINAPI SHSetInstanceExplorer (IUnknown*);
00101 HRESULT      WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
00102 HRESULT      WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
00103 #define             SHGetFolderPathAndSubDir WINELIB_NAME_AW(SHGetFolderPathAndSubDir);
00104 BOOL         WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
00105 BOOL         WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
00106 #define             SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
00107 INT          WINAPI SHHandleUpdateImage(LPCITEMIDLIST);
00108 HRESULT      WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*);
00109 HRESULT      WINAPI SHLoadOLE(LPARAM);
00110 HRESULT      WINAPI SHParseDisplayName(LPCWSTR,IBindCtx*,LPITEMIDLIST*,SFGAOF,SFGAOF*);
00111 HRESULT      WINAPI SHPathPrepareForWriteA(HWND,IUnknown*,LPCSTR,DWORD);
00112 HRESULT      WINAPI SHPathPrepareForWriteW(HWND,IUnknown*,LPCWSTR,DWORD);
00113 #define             SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite);
00114 UINT         WINAPI SHReplaceFromPropSheetExtArray(HPSXA,UINT,LPFNADDPROPSHEETPAGE,LPARAM);
00115 LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR);
00116 int          WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*);
00117 HRESULT      WINAPI SHStartNetConnectionDialog(HWND,LPCSTR,DWORD);
00118 VOID         WINAPI SHUpdateImageA(LPCSTR,INT,UINT,INT);
00119 VOID         WINAPI SHUpdateImageW(LPCWSTR,INT,UINT,INT);
00120 INT          WINAPI PickIconDlg(HWND,LPWSTR,UINT,int *);
00121 #define             SHUpdateImage WINELIB_NAME_AW(SHUpdateImage)
00122 int          WINAPI RestartDialog(HWND,LPCWSTR,DWORD);
00123 int          WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD);
00124 BOOL         WINAPI IsUserAnAdmin(void);
00125 
00126 #define SHFMT_ERROR     0xFFFFFFFFL  /* Error on last format, drive may be formattable */
00127 #define SHFMT_CANCEL    0xFFFFFFFEL  /* Last format was cancelled */
00128 #define SHFMT_NOFORMAT  0xFFFFFFFDL  /* Drive is not formattable */
00129 
00130 /* SHFormatDrive flags */
00131 #define SHFMT_ID_DEFAULT    0xFFFF
00132 #define SHFMT_OPT_FULL      1
00133 #define SHFMT_OPT_SYSONLY   2
00134 
00135 /* SHPathPrepareForWrite flags */
00136 #define SHPPFW_NONE             0x00000000
00137 #define SHPPFW_DIRCREATE        0x00000001
00138 #define SHPPFW_DEFAULT          SHPPFW_DIRCREATE
00139 #define SHPPFW_ASKDIRCREATE     0x00000002
00140 #define SHPPFW_IGNOREFILENAME   0x00000004
00141 #define SHPPFW_NOWRITECHECK     0x00000008
00142 #define SHPPFW_MEDIACHECKONLY   0x00000010
00143 
00144 /* SHObjectProperties flags */
00145 #define SHOP_PRINTERNAME 0x01
00146 #define SHOP_FILEPATH    0x02
00147 #define SHOP_VOLUMEGUID  0x04
00148 
00149 BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR);
00150 
00151 #define PCS_FATAL           0x80000000
00152 #define PCS_REPLACEDCHAR    0x00000001
00153 #define PCS_REMOVEDCHAR     0x00000002
00154 #define PCS_TRUNCATED       0x00000004
00155 #define PCS_PATHTOOLONG     0x00000008
00156 
00157 int WINAPI PathCleanupSpec(LPCWSTR,LPWSTR);
00158 
00159 /*****************************************************************************
00160  * IContextMenu interface
00161  */
00162 
00163 
00164 /* DATAOBJECT_InitShellIDList*/
00165 #define CFSTR_SHELLIDLISTA           "Shell IDList Array"   /* CF_IDLIST */
00166 #define CFSTR_SHELLIDLISTOFFSETA     "Shell Object Offsets" /* CF_OBJECTPOSITIONS */
00167 #define CFSTR_NETRESOURCESA          "Net Resource"         /* CF_NETRESOURCE */
00168 /* DATAOBJECT_InitFileGroupDesc */
00169 #define CFSTR_FILEDESCRIPTORA        "FileGroupDescriptor"  /* CF_FILEGROUPDESCRIPTORA */
00170 /* DATAOBJECT_InitFileContents*/
00171 #define CFSTR_FILECONTENTSA          "FileContents"         /* CF_FILECONTENTS */
00172 #define CFSTR_FILENAMEA              "FileName"             /* CF_FILENAMEA */
00173 #define CFSTR_FILENAMEMAPA           "FileNameMap"          /* CF_FILENAMEMAPA */
00174 #define CFSTR_PRINTERGROUPA          "PrinterFriendlyName"  /* CF_PRINTERS */
00175 #define CFSTR_SHELLURLA              "UniformResourceLocator"
00176 #define CFSTR_INETURLA               CFSTR_SHELLURLA
00177 #define CFSTR_PREFERREDDROPEFFECTA   "Preferred DropEffect"
00178 #define CFSTR_PERFORMEDDROPEFFECTA   "Performed DropEffect"
00179 #define CFSTR_PASTESUCCEEDEDA        "Paste Succeeded"
00180 #define CFSTR_INDRAGLOOPA            "InShellDragLoop"
00181 #define CFSTR_DRAGCONTEXTA           "DragContext"
00182 #define CFSTR_MOUNTEDVOLUMEA         "MountedVolume"
00183 #define CFSTR_PERSISTEDDATAOBJECTA   "PersistedDataObject"
00184 #define CFSTR_TARGETCLSIDA           "TargetCLSID"
00185 #define CFSTR_AUTOPLAY_SHELLIDLISTSA "Autoplay Enumerated IDList Array"
00186 #define CFSTR_LOGICALPERFORMEDDROPEFFECTA "Logical Performed DropEffect"
00187 
00188 #if defined(__GNUC__)
00189 # define CFSTR_SHELLIDLISTW \
00190     (const WCHAR []){ 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
00191 # define CFSTR_SHELLIDLISTOFFSETW \
00192     (const WCHAR []){ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 }
00193 # define CFSTR_NETRESOURCESW \
00194     (const WCHAR []){ 'N','e','t',' ','R','e','s','o','u','r','c','e',0 }
00195 # define CFSTR_FILEDESCRIPTORW \
00196     (const WCHAR []){ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 }
00197 # define CFSTR_FILECONTENTSW \
00198     (const WCHAR []){ 'F','i','l','e','C','o','n','t','e','n','t','s',0 }
00199 # define CFSTR_FILENAMEW \
00200     (const WCHAR []){ 'F','i','l','e','N','a','m','e','W',0 }
00201 # define CFSTR_FILENAMEMAPW \
00202     (const WCHAR []){ 'F','i','l','e','N','a','m','e','M','a','p','W',0 }
00203 # define CFSTR_PRINTERGROUPW \
00204     (const WCHAR []){ 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 }
00205 # define CFSTR_SHELLURLW \
00206     (const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 }
00207 # define CFSTR_INETURLW \
00208     (const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 }
00209 # define CFSTR_PREFERREDDROPEFFECTW \
00210     (const WCHAR []){ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
00211 # define CFSTR_PERFORMEDDROPEFFECTW \
00212     (const WCHAR []){ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
00213 # define CFSTR_PASTESUCCEEDEDW \
00214     (const WCHAR []){ 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 }
00215 # define CFSTR_INDRAGLOOPW \
00216     (const WCHAR []){ 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 }
00217 # define CFSTR_DRAGCONTEXTW \
00218     (const WCHAR []){ 'D','r','a','g','C','o','n','t','e','x','t',0 }
00219 # define CFSTR_MOUNTEDVOLUMEW \
00220     (const WCHAR []){ 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 }
00221 # define CFSTR_PERSISTEDDATAOBJECTW \
00222     (const WCHAR []){ 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 }
00223 # define CFSTR_TARGETCLSIDW \
00224     (const WCHAR []){ 'T','a','r','g','e','t','C','L','S','I','D',0 }
00225 # define CFSTR_AUTOPLAY_SHELLIDLISTSW \
00226     (const WCHAR []){ 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',\
00227                       ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
00228 # define CFSTR_LOGICALPERFORMEDDROPEFFECTW \
00229     (const WCHAR []){ 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',\
00230                       ' ','D','r','o','p','E','f','f','e','c','t',0 }
00231 #elif defined(_MSC_VER)
00232 # define CFSTR_SHELLIDLISTW           L"Shell IDList Array"
00233 # define CFSTR_SHELLIDLISTOFFSETW     L"Shell Object Offsets"
00234 # define CFSTR_NETRESOURCESW          L"Net Resource"
00235 # define CFSTR_FILEDESCRIPTORW        L"FileGroupDescriptorW"
00236 # define CFSTR_FILECONTENTSW          L"FileContents"
00237 # define CFSTR_FILENAMEW              L"FileNameW"
00238 # define CFSTR_FILENAMEMAPW           L"FileNameMapW"
00239 # define CFSTR_PRINTERGROUPW          L"PrinterFriendlyName"
00240 # define CFSTR_SHELLURLW              L"UniformResourceLocator"
00241 # define CFSTR_INETURLW               L"UniformResourceLocatorW"
00242 # define CFSTR_PREFERREDDROPEFFECTW   L"Preferred DropEffect"
00243 # define CFSTR_PERFORMEDDROPEFFECTW   L"Performed DropEffect"
00244 # define CFSTR_PASTESUCCEEDEDW        L"Paste Succeeded"
00245 # define CFSTR_INDRAGLOOPW            L"InShellDragLoop"
00246 # define CFSTR_DRAGCONTEXTW           L"DragContext"
00247 # define CFSTR_MOUNTEDVOLUMEW         L"MountedVolume"
00248 # define CFSTR_PERSISTEDDATAOBJECTW   L"PersistedDataObject"
00249 # define CFSTR_TARGETCLSIDW           L"TargetCLSID"
00250 # define CFSTR_AUTOPLAY_SHELLIDLISTSW L"Autoplay Enumerated IDList Array"
00251 # define CFSTR_LOGICALPERFORMEDDROPEFFECTW L"Logical Performed DropEffect"
00252 #else
00253 static const WCHAR CFSTR_SHELLIDLISTW[] =
00254     { 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
00255 static const WCHAR CFSTR_SHELLIDLISTOFFSETW[] =
00256     { 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 };
00257 static const WCHAR CFSTR_NETRESOURCESW[] =
00258     { 'N','e','t',' ','R','e','s','o','u','r','c','e',0 };
00259 static const WCHAR CFSTR_FILEDESCRIPTORW[] =
00260     { 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 };
00261 static const WCHAR CFSTR_FILECONTENTSW[] =
00262     { 'F','i','l','e','C','o','n','t','e','n','t','s',0 };
00263 static const WCHAR CFSTR_FILENAMEW[] =
00264     { 'F','i','l','e','N','a','m','e','W',0 };
00265 static const WCHAR CFSTR_FILENAMEMAPW[] =
00266     { 'F','i','l','e','N','a','m','e','M','a','p','W',0 };
00267 static const WCHAR CFSTR_PRINTERGROUPW[] =
00268     { 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 };
00269 static const WCHAR CFSTR_SHELLURLW[] =
00270     { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 };
00271 static const WCHAR CFSTR_INETURLW[] =
00272     { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 };
00273 static const WCHAR CFSTR_PREFERREDDROPEFFECTW[] =
00274     { 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
00275 static const WCHAR CFSTR_PERFORMEDDROPEFFECTW[] =
00276     { 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
00277 static const WCHAR CFSTR_PASTESUCCEEDEDW[] =
00278     { 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 };
00279 static const WCHAR CFSTR_INDRAGLOOPW[] =
00280     { 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 };
00281 static const WCHAR CFSTR_DRAGCONTEXTW[] =
00282     { 'D','r','a','g','C','o','n','t','e','x','t',0 };
00283 static const WCHAR CFSTR_MOUNTEDVOLUMEW[] =
00284     { 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 };
00285 static const WCHAR CFSTR_PERSISTEDDATAOBJECTW[] =
00286     { 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 };
00287 static const WCHAR CFSTR_TARGETCLSIDW[] =
00288     { 'T','a','r','g','e','t','C','L','S','I','D',0 };
00289 static const WCHAR CFSTR_AUTOPLAY_SHELLIDLISTSW[] =
00290     { 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',
00291       ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
00292 static const WCHAR CFSTR_LOGICALPERFORMEDDROPEFFECTW[] =
00293     { 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',
00294       ' ','D','r','o','p','E','f','f','e','c','t',0 };
00295 #endif
00296 
00297 #define CFSTR_SHELLIDLIST           WINELIB_NAME_AW(CFSTR_SHELLIDLIST)
00298 #define CFSTR_SHELLIDLISTOFFSET     WINELIB_NAME_AW(CFSTR_SHELLIDLISTOFFSET)
00299 #define CFSTR_NETRESOURCES          WINELIB_NAME_AW(CFSTR_NETRESOURCES)
00300 #define CFSTR_FILEDESCRIPTOR        WINELIB_NAME_AW(CFSTR_FILEDESCRIPTOR)
00301 #define CFSTR_FILECONTENTS          WINELIB_NAME_AW(CFSTR_FILECONTENTS)
00302 #define CFSTR_FILENAME              WINELIB_NAME_AW(CFSTR_FILENAME)
00303 #define CFSTR_FILENAMEMAP           WINELIB_NAME_AW(CFSTR_FILENAMEMAP)
00304 #define CFSTR_PRINTERGROUP          WINELIB_NAME_AW(CFSTR_PRINTERGROUP)
00305 #define CFSTR_SHELLURL              WINELIB_NAME_AW(CFSTR_SHELLURL)
00306 #define CFSTR_INETURL               WINELIB_NAME_AW(CFSTR_INETURL)
00307 #define CFSTR_PREFERREDDROPEFFECT   WINELIB_NAME_AW(CFSTR_PREFERREDDROPEFFECT)
00308 #define CFSTR_PERFORMEDDROPEFFECT   WINELIB_NAME_AW(CFSTR_PERFORMEDDROPEFFECT)
00309 #define CFSTR_PASTESUCCEEDED        WINELIB_NAME_AW(CFSTR_PASTESUCCEEDED)
00310 #define CFSTR_INDRAGLOOP            WINELIB_NAME_AW(CFSTR_INDRAGLOOP)
00311 #define CFSTR_DRAGCONTEXT           WINELIB_NAME_AW(CFSTR_DRAGCONTEXT)
00312 #define CFSTR_MOUNTEDVOLUME         WINELIB_NAME_AW(CFSTR_MOUNTEDVOLUME)
00313 #define CFSTR_PERSISTEDDATAOBJECT   WINELIB_NAME_AW(CFSTR_PERSISTEDDATAOBJECT)
00314 #define CFSTR_TARGETCLSID           WINELIB_NAME_AW(CFSTR_TARGETCLSID)
00315 #define CFSTR_AUTOPLAY_SHELLIDLISTS WINELIB_NAME_AW(CFSTR_AUTOPLAY_SHELLIDLISTS)
00316 #define CFSTR_LOGICALPERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_LOGICALPERFORMEDDROPEFFECT)
00317 
00318 typedef struct
00319 {   UINT cidl;
00320     UINT aoffset[1];
00321 } CIDA, *LPIDA;
00322 
00323 /************************************************************************
00324 * IShellView interface
00325 */
00326 
00327 #define FCIDM_SHVIEWFIRST       0x0000
00328 /* undocumented */
00329 #define FCIDM_SHVIEW_ARRANGE    0x7001
00330 #define FCIDM_SHVIEW_DELETE     0x7011
00331 #define FCIDM_SHVIEW_PROPERTIES 0x7013
00332 #define FCIDM_SHVIEW_CUT        0x7018
00333 #define FCIDM_SHVIEW_COPY       0x7019
00334 #define FCIDM_SHVIEW_INSERT     0x701A
00335 #define FCIDM_SHVIEW_UNDO       0x701B
00336 #define FCIDM_SHVIEW_INSERTLINK 0x701C
00337 #define FCIDM_SHVIEW_SELECTALL  0x7021
00338 #define FCIDM_SHVIEW_INVERTSELECTION 0x7022
00339 
00340 #define FCIDM_SHVIEW_BIGICON    0x7029
00341 #define FCIDM_SHVIEW_SMALLICON  0x702A
00342 #define FCIDM_SHVIEW_LISTVIEW   0x702B
00343 #define FCIDM_SHVIEW_REPORTVIEW 0x702C
00344 /* 0x7030-0x703f are used by the shellbrowser */
00345 #define FCIDM_SHVIEW_AUTOARRANGE 0x7031
00346 #define FCIDM_SHVIEW_SNAPTOGRID 0x7032
00347 
00348 #define FCIDM_SHVIEW_HELP       0x7041
00349 #define FCIDM_SHVIEW_RENAME     0x7050
00350 #define FCIDM_SHVIEW_CREATELINK 0x7051
00351 #define FCIDM_SHVIEW_NEWLINK    0x7052
00352 #define FCIDM_SHVIEW_NEWFOLDER  0x7053
00353 
00354 #define FCIDM_SHVIEW_REFRESH    0x7100 /* FIXME */
00355 #define FCIDM_SHVIEW_EXPLORE    0x7101 /* FIXME */
00356 #define FCIDM_SHVIEW_OPEN       0x7102 /* FIXME */
00357 
00358 #define FCIDM_SHVIEWLAST        0x7fff
00359 #define FCIDM_BROWSERFIRST      0xA000
00360 /* undocumented toolbar items from stddlg's*/
00361 #define FCIDM_TB_UPFOLDER       0xA001
00362 #define FCIDM_TB_NEWFOLDER      0xA002
00363 #define FCIDM_TB_SMALLICON      0xA003
00364 #define FCIDM_TB_REPORTVIEW     0xA004
00365 #define FCIDM_TB_DESKTOP        0xA005  /* FIXME */
00366 
00367 #define FCIDM_BROWSERLAST       0xbf00
00368 #define FCIDM_GLOBALFIRST       0x8000
00369 #define FCIDM_GLOBALLAST        0x9fff
00370 
00371 /*
00372 * Global submenu IDs and separator IDs
00373 */
00374 #define FCIDM_MENU_FILE             (FCIDM_GLOBALFIRST+0x0000)
00375 #define FCIDM_MENU_EDIT             (FCIDM_GLOBALFIRST+0x0040)
00376 #define FCIDM_MENU_VIEW             (FCIDM_GLOBALFIRST+0x0080)
00377 #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
00378 #define FCIDM_MENU_TOOLS            (FCIDM_GLOBALFIRST+0x00c0)
00379 #define FCIDM_MENU_TOOLS_SEP_GOTO   (FCIDM_GLOBALFIRST+0x00c1)
00380 #define FCIDM_MENU_HELP             (FCIDM_GLOBALFIRST+0x0100)
00381 #define FCIDM_MENU_FIND             (FCIDM_GLOBALFIRST+0x0140)
00382 #define FCIDM_MENU_EXPLORE          (FCIDM_GLOBALFIRST+0x0150)
00383 #define FCIDM_MENU_FAVORITES        (FCIDM_GLOBALFIRST+0x0170)
00384 
00385 /* control IDs known to the view */
00386 #define FCIDM_TOOLBAR      (FCIDM_BROWSERFIRST + 0)
00387 #define FCIDM_STATUS       (FCIDM_BROWSERFIRST + 1)
00388 
00389 #define INTERFACE IShellDetails
00390 DECLARE_INTERFACE_(IShellDetails, IUnknown)
00391 {
00392     /*** IUnknown methods ***/
00393     STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
00394     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
00395     STDMETHOD_(ULONG,Release) (THIS) PURE;
00396     /*** IShellDetails methods ***/
00397     STDMETHOD(GetDetailsOf)(THIS_ PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *pDetails) PURE;
00398     STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE;
00399 };
00400 #undef INTERFACE
00401 
00402 #if !defined(__cplusplus) || defined(CINTERFACE)
00403 /*** IUnknown methods ***/
00404 #define IShellDetails_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
00405 #define IShellDetails_AddRef(p)                (p)->lpVtbl->AddRef(p)
00406 #define IShellDetails_Release(p)               (p)->lpVtbl->Release(p)
00407 /*** IShellDetails methods ***/
00408 #define IShellDetails_GetDetailsOf(p,a,b,c)    (p)->lpVtbl->GetDetailsOf(p,a,b,c)
00409 #define IShellDetails_ColumnClick(p,a)         (p)->lpVtbl->ColumnClick(p,a)
00410 #endif
00411 
00412 /* IQueryInfo interface */
00413 #define INTERFACE IQueryInfo
00414 DECLARE_INTERFACE_(IQueryInfo,IUnknown)
00415 {
00416     /*** IUnknown methods ***/
00417     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00418     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00419     STDMETHOD_(ULONG,Release)(THIS) PURE;
00420     /*** IQueryInfo methods ***/
00421     STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, WCHAR** lppTips) PURE;
00422     STDMETHOD(GetInfoFlags)(THIS_ DWORD* lpFlags) PURE;
00423 };
00424 #undef INTERFACE
00425 
00426 #if !defined(__cplusplus) || defined(CINTERFACE)
00427 /*** IUnknown methods ***/
00428 #define IQueryInfo_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
00429 #define IQueryInfo_AddRef(p)                  (p)->lpVtbl->AddRef(p)
00430 #define IQueryInfo_Release(p)                 (p)->lpVtbl->Release(p)
00431 /*** IQueryInfo methods ***/
00432 #define IQueryInfo_GetInfoTip(p,a,b)          (p)->lpVtbl->GetInfoTip(p,a,b)
00433 #define IQueryInfo_GetInfoFlags(p,a)          (p)->lpVtbl->GetInfoFlags(p,a)
00434 #endif
00435 
00436 /* IInputObject interface */
00437 #define INTERFACE IInputObject
00438 DECLARE_INTERFACE_(IInputObject,IUnknown)
00439 {
00440     /*** IUnknown methods ***/
00441     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00442     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00443     STDMETHOD_(ULONG,Release)(THIS) PURE;
00444     /*** IInputObject methods ***/
00445     STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE;
00446     STDMETHOD(HasFocusIO)(THIS) PURE;
00447     STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE;
00448 };
00449 #undef INTERFACE
00450 
00451 #if !defined(__cplusplus) || defined(CINTERFACE)
00452 /*** IUnknown methods ***/
00453 #define IInputObject_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
00454 #define IInputObject_AddRef(p)                   (p)->lpVtbl->AddRef(p)
00455 #define IInputObject_Release(p)                  (p)->lpVtbl->Release(p)
00456 /*** IInputObject methods ***/
00457 #define IInputObject_UIActivateIO(p,a,b)         (p)->lpVtbl->UIActivateIO(p,a,b)
00458 #define IInputObject_HasFocusIO(p)               (p)->lpVtbl->HasFocusIO(p)
00459 #define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a)
00460 #endif
00461 
00462 /* IInputObjectSite interface */
00463 #define INTERFACE IInputObjectSite
00464 DECLARE_INTERFACE_(IInputObjectSite,IUnknown)
00465 {
00466     /*** IUnknown methods ***/
00467     STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
00468     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
00469     STDMETHOD_(ULONG,Release) (THIS) PURE;
00470     /*** IInputObjectSite methods ***/
00471     STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE;
00472 };
00473 #undef INTERFACE
00474 
00475 #if !defined(__cplusplus) || defined(CINTERFACE)
00476 /*** IUnknown methods ***/
00477 #define IInputObjectSite_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
00478 #define IInputObjectSite_AddRef(p)              (p)->lpVtbl->AddRef(p)
00479 #define IInputObjectSite_Release(p)             (p)->lpVtbl->Release(p)
00480 /*** IInputObject methods ***/
00481 #define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b)
00482 #endif
00483 
00484 /* IObjMgr interface */
00485 #define INTERFACE IObjMgr
00486 DECLARE_INTERFACE_(IObjMgr,IUnknown)
00487 {
00488     /*** IUnknown methods ***/
00489     STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
00490     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
00491     STDMETHOD_(ULONG,Release) (THIS) PURE;
00492     /*** IObjMgr methods ***/
00493     STDMETHOD(Append)(THIS_ LPUNKNOWN punk) PURE;
00494     STDMETHOD(Remove)(THIS_ LPUNKNOWN punk) PURE;
00495 };
00496 #undef INTERFACE
00497 
00498 #if !defined(__cplusplus) || defined(CINTERFACE)
00499 /*** IUnknown methods ***/
00500 #define IObjMgr_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
00501 #define IObjMgr_AddRef(p)              (p)->lpVtbl->AddRef(p)
00502 #define IObjMgr_Release(p)             (p)->lpVtbl->Release(p)
00503 /*** IObjMgr methods ***/
00504 #define IObjMgr_Append(p,a) (p)->lpVtbl->Append(p,a)
00505 #define IObjMgr_Remove(p,a) (p)->lpVtbl->Remove(p,a)
00506 #endif
00507 
00508 /* IACList interface */
00509 #define INTERFACE IACList
00510 DECLARE_INTERFACE_(IACList,IUnknown)
00511 {
00512     /*** IUnknown methods ***/
00513     STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
00514     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
00515     STDMETHOD_(ULONG,Release) (THIS) PURE;
00516     /*** IACList methods ***/
00517     STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
00518 };
00519 #undef INTERFACE
00520 
00521 #if !defined(__cplusplus) || defined(CINTERFACE)
00522 /*** IUnknown methods ***/
00523 #define IACList_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
00524 #define IACList_AddRef(p)              (p)->lpVtbl->AddRef(p)
00525 #define IACList_Release(p)             (p)->lpVtbl->Release(p)
00526 /*** IACList methods ***/
00527 #define IACList_Expand(p,a)             (p)->lpVtbl->Expand(p,a)
00528 #endif
00529 
00530 /* IACList2 interface */
00531 #define INTERFACE IACList2
00532 DECLARE_INTERFACE_(IACList2,IACList)
00533 {
00534     /*** IUnknown methods ***/
00535     STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
00536     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
00537     STDMETHOD_(ULONG,Release) (THIS) PURE;
00538     /*** IACList methods ***/
00539     STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
00540     /*** IACList2 methods ***/
00541     STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE;
00542     STDMETHOD(GetOptions)(THIS_ DWORD* pdwFlag) PURE;
00543 };
00544 #undef INTERFACE
00545 
00546 #if !defined(__cplusplus) || defined(CINTERFACE)
00547 /*** IUnknown methods ***/
00548 #define IACList2_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
00549 #define IACList2_AddRef(p)              (p)->lpVtbl->AddRef(p)
00550 #define IACList2_Release(p)             (p)->lpVtbl->Release(p)
00551 /*** IACList2 methods ***/
00552 #define IACList2_GetOptions(p,a)        (p)->lpVtbl->GetOptions(p,a)
00553 #define IACList2_SetOptions(p,a)        (p)->lpVtbl->SetOptions(p,a)
00554 #endif
00555 
00556 /****************************************************************************
00557  * IShellFolderViewCB interface
00558  */
00559 
00560 #define INTERFACE IShellFolderViewCB
00561 DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown)
00562 {
00563     /*** IUnknown methods ***/
00564     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
00565     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00566     STDMETHOD_(ULONG,Release)(THIS) PURE;
00567     /*** IShellFolderViewCB methods ***/
00568     STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE;
00569 };
00570 #undef INTERFACE
00571 
00572 #if !defined(__cplusplus) || defined(CINTERFACE)
00573 /*** IUnknown methods ***/
00574 #define IShellFolderViewCB_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
00575 #define IShellFolderViewCB_AddRef(p)                  (p)->lpVtbl->AddRef(p)
00576 #define IShellFolderViewCB_Release(p)                 (p)->lpVtbl->Release(p)
00577 /*** IShellFolderViewCB methods ***/
00578 #define IShellFolderViewCB_MessageSFVCB(p,a,b,c)      (p)->lpVtbl->MessageSFVCB(p,a,b,c)
00579 #endif
00580 
00581 /****************************************************************************
00582  * IShellFolderView interface
00583  */
00584 
00585 #include <pshpack8.h>
00586 
00587 typedef struct _ITEMSPACING
00588 {
00589     int cxSmall;
00590     int cySmall;
00591     int cxLarge;
00592     int cyLarge;
00593 } ITEMSPACING;
00594 
00595 #include <poppack.h>
00596 
00597 #define INTERFACE IShellFolderView
00598 DEFINE_GUID(IID_IShellFolderView,0x37a378c0,0xf82d,0x11ce,0xae,0x65,0x08,0x00,0x2b,0x2e,0x12,0x62);
00599 DECLARE_INTERFACE_(IShellFolderView, IUnknown)
00600 {
00601     /*** IUnknown methods ***/
00602     STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
00603     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
00604     STDMETHOD_(ULONG,Release) (THIS) PURE;
00605 
00606     /*** IShellFolderView methods ***/
00607     STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE;
00608     STDMETHOD(GetArrangeParam) (THIS_ LPARAM *plParamSort) PURE;
00609     STDMETHOD(ArrangeGrid) (THIS) PURE;
00610     STDMETHOD(AutoArrange) (THIS) PURE;
00611     STDMETHOD(GetAutoArrange) (THIS) PURE;
00612     STDMETHOD(AddObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE;
00613     STDMETHOD(GetObject) (THIS_ PITEMID_CHILD *ppidl, UINT uItem) PURE;
00614     STDMETHOD(RemoveObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE;
00615     STDMETHOD(GetObjectCount) (THIS_ UINT *puCount) PURE;
00616     STDMETHOD(SetObjectCount) (THIS_ UINT uCount, UINT dwFlags) PURE;
00617     STDMETHOD(UpdateObject) (THIS_ PITEMID_CHILD pidlOld, PITEMID_CHILD pidlNew, UINT *puItem) PURE;
00618     STDMETHOD(RefreshObject) (THIS_ PITEMID_CHILD pidl, UINT *puItem) PURE;
00619     STDMETHOD(SetRedraw) (THIS_ BOOL bRedraw) PURE;
00620     STDMETHOD(GetSelectedCount) (THIS_ UINT *puSelected) PURE;
00621     STDMETHOD(GetSelectedObjects) (THIS_ PCITEMID_CHILD **pppidl, UINT *puItems) PURE;
00622     STDMETHOD(IsDropOnSource) (THIS_ IDropTarget *pDropTarget) PURE;
00623     STDMETHOD(GetDragPoint) (THIS_ POINT *ppt) PURE;
00624     STDMETHOD(GetDropPoint) (THIS_ POINT *ppt) PURE;
00625     STDMETHOD(MoveIcons) (THIS_ IDataObject *pDataObject) PURE;
00626     STDMETHOD(SetItemPos) (THIS_ PCUITEMID_CHILD pidl, POINT *ppt) PURE;
00627     STDMETHOD(IsBkDropTarget) (THIS_ IDropTarget *pDropTarget) PURE;
00628     STDMETHOD(SetClipboard) (THIS_ BOOL bMove) PURE;
00629     STDMETHOD(SetPoints) (THIS_ IDataObject *pDataObject) PURE;
00630     STDMETHOD(GetItemSpacing) (THIS_ ITEMSPACING *pSpacing) PURE;
00631     STDMETHOD(SetCallback) (THIS_ IShellFolderViewCB* pNewCB, IShellFolderViewCB** ppOldCB) PURE;
00632     STDMETHOD(Select) ( THIS_  UINT dwFlags ) PURE;
00633     STDMETHOD(QuerySupport) (THIS_ UINT * pdwSupport ) PURE;
00634     STDMETHOD(SetAutomationObject)(THIS_ IDispatch* pdisp) PURE;
00635 };
00636 #undef INTERFACE
00637 
00638 #if !defined(__cplusplus) || defined(CINTERFACE)
00639 /*** IUnknown methods ***/
00640 #define IShellFolderView_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
00641 #define IShellFolderView_AddRef(p)                  (p)->lpVtbl->AddRef(p)
00642 #define IShellFolderView_Release(p)                 (p)->lpVtbl->Release(p)
00643 /*** IShellFolderView methods ***/
00644 #define IShellFolderView_Rearrange(p,a)             (p)->lpVtbl->Rearrange(p,a)
00645 #define IShellFolderView_GetArrangeParam(p,a)       (p)->lpVtbl->GetArrangeParam(p,a)
00646 #define IShellFolderView_ArrangeGrid(p)             (p)->lpVtbl->ArrangeGrid(p)
00647 #define IShellFolderView_AutoArrange(p)             (p)->lpVtbl->AutoArrange(p)
00648 #define IShellFolderView_GetAutoArrange(p)          (p)->lpVtbl->GetAutoArrange(p)
00649 #define IShellFolderView_AddObject(p,a,b)           (p)->lpVtbl->AddObject(p,a,b)
00650 #define IShellFolderView_GetObject(p,a,b)           (p)->lpVtbl->GetObject(p,a,b)
00651 #define IShellFolderView_RemoveObject(p,a,b)        (p)->lpVtbl->RemoveObject(p,a,b)
00652 #define IShellFolderView_GetObjectCount(p,a)        (p)->lpVtbl->GetObjectCount(p,a)
00653 #define IShellFolderView_SetObjectCount(p,a,b)      (p)->lpVtbl->SetObjectCount(p,a,b)
00654 #define IShellFolderView_UpdateObject(p,a,b,c)      (p)->lpVtbl->UpdateObject(p,a,b,c)
00655 #define IShellFolderView_RefreshObject(p,a,b)       (p)->lpVtbl->RefreshObject(p,a,b)
00656 #define IShellFolderView_SetRedraw(p,a)             (p)->lpVtbl->SetRedraw(p,a)
00657 #define IShellFolderView_GetSelectedCount(p,a)      (p)->lpVtbl->GetSelectedCount(p,a)
00658 #define IShellFolderView_GetSelectedObjects(p,a,b)  (p)->lpVtbl->GetSelectedObjects(p,a,b)
00659 #define IShellFolderView_IsDropOnSource(p,a)        (p)->lpVtbl->IsDropOnSource(p,a)
00660 #define IShellFolderView_GetDragPoint(p,a)          (p)->lpVtbl->GetDragPoint(p,a)
00661 #define IShellFolderView_GetDropPoint(p,a)          (p)->lpVtbl->GetDropPoint(p,a)
00662 #define IShellFolderView_MoveIcons(p,a)             (p)->lpVtbl->MoveIcons(p,a)
00663 #define IShellFolderView_SetItemPos(p,a,b)          (p)->lpVtbl->SetItemPos(p,a,b)
00664 #define IShellFolderView_DropTarget(p,a)            (p)->lpVtbl->DropTarget(p,a)
00665 #define IShellFolderView_SetClipboard(p,a)          (p)->lpVtbl->SetClipboard(p,a)
00666 #define IShellFolderView_SetPoints(p,a)             (p)->lpVtbl->SetPoints(p,a)
00667 #define IShellFolderView_GetItemSpacing(p,a)        (p)->lpVtbl->GetItemSpacing(p,a)
00668 #define IShellFolderView_SetCallback(p,a)           (p)->lpVtbl->SetCallback(p,a)
00669 #define IShellFolderView_Select(p,a)                (p)->lpVtbl->Select(p,a)
00670 #define IShellFolderView_QuerySupport(p,a)          (p)->lpVtbl->QuerySupport(p,a)
00671 #define IShellFolderView_SetAutomationObject(p,a)   (p)->lpVtbl->SetAutomationObject(p,a)
00672 #endif
00673 
00674 /* IProgressDialog interface */
00675 #define PROGDLG_NORMAL           0x00000000
00676 #define PROGDLG_MODAL            0x00000001
00677 #define PROGDLG_AUTOTIME         0x00000002
00678 #define PROGDLG_NOTIME           0x00000004
00679 #define PROGDLG_NOMINIMIZE       0x00000008
00680 #define PROGDLG_NOPROGRESSBAR    0x00000010
00681 #define PROGDLG_MARQUEEPROGRESS  0x00000020
00682 #define PROGDLG_NOCANCEL         0x00000040
00683 
00684 #define PDTIMER_RESET            0x00000001
00685 #define PDTIMER_PAUSE            0x00000002
00686 #define PDTIMER_RESUME           0x00000003
00687 
00688 #define INTERFACE IProgressDialog
00689 DECLARE_INTERFACE_(IProgressDialog,IUnknown)
00690 {
00691     /*** IUnknown methods ***/
00692     STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
00693     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
00694     STDMETHOD_(ULONG,Release) (THIS) PURE;
00695     /*** IProgressDialog methods ***/
00696     STDMETHOD(StartProgressDialog)(THIS_ HWND hwndParent, IUnknown *punkEnableModeless, DWORD dwFlags, LPCVOID reserved) PURE;
00697     STDMETHOD(StopProgressDialog)(THIS) PURE;
00698     STDMETHOD(SetTitle)(THIS_ LPCWSTR pwzTitle) PURE;
00699     STDMETHOD(SetAnimation)(THIS_ HINSTANCE hInstance, UINT uiResourceId) PURE;
00700     STDMETHOD_(BOOL,HasUserCancelled)(THIS) PURE;
00701     STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE;
00702     STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) PURE;
00703     STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, LPCWSTR pwzString, BOOL bPath, LPCVOID reserved) PURE;
00704     STDMETHOD(SetCancelMsg)(THIS_ LPCWSTR pwzCancelMsg, LPCVOID reserved) PURE;
00705     STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, LPCVOID reserved) PURE;
00706 };
00707 #undef INTERFACE
00708 
00709 #if !defined(__cplusplus) || defined(CINTERFACE)
00710 /*** IUnknown methods ***/
00711 #define IProgressDialog_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
00712 #define IProgressDialog_AddRef(p)              (p)->lpVtbl->AddRef(p)
00713 #define IProgressDialog_Release(p)             (p)->lpVtbl->Release(p)
00714 /*** IProgressDialog methods ***/
00715 #define IProgressDialog_StartProgressDialog(p,a,b,c,d)    (p)->lpVtbl->StartProgressDialog(p,a,b,c,d)
00716 #define IProgressDialog_StopProgressDialog(p)             (p)->lpVtbl->StopProgressDialog(p)
00717 #define IProgressDialog_SetTitle(p,a)                     (p)->lpVtbl->SetTitle(p,a)
00718 #define IProgressDialog_SetAnimation(p,a,b)               (p)->lpVtbl->SetAnimation(p,a,b)
00719 #define IProgressDialog_HasUserCancelled(p)               (p)->lpVtbl->HasUserCancelled(p)
00720 #define IProgressDialog_SetProgress(p,a,b)                (p)->lpVtbl->SetProgress(p,a,b)
00721 #define IProgressDialog_SetProgress64(p,a,b)              (p)->lpVtbl->SetProgress64(p,a,b)
00722 #define IProgressDialog_SetLine(p,a,b,c,d)                (p)->lpVtbl->SetLine(p,a,b,c,d)
00723 #define IProgressDialog_SetCancelMsg(p,a,b)               (p)->lpVtbl->SetCancelMsg(p,a,b)
00724 #define IProgressDialog_Timer(p,a,b)                      (p)->lpVtbl->Timer(p,a,b)
00725 #endif
00726 
00727 
00728 /* IDeskBarClient interface */
00729 #define INTERFACE IDeskBarClient
00730 DECLARE_INTERFACE_(IDeskBarClient,IOleWindow)
00731 {
00732     /*** IUnknown methods ***/
00733     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
00734     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
00735     STDMETHOD_(ULONG,Release)(THIS) PURE;
00736     /*** IOleWindow methods ***/
00737     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND*) PURE;
00738     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL) PURE;
00739     /*** IDeskBarClient methods ***/
00740     STDMETHOD_(HRESULT,SetDeskBarSite)(THIS_ IUnknown*) PURE;
00741     STDMETHOD_(HRESULT,SetModeDBC)(THIS_ DWORD) PURE;
00742     STDMETHOD_(HRESULT,UIActivateDBC)(THIS_ DWORD) PURE;
00743     STDMETHOD_(HRESULT,GetSize)(THIS_ DWORD,LPRECT) PURE;
00744 };
00745 #undef INTERFACE
00746 
00747 #if !defined(__cplusplus) || defined(CINTERFACE)
00748 /*** IUnknown methods ***/
00749 #define IDeskBarClient_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
00750 #define IDeskBarClient_AddRef(p)                   (p)->lpVtbl->AddRef(p)
00751 #define IDeskBarClient_Release(p)                  (p)->lpVtbl->Release(p)
00752 /*** IOleWindow methods ***/
00753 #define IDeskBarClient_GetWindow(p,a)              (p)->lpVtbl->GetWindow(p,a)
00754 #define IDeskBarClient_ContextSensitiveHelp(p,a)   (p)->lpVtbl->ContextSensitiveHelp(p,a)
00755 /*** IOleWindow IDeskBarClient ***/
00756 #define IDeskBarClient_SetDeskBarSite(p,a)         (p)->lpVtbl->SetDeskBarSite(p,a)
00757 #define IDeskBarClient_SetModeDBC(p,a)             (p)->lpVtbl->SetModeDBC(p,a)
00758 #define IDeskBarClient_UIActivateDBC(p,a)          (p)->lpVtbl->UIActivateDBC(p,a)
00759 #define IDeskBarClient_GetSize(p,a,b)              (p)->lpVtbl->GetSize(p,a,b)
00760 #endif
00761 
00762 #define DBC_GS_IDEAL    0
00763 #define DBC_GS_SIZEDOWN 1
00764 
00765 #define DBC_HIDE        0
00766 #define DBC_SHOW        1
00767 #define DBC_SHOWOBSCURE 2
00768 
00769 
00770 /****************************************************************************
00771 * SHAddToRecentDocs API
00772 */
00773 #define SHARD_PIDL      0x00000001L
00774 #define SHARD_PATHA     0x00000002L
00775 #define SHARD_PATHW     0x00000003L
00776 #define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH)
00777 
00778 void WINAPI SHAddToRecentDocs(UINT,LPCVOID);
00779 
00780 /****************************************************************************
00781  * SHBrowseForFolder API
00782  */
00783 typedef INT (CALLBACK *BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
00784 
00785 #include <pshpack8.h>
00786 
00787 typedef struct tagBROWSEINFOA {
00788     HWND        hwndOwner;
00789     LPCITEMIDLIST pidlRoot;
00790     LPSTR         pszDisplayName;
00791     LPCSTR        lpszTitle;
00792     UINT        ulFlags;
00793     BFFCALLBACK   lpfn;
00794     LPARAM        lParam;
00795     INT         iImage;
00796 } BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA;
00797 
00798 typedef struct tagBROWSEINFOW {
00799     HWND        hwndOwner;
00800     LPCITEMIDLIST pidlRoot;
00801     LPWSTR        pszDisplayName;
00802     LPCWSTR       lpszTitle;
00803     UINT        ulFlags;
00804     BFFCALLBACK   lpfn;
00805     LPARAM        lParam;
00806     INT         iImage;
00807 } BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW;
00808 
00809 #define BROWSEINFO   WINELIB_NAME_AW(BROWSEINFO)
00810 #define PBROWSEINFO  WINELIB_NAME_AW(PBROWSEINFO)
00811 #define LPBROWSEINFO WINELIB_NAME_AW(LPBROWSEINFO)
00812 
00813 #include <poppack.h>
00814 
00815 /* Browsing for directory. */
00816 #define BIF_RETURNONLYFSDIRS   0x0001
00817 #define BIF_DONTGOBELOWDOMAIN  0x0002
00818 #define BIF_STATUSTEXT         0x0004
00819 #define BIF_RETURNFSANCESTORS  0x0008
00820 #define BIF_EDITBOX            0x0010
00821 #define BIF_VALIDATE           0x0020
00822 #define BIF_NEWDIALOGSTYLE     0x0040
00823 #define BIF_USENEWUI           (BIF_NEWDIALOGSTYLE | BIF_EDITBOX)
00824 #define BIF_BROWSEINCLUDEURLS  0x0080
00825 #define BIF_UAHINT             0x0100
00826 #define BIF_NONEWFOLDERBUTTON  0x0200
00827 #define BIF_NOTRANSLATETARGETS 0x0400
00828 
00829 #define BIF_BROWSEFORCOMPUTER  0x1000
00830 #define BIF_BROWSEFORPRINTER   0x2000
00831 #define BIF_BROWSEINCLUDEFILES 0x4000
00832 
00833 /* message from browser */
00834 #define BFFM_INITIALIZED        1
00835 #define BFFM_SELCHANGED         2
00836 #define BFFM_VALIDATEFAILEDA    3
00837 #define BFFM_VALIDATEFAILEDW    4
00838 #define BFFM_IUNKNOWN           5
00839 
00840 /* messages to browser */
00841 #define BFFM_SETSTATUSTEXTA     (WM_USER+100)
00842 #define BFFM_ENABLEOK           (WM_USER+101)
00843 #define BFFM_SETSELECTIONA      (WM_USER+102)
00844 #define BFFM_SETSELECTIONW      (WM_USER+103)
00845 #define BFFM_SETSTATUSTEXTW     (WM_USER+104)
00846 #define BFFM_SETOKTEXT          (WM_USER+105)
00847 #define BFFM_SETEXPANDED        (WM_USER+106)
00848 
00849 LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi);
00850 LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi);
00851 #define SHBrowseForFolder    WINELIB_NAME_AW(SHBrowseForFolder)
00852 #define BFFM_SETSTATUSTEXT  WINELIB_NAME_AW(BFFM_SETSTATUSTEXT)
00853 #define BFFM_SETSELECTION   WINELIB_NAME_AW(BFFM_SETSELECTION)
00854 #define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED)
00855 
00856 /**********************************************************************
00857  * SHCreateShellFolderViewEx API
00858  */
00859 
00860 typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)(
00861     IShellView* dwUser,
00862     IShellFolder* pshf,
00863     HWND hWnd,
00864     UINT uMsg,
00865     WPARAM wParam,
00866     LPARAM lParam);
00867 
00868 #include <pshpack8.h>
00869 
00870 typedef struct _CSFV
00871 {
00872   UINT             cbSize;
00873   IShellFolder*    pshf;
00874   IShellView*      psvOuter;
00875   LPCITEMIDLIST    pidl;
00876   LONG             lEvents;
00877   LPFNVIEWCALLBACK pfnCallback;
00878   FOLDERVIEWMODE   fvm;
00879 } CSFV, *LPCSFV;
00880 
00881 #include <poppack.h>
00882 
00883 HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv);
00884 
00885 /* SHCreateShellFolderViewEx callback messages */
00886 #define SFVM_MERGEMENU                 1
00887 #define SFVM_INVOKECOMMAND             2
00888 #define SFVM_GETHELPTEXT               3
00889 #define SFVM_GETTOOLTIPTEXT            4
00890 #define SFVM_GETBUTTONINFO             5
00891 #define SFVM_GETBUTTONS                6
00892 #define SFVM_INITMENUPOPUP             7
00893 #define SFVM_SELECTIONCHANGED          8 /* undocumented */
00894 #define SFVM_DRAWMENUITEM              9 /* undocumented */
00895 #define SFVM_MEASUREMENUITEM          10 /* undocumented */
00896 #define SFVM_EXITMENULOOP             11 /* undocumented */
00897 #define SFVM_VIEWRELEASE              12 /* undocumented */
00898 #define SFVM_GETNAMELENGTH            13 /* undocumented */
00899 #define SFVM_FSNOTIFY                 14
00900 #define SFVM_WINDOWCREATED            15
00901 #define SFVM_WINDOWCLOSING            16 /* undocumented */
00902 #define SFVM_LISTREFRESHED            17 /* undocumented */
00903 #define SFVM_WINDOWFOCUSED            18 /* undocumented */
00904 #define SFVM_REGISTERCOPYHOOK         20 /* undocumented */
00905 #define SFVM_COPYHOOKCALLBACK         21 /* undocumented */
00906 #define SFVM_GETDETAILSOF             23
00907 #define SFVM_COLUMNCLICK              24
00908 #define SFVM_QUERYFSNOTIFY            25
00909 #define SFVM_DEFITEMCOUNT             26
00910 #define SFVM_DEFVIEWMODE              27
00911 #define SFVM_UNMERGEFROMMENU          28
00912 #define SFVM_ADDINGOBJECT             29 /* undocumented */
00913 #define SFVM_REMOVINGOBJECT           30 /* undocumented */
00914 #define SFVM_UPDATESTATUSBAR          31
00915 #define SFVM_BACKGROUNDENUM           32
00916 #define SFVM_GETCOMMANDDIR            33 /* undocumented */
00917 #define SFVM_GETCOLUMNSTREAM          34 /* undocumented */
00918 #define SFVM_CANSELECTALL             35 /* undocumented */
00919 #define SFVM_DIDDRAGDROP              36
00920 #define SFVM_ISSTRICTREFRESH          37 /* undocumented */
00921 #define SFVM_ISCHILDOBJECT            38 /* undocumented */
00922 #define SFVM_SETISFV                  39
00923 #define SFVM_GETEXTVIEWS              40 /* undocumented */
00924 #define SFVM_THISIDLIST               41
00925 #define SFVM_ADDPROPERTYPAGES         47
00926 #define SFVM_BACKGROUNDENUMDONE       48
00927 #define SFVM_GETNOTIFY                49
00928 #define SFVM_GETSORTDEFAULTS          53
00929 #define SFVM_SIZE                     57
00930 #define SFVM_GETZONE                  58
00931 #define SFVM_GETPANE                  59
00932 #define SFVM_GETHELPTOPIC             63
00933 #define SFVM_GETANIMATION             68
00934 #define SFVM_GET_CUSTOMVIEWINFO       77 /* undocumented */
00935 #define SFVM_ENUMERATEDITEMS          79 /* undocumented */
00936 #define SFVM_GET_VIEW_DATA            80 /* undocumented */
00937 #define SFVM_GET_WEBVIEW_LAYOUT       82 /* undocumented */
00938 #define SFVM_GET_WEBVIEW_CONTENT      83 /* undocumented */
00939 #define SFVM_GET_WEBVIEW_TASKS        84 /* undocumented */
00940 #define SFVM_GET_WEBVIEW_THEME        86 /* undocumented */
00941 #define SFVM_GETDEFERREDVIEWSETTINGS  92 /* undocumented */
00942 
00943 #include <pshpack8.h>
00944 
00945 typedef struct _SFV_CREATE
00946 {
00947     UINT cbSize;
00948     IShellFolder *pshf;
00949     IShellView *psvOuter;
00950     IShellFolderViewCB *psfvcb;
00951 } SFV_CREATE;
00952 
00953 #include <poppack.h>
00954 
00955 HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pscfv, IShellView **ppsv);
00956 
00957 /* Types and definitions for the SFM_* parameters */
00958 #include <pshpack8.h>
00959 
00960 #define QCMINFO_PLACE_BEFORE          0
00961 #define QCMINFO_PLACE_AFTER           1
00962 typedef struct _QCMINFO_IDMAP_PLACEMENT
00963 {
00964     UINT id;
00965     UINT fFlags;
00966 } QCMINFO_IDMAP_PLACEMENT;
00967 
00968 typedef struct _QCMINFO_IDMAP
00969 {
00970     UINT nMaxIds;
00971     QCMINFO_IDMAP_PLACEMENT pIdList[1];
00972 } QCMINFO_IDMAP;
00973 
00974 typedef struct _QCMINFO
00975 {
00976     HMENU hmenu;
00977     UINT indexMenu;
00978     UINT idCmdFirst;
00979     UINT idCmdLast;
00980     QCMINFO_IDMAP const* pIdMap;
00981 } QCMINFO, *LPQCMINFO;
00982 
00983 #define TBIF_DEFAULT           0x00000000
00984 #define TBIF_APPEND            0x00000000
00985 #define TBIF_PREPEND           0x00000001
00986 #define TBIF_REPLACE           0x00000002
00987 #define TBIF_INTERNETBAR       0x00010000
00988 #define TBIF_STANDARDTOOLBAR   0x00020000
00989 #define TBIF_NOTOOLBAR         0x00030000
00990 
00991 typedef struct _TBINFO
00992 {
00993     UINT cbuttons;
00994     UINT uFlags;
00995 } TBINFO, *LPTBINFO;
00996 
00997 #include <poppack.h>
00998 
00999 /****************************************************************************
01000 *   SHShellFolderView_Message API
01001 */
01002 
01003 LRESULT WINAPI SHShellFolderView_Message(
01004     HWND hwndCabinet,
01005     UINT uMessage,
01006     LPARAM lParam);
01007 
01008 /* SHShellFolderView_Message messages */
01009 #define SFVM_REARRANGE          0x0001
01010 #define SFVM_GETARRANGECOLUMN   0x0002 /* undocumented */
01011 #define SFVM_ADDOBJECT          0x0003
01012 #define SFVM_GETITEMCOUNT       0x0004 /* undocumented */
01013 #define SFVM_GETITEMPIDL        0x0005 /* undocumented */
01014 #define SFVM_REMOVEOBJECT       0x0006
01015 #define SFVM_UPDATEOBJECT       0x0007
01016 #define SFVM_SETREDRAW          0x0008 /* undocumented */
01017 #define SFVM_GETSELECTEDOBJECTS 0x0009
01018 #define SFVM_ISDROPONSOURCE     0x000A /* undocumented */
01019 #define SFVM_MOVEICONS          0x000B /* undocumented */
01020 #define SFVM_GETDRAGPOINT       0x000C /* undocumented */
01021 #define SFVM_GETDROPPOINT       0x000D /* undocumented */
01022 #define SFVM_SETITEMPOS         0x000E
01023 #define SFVM_ISDROPONBACKGROUND 0x000F /* undocumented */
01024 #define SFVM_SETCLIPBOARD       0x0010
01025 #define SFVM_TOGGLEAUTOARRANGE  0x0011 /* undocumented */
01026 #define SFVM_LINEUPICONS        0x0012 /* undocumented */
01027 #define SFVM_GETAUTOARRANGE     0x0013 /* undocumented */
01028 #define SFVM_GETSELECTEDCOUNT   0x0014 /* undocumented */
01029 #define SFVM_GETITEMSPACING     0x0015 /* undocumented */
01030 #define SFVM_REFRESHOBJECT      0x0016 /* undocumented */
01031 #define SFVM_SETPOINTS          0x0017
01032 
01033 /****************************************************************************
01034 *   SHGetDataFromIDList API
01035 */
01036 #define SHGDFIL_FINDDATA        1
01037 #define SHGDFIL_NETRESOURCE     2
01038 #define SHGDFIL_DESCRIPTIONID   3
01039 
01040 #define SHDID_ROOT_REGITEM          1
01041 #define SHDID_FS_FILE               2
01042 #define SHDID_FS_DIRECTORY          3
01043 #define SHDID_FS_OTHER              4
01044 #define SHDID_COMPUTER_DRIVE35      5
01045 #define SHDID_COMPUTER_DRIVE525     6
01046 #define SHDID_COMPUTER_REMOVABLE    7
01047 #define SHDID_COMPUTER_FIXED        8
01048 #define SHDID_COMPUTER_NETDRIVE     9
01049 #define SHDID_COMPUTER_CDROM        10
01050 #define SHDID_COMPUTER_RAMDISK      11
01051 #define SHDID_COMPUTER_OTHER        12
01052 #define SHDID_NET_DOMAIN            13
01053 #define SHDID_NET_SERVER            14
01054 #define SHDID_NET_SHARE             15
01055 #define SHDID_NET_RESTOFNET         16
01056 #define SHDID_NET_OTHER             17
01057 #define SHDID_COMPUTER_IMAGING      18
01058 #define SHDID_COMPUTER_AUDIO        19
01059 #define SHDID_COMPUTER_SHAREDDOCS   20
01060 
01061 #include <pshpack8.h>
01062 
01063 typedef struct _SHDESCRIPTIONID
01064 {   DWORD   dwDescriptionId;
01065     CLSID   clsid;
01066 } SHDESCRIPTIONID, *LPSHDESCRIPTIONID;
01067 
01068 #include <poppack.h>
01069 
01070 HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
01071 HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
01072 #define  SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
01073 
01074 LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND hwnd, int csidl, BOOL fCreate);
01075 BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate);
01076 BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate);
01077 #define  SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
01078 
01079 HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ;
01080 
01081 /**********************************************************************
01082  * SHGetSetSettings ()
01083  */
01084 
01085 typedef struct
01086 {
01087     BOOL fShowAllObjects : 1;
01088     BOOL fShowExtensions : 1;
01089     BOOL fNoConfirmRecycle : 1;
01090 
01091     BOOL fShowSysFiles : 1;
01092     BOOL fShowCompColor : 1;
01093     BOOL fDoubleClickInWebView : 1;
01094     BOOL fDesktopHTML : 1;
01095     BOOL fWin95Classic : 1;
01096     BOOL fDontPrettyPath : 1;
01097     BOOL fShowAttribCol : 1;
01098     BOOL fMapNetDrvBtn : 1;
01099     BOOL fShowInfoTip : 1;
01100     BOOL fHideIcons : 1;
01101     BOOL fWebView : 1;
01102     BOOL fFilter : 1;
01103     BOOL fShowSuperHidden : 1;
01104     BOOL fNoNetCrawling : 1;
01105 
01106     UINT :15; /* Required for proper binary layout with gcc */
01107     DWORD dwWin95Unused;
01108     UINT  uWin95Unused;
01109     LONG   lParamSort;
01110     int    iSortDirection;
01111     UINT   version;
01112     UINT uNotUsed;
01113     BOOL fSepProcess: 1;
01114     BOOL fStartPanelOn: 1;
01115     BOOL fShowStartPage: 1;
01116     UINT fSpareFlags : 13;
01117     UINT :15; /* Required for proper binary layout with gcc */
01118 } SHELLSTATE, *LPSHELLSTATE;
01119 
01120 /**********************************************************************
01121  * SHGetSettings ()
01122  */
01123 typedef struct
01124 {   BOOL fShowAllObjects : 1;
01125     BOOL fShowExtensions : 1;
01126     BOOL fNoConfirmRecycle : 1;
01127     BOOL fShowSysFiles : 1;
01128 
01129     BOOL fShowCompColor : 1;
01130     BOOL fDoubleClickInWebView : 1;
01131     BOOL fDesktopHTML : 1;
01132     BOOL fWin95Classic : 1;
01133 
01134     BOOL fDontPrettyPath : 1;
01135     BOOL fShowAttribCol : 1;
01136     BOOL fMapNetDrvBtn : 1;
01137     BOOL fShowInfoTip : 1;
01138 
01139     BOOL fHideIcons : 1;
01140     UINT fRestFlags : 3;
01141     UINT :15; /* Required for proper binary layout with gcc */
01142 } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
01143 
01144 VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
01145 
01146 #define SSF_SHOWALLOBJECTS      0x0001
01147 #define SSF_SHOWEXTENSIONS      0x0002
01148 #define SSF_SHOWCOMPCOLOR       0x0008
01149 #define SSF_SHOWSYSFILES        0x0020
01150 #define SSF_DOUBLECLICKINWEBVIEW    0x0080
01151 #define SSF_SHOWATTRIBCOL       0x0100
01152 #define SSF_DESKTOPHTML         0x0200
01153 #define SSF_WIN95CLASSIC        0x0400
01154 #define SSF_DONTPRETTYPATH      0x0800
01155 #define SSF_SHOWINFOTIP         0x2000
01156 #define SSF_MAPNETDRVBUTTON     0x1000
01157 #define SSF_NOCONFIRMRECYCLE        0x8000
01158 #define SSF_HIDEICONS           0x4000
01159 
01160 /****************************************************************************
01161 * SHRestricted API
01162 */
01163 typedef enum RESTRICTIONS
01164 {
01165     REST_NONE           = 0x00000000,
01166     REST_NORUN          = 0x00000001,
01167     REST_NOCLOSE            = 0x00000002,
01168     REST_NOSAVESET          = 0x00000004,
01169     REST_NOFILEMENU         = 0x00000008,
01170     REST_NOSETFOLDERS       = 0x00000010,
01171     REST_NOSETTASKBAR       = 0x00000020,
01172     REST_NODESKTOP          = 0x00000040,
01173     REST_NOFIND         = 0x00000080,
01174     REST_NODRIVES           = 0x00000100,
01175     REST_NODRIVEAUTORUN     = 0x00000200,
01176     REST_NODRIVETYPEAUTORUN     = 0x00000400,
01177     REST_NONETHOOD          = 0x00000800,
01178     REST_STARTBANNER        = 0x00001000,
01179     REST_RESTRICTRUN        = 0x00002000,
01180     REST_NOPRINTERTABS      = 0x00004000,
01181     REST_NOPRINTERDELETE        = 0x00008000,
01182     REST_NOPRINTERADD       = 0x00010000,
01183     REST_NOSTARTMENUSUBFOLDERS  = 0x00020000,
01184     REST_MYDOCSONNET        = 0x00040000,
01185     REST_NOEXITTODOS        = 0x00080000,
01186     REST_ENFORCESHELLEXTSECURITY    = 0x00100000,
01187     REST_LINKRESOLVEIGNORELINKINFO  = 0x00200000,
01188     REST_NOCOMMONGROUPS     = 0x00400000,
01189     REST_SEPARATEDESKTOPPROCESS = 0x00800000,
01190     REST_NOWEB          = 0x01000000,
01191     REST_NOTRAYCONTEXTMENU      = 0x02000000,
01192     REST_NOVIEWCONTEXTMENU      = 0x04000000,
01193     REST_NONETCONNECTDISCONNECT = 0x08000000,
01194     REST_STARTMENULOGOFF        = 0x10000000,
01195     REST_NOSETTINGSASSIST       = 0x20000000,
01196     REST_NOINTERNETICON     = 0x40000001,
01197     REST_NORECENTDOCSHISTORY,
01198     REST_NORECENTDOCSMENU,
01199     REST_NOACTIVEDESKTOP,
01200     REST_NOACTIVEDESKTOPCHANGES,
01201     REST_NOFAVORITESMENU,
01202     REST_CLEARRECENTDOCSONEXIT,
01203     REST_CLASSICSHELL,
01204     REST_NOCUSTOMIZEWEBVIEW,
01205 
01206     REST_NOHTMLWALLPAPER        = 0x40000010,
01207     REST_NOCHANGINGWALLPAPER,
01208     REST_NODESKCOMP,
01209     REST_NOADDDESKCOMP,
01210     REST_NODELDESKCOMP,
01211     REST_NOCLOSEDESKCOMP,
01212     REST_NOCLOSE_DRAGDROPBAND,
01213     REST_NOMOVINGBAND,
01214     REST_NOEDITDESKCOMP,
01215     REST_NORESOLVESEARCH,
01216     REST_NORESOLVETRACK,
01217     REST_FORCECOPYACLWITHFILE,
01218     REST_NOLOGO3CHANNELNOTIFY,
01219     REST_NOFORGETSOFTWAREUPDATE,
01220     REST_NOSETACTIVEDESKTOP,
01221     REST_NOUPDATEWINDOWS,
01222     REST_NOCHANGESTARMENU,      /* 0x40000020 */
01223     REST_NOFOLDEROPTIONS,
01224     REST_HASFINDCOMPUTERS,
01225     REST_INTELLIMENUS,
01226     REST_RUNDLGMEMCHECKBOX,
01227     REST_ARP_ShowPostSetup,
01228     REST_NOCSC,
01229     REST_NOCONTROLPANEL,
01230     REST_ENUMWORKGROUP,
01231     REST_ARP_NOARP,
01232     REST_ARP_NOREMOVEPAGE,
01233     REST_ARP_NOADDPAGE,
01234     REST_ARP_NOWINSETUPPAGE,
01235     REST_GREYMSIADS,
01236     REST_NOCHANGEMAPPEDDRIVELABEL,
01237     REST_NOCHANGEMAPPEDDRIVECOMMENT,
01238     REST_MaxRecentDocs,     /* 0x40000030 */
01239     REST_NONETWORKCONNECTIONS,
01240     REST_FORCESTARTMENULOGOFF,
01241     REST_NOWEBVIEW,
01242     REST_NOCUSTOMIZETHISFOLDER,
01243     REST_NOENCRYPTION,
01244 
01245     REST_ALLOWFRENCHENCRYPTION, /* not documented */
01246 
01247     REST_DONTSHOWSUPERHIDDEN,
01248     REST_NOSHELLSEARCHBUTTON,
01249     REST_NOHARDWARETAB,
01250     REST_NORUNASINSTALLPROMPT,
01251     REST_PROMPTRUNASINSTALLNETPATH,
01252     REST_NOMANAGEMYCOMPUTERVERB,
01253     REST_NORECENTDOCSNETHOOD,
01254     REST_DISALLOWRUN,
01255     REST_NOWELCOMESCREEN,
01256     REST_RESTRICTCPL,       /* 0x40000040 */
01257     REST_DISALLOWCPL,
01258     REST_NOSMBALLOONTIP,
01259     REST_NOSMHELP,
01260     REST_NOWINKEYS,
01261     REST_NOENCRYPTONMOVE,
01262     REST_NOLOCALMACHINERUN,
01263     REST_NOCURRENTUSERRUN,
01264     REST_NOLOCALMACHINERUNONCE,
01265     REST_NOCURRENTUSERRUNONCE,
01266     REST_FORCEACTIVEDESKTOPON,
01267     REST_NOCOMPUTERSNEARME,
01268     REST_NOVIEWONDRIVE,
01269     REST_NONETCRAWL,
01270     REST_NOSHAREDDOCUMENTS,
01271     REST_NOSMMYDOCS,
01272     REST_NOSMMYPICS,        /* 0x40000050 */
01273     REST_ALLOWBITBUCKDRIVES,
01274     REST_NONLEGACYSHELLMODE,
01275     REST_NOCONTROLPANELBARRICADE,
01276     REST_NOSTARTPAGE,
01277     REST_NOAUTOTRAYNOTIFY,
01278     REST_NOTASKGROUPING,
01279     REST_NOCDBURNING,
01280     REST_MYCOMPNOPROP,
01281     REST_MYDOCSNOPROP,
01282     REST_NOSTARTPANEL,
01283     REST_NODISPLAYAPPEARANCEPAGE,
01284     REST_NOTHEMESTAB,
01285     REST_NOVISUALSTYLECHOICE,
01286     REST_NOSIZECHOICE,
01287     REST_NOCOLORCHOICE,
01288     REST_SETVISUALSTYLE,        /* 0x40000060 */
01289     REST_STARTRUNNOHOMEPATH,
01290     REST_NOUSERNAMEINSTARTPANEL,
01291     REST_NOMYCOMPUTERICON,
01292     REST_NOSMNETWORKPLACES,
01293     REST_NOSMPINNEDLIST,
01294     REST_NOSMMYMUSIC,
01295     REST_NOSMEJECTPC,
01296     REST_NOSMMOREPROGRAMS,
01297     REST_NOSMMFUPROGRAMS,
01298     REST_NOTRAYITEMSDISPLAY,
01299     REST_NOTOOLBARSONTASKBAR,
01300     /* 0x4000006C
01301        0x4000006D
01302        0x4000006E */
01303     REST_NOSMCONFIGUREPROGRAMS  = 0x4000006F,
01304     REST_HIDECLOCK,         /* 0x40000070 */
01305     REST_NOLOWDISKSPACECHECKS,
01306     REST_NOENTIRENETWORK,
01307     REST_NODESKTOPCLEANUP,
01308     REST_BITBUCKNUKEONDELETE,
01309     REST_BITBUCKCONFIRMDELETE,
01310     REST_BITBUCKNOPROP,
01311     REST_NODISPBACKGROUND,
01312     REST_NODISPSCREENSAVEPG,
01313     REST_NODISPSETTINGSPG,
01314     REST_NODISPSCREENSAVEPREVIEW,
01315     REST_NODISPLAYCPL,
01316     REST_HIDERUNASVERB,
01317     REST_NOTHUMBNAILCACHE,
01318     REST_NOSTRCMPLOGICAL,
01319     REST_NOPUBLISHWIZARD,
01320     REST_NOONLINEPRINTSWIZARD,  /* 0x40000080 */
01321     REST_NOWEBSERVICES,
01322     REST_ALLOWUNHASHEDWEBVIEW,
01323     REST_ALLOWLEGACYWEBVIEW,
01324     REST_REVERTWEBVIEWSECURITY,
01325 
01326     REST_INHERITCONSOLEHANDLES  = 0x40000086,
01327 
01328     REST_NODISCONNECT       = 0x41000001,
01329     REST_NOSECURITY,
01330     REST_NOFILEASSOCIATE,       /* 0x41000003 */
01331 } RESTRICTIONS;
01332 
01333 DWORD WINAPI SHRestricted(RESTRICTIONS rest);
01334 
01335 /****************************************************************************
01336 * SHChangeNotify API
01337 */
01338 typedef struct _SHChangeNotifyEntry
01339 {
01340     LPCITEMIDLIST pidl;
01341     BOOL   fRecursive;
01342 } SHChangeNotifyEntry;
01343 
01344 #define SHCNE_RENAMEITEM    0x00000001
01345 #define SHCNE_CREATE        0x00000002
01346 #define SHCNE_DELETE        0x00000004
01347 #define SHCNE_MKDIR     0x00000008
01348 #define SHCNE_RMDIR     0x00000010
01349 #define SHCNE_MEDIAINSERTED 0x00000020
01350 #define SHCNE_MEDIAREMOVED  0x00000040
01351 #define SHCNE_DRIVEREMOVED  0x00000080
01352 #define SHCNE_DRIVEADD      0x00000100
01353 #define SHCNE_NETSHARE      0x00000200
01354 #define SHCNE_NETUNSHARE    0x00000400
01355 #define SHCNE_ATTRIBUTES    0x00000800
01356 #define SHCNE_UPDATEDIR     0x00001000
01357 #define SHCNE_UPDATEITEM    0x00002000
01358 #define SHCNE_SERVERDISCONNECT  0x00004000
01359 #define SHCNE_UPDATEIMAGE   0x00008000
01360 #define SHCNE_DRIVEADDGUI   0x00010000
01361 #define SHCNE_RENAMEFOLDER  0x00020000
01362 #define SHCNE_FREESPACE     0x00040000
01363 
01364 #define SHCNE_EXTENDED_EVENT    0x04000000
01365 #define SHCNE_ASSOCCHANGED  0x08000000
01366 #define SHCNE_DISKEVENTS    0x0002381F
01367 #define SHCNE_GLOBALEVENTS  0x0C0581E0
01368 #define SHCNE_ALLEVENTS     0x7FFFFFFF
01369 #define SHCNE_INTERRUPT     0x80000000
01370 
01371 #define SHCNEE_ORDERCHANGED 0x0002L
01372 #define SHCNEE_MSI_CHANGE   0x0004L
01373 #define SHCNEE_MSI_UNINSTALL    0x0005L
01374 
01375 #define SHCNF_IDLIST        0x0000
01376 #define SHCNF_PATHA     0x0001
01377 #define SHCNF_PRINTERA      0x0002
01378 #define SHCNF_DWORD     0x0003
01379 #define SHCNF_PATHW     0x0005
01380 #define SHCNF_PRINTERW      0x0006
01381 #define SHCNF_TYPE      0x00FF
01382 #define SHCNF_FLUSH     0x1000
01383 #define SHCNF_FLUSHNOWAIT   0x3000
01384 #define SHCNF_NOTIFYRECURSIVE   0x10000
01385 
01386 #define SHCNF_PATH              WINELIB_NAME_AW(SHCNF_PATH)
01387 #define SHCNF_PRINTER           WINELIB_NAME_AW(SHCNF_PRINTER)
01388 
01389 #define SHCNRF_InterruptLevel 0x0001
01390 #define SHCNRF_ShellLevel 0x0002
01391 #define SHCNRF_RecursiveInterrupt 0x1000
01392 #define SHCNRF_NewDelivery 0x8000
01393 
01394 void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
01395 
01396 typedef enum {
01397     SLDF_HAS_ID_LIST = 0x00000001,
01398     SLDF_HAS_LINK_INFO = 0x00000002,
01399     SLDF_HAS_NAME = 0x00000004,
01400     SLDF_HAS_RELPATH = 0x00000008,
01401     SLDF_HAS_WORKINGDIR = 0x00000010,
01402     SLDF_HAS_ARGS = 0x00000020,
01403     SLDF_HAS_ICONLOCATION = 0x00000040,
01404     SLDF_UNICODE = 0x00000080,
01405     SLDF_FORCE_NO_LINKINFO = 0x00000100,
01406     SLDF_HAS_EXP_SZ = 0x00000200,
01407     SLDF_RUN_IN_SEPARATE = 0x00000400,
01408     SLDF_HAS_LOGO3ID = 0x00000800,
01409     SLDF_HAS_DARWINID = 0x00001000,
01410     SLDF_RUNAS_USER = 0x00002000,
01411     SLDF_HAS_EXP_ICON_SZ = 0x00004000,
01412     SLDF_NO_PIDL_ALIAS = 0x00008000,
01413     SLDF_FORCE_UNCNAME = 0x00010000,
01414     SLDF_RUN_WITH_SHIMLAYER = 0x00020000,
01415     SLDF_FORCE_NO_LINKTRACK = 0x00040000,
01416     SLDF_ENABLE_TARGET_METADATA = 0x00080000,
01417     SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING = 0x00200000,
01418     SLDF_VALID = 0x003ff7ff,
01419     SLDF_RESERVED = 0x80000000,
01420 } SHELL_LINK_DATA_FLAGS;
01421 
01422 typedef struct tagDATABLOCKHEADER
01423 {
01424     DWORD cbSize;
01425     DWORD dwSignature;
01426 } DATABLOCK_HEADER, *LPDATABLOCK_HEADER, *LPDBLIST;
01427 
01428 typedef struct {
01429     DATABLOCK_HEADER dbh;
01430     CHAR szDarwinID[MAX_PATH];
01431     WCHAR szwDarwinID[MAX_PATH];
01432 } EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK;
01433 
01434 typedef struct {
01435     DWORD cbSize;
01436     DWORD cbSignature;
01437     CHAR szTarget[MAX_PATH];
01438     WCHAR szwTarget[MAX_PATH];
01439 } EXP_SZ_LINK, *LPEXP_SZ_LINK;
01440 
01441 typedef struct {
01442     DWORD cbSize;
01443     DWORD dwSignature;
01444     DWORD idSpecialFolder;
01445     DWORD cbOffset;
01446 } EXP_SPECIAL_FOLDER, *LPEXP_SPECIAL_FOLDER;
01447 
01448 typedef struct {
01449     DWORD cbSize;
01450     DWORD dwSignature;
01451     BYTE abPropertyStorage[1];
01452 } EXP_PROPERTYSTORAGE;
01453 
01454 #define EXP_SZ_LINK_SIG         0xa0000001
01455 #define NT_CONSOLE_PROPS_SIG    0xa0000002
01456 #define NT_FE_CONSOLE_PROPS_SIG 0xa0000004
01457 #define EXP_SPECIAL_FOLDER_SIG  0xa0000005
01458 #define EXP_DARWIN_ID_SIG       0xa0000006
01459 #define EXP_SZ_ICON_SIG         0xa0000007
01460 #define EXP_LOGO3_ID_SIG        EXP_SZ_ICON_SIG /* Old SDKs only */
01461 #define EXP_PROPERTYSTORAGE_SIG 0xa0000009
01462 
01463 typedef struct _SHChangeDWORDAsIDList {
01464     USHORT   cb;
01465     DWORD    dwItem1;
01466     DWORD    dwItem2;
01467     USHORT   cbZero;
01468 } SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList;
01469 
01470 typedef struct _SHChangeProductKeyAsIDList {
01471     USHORT cb;
01472     WCHAR wszProductKey[39];
01473     USHORT cbZero;
01474 } SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList;
01475 
01476 ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, UINT wMsg,
01477                                     int cEntries, SHChangeNotifyEntry *pshcne);
01478 BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID);
01479 HANDLE WINAPI SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dwProcessId,
01480                                         LPITEMIDLIST **pppidl, LONG *plEvent);
01481 BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
01482 
01483 HRESULT WINAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST * ppidlReal);
01484 
01485 /****************************************************************************
01486 * SHCreateDirectory API
01487 */
01488 int WINAPI SHCreateDirectory(HWND, LPCWSTR);
01489 int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
01490 int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES);
01491 #define    SHCreateDirectoryEx WINELIB_NAME_AW(SHCreateDirectoryEx)
01492 
01493 /****************************************************************************
01494 * SHGetSpecialFolderLocation API
01495 */
01496 HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl);
01497 HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl);
01498 
01499 /****************************************************************************
01500 * SHGetFolderPath API
01501 */
01502 typedef enum {
01503     SHGFP_TYPE_CURRENT = 0,
01504     SHGFP_TYPE_DEFAULT = 1
01505 } SHGFP_TYPE;
01506 
01507 HRESULT WINAPI SHGetFolderPathA(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
01508 HRESULT WINAPI SHGetFolderPathW(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
01509 #define        SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath)
01510 
01511 #define CSIDL_DESKTOP       0x0000
01512 #define CSIDL_INTERNET      0x0001
01513 #define CSIDL_PROGRAMS      0x0002
01514 #define CSIDL_CONTROLS      0x0003
01515 #define CSIDL_PRINTERS      0x0004
01516 #define CSIDL_PERSONAL      0x0005
01517 #define CSIDL_FAVORITES     0x0006
01518 #define CSIDL_STARTUP       0x0007
01519 #define CSIDL_RECENT        0x0008
01520 #define CSIDL_SENDTO        0x0009
01521 #define CSIDL_BITBUCKET     0x000a
01522 #define CSIDL_STARTMENU     0x000b
01523 #define CSIDL_MYDOCUMENTS   CSIDL_PERSONAL
01524 #define CSIDL_MYMUSIC       0x000d
01525 #define CSIDL_MYVIDEO       0x000e
01526 #define CSIDL_DESKTOPDIRECTORY  0x0010
01527 #define CSIDL_DRIVES        0x0011
01528 #define CSIDL_NETWORK       0x0012
01529 #define CSIDL_NETHOOD       0x0013
01530 #define CSIDL_FONTS     0x0014
01531 #define CSIDL_TEMPLATES     0x0015
01532 #define CSIDL_COMMON_STARTMENU  0x0016
01533 #define CSIDL_COMMON_PROGRAMS   0X0017
01534 #define CSIDL_COMMON_STARTUP    0x0018
01535 #define CSIDL_COMMON_DESKTOPDIRECTORY   0x0019
01536 #define CSIDL_APPDATA       0x001a
01537 #define CSIDL_PRINTHOOD     0x001b
01538 #define CSIDL_LOCAL_APPDATA 0x001c
01539 #define CSIDL_ALTSTARTUP    0x001d
01540 #define CSIDL_COMMON_ALTSTARTUP 0x001e
01541 #define CSIDL_COMMON_FAVORITES  0x001f
01542 #define CSIDL_INTERNET_CACHE    0x0020
01543 #define CSIDL_COOKIES       0x0021
01544 #define CSIDL_HISTORY       0x0022
01545 #define CSIDL_COMMON_APPDATA    0x0023
01546 #define CSIDL_WINDOWS       0x0024
01547 #define CSIDL_SYSTEM        0x0025
01548 #define CSIDL_PROGRAM_FILES 0x0026
01549 #define CSIDL_MYPICTURES    0x0027
01550 #define CSIDL_PROFILE       0x0028
01551 #define CSIDL_SYSTEMX86     0x0029
01552 #define CSIDL_PROGRAM_FILESX86  0x002a
01553 #define CSIDL_PROGRAM_FILES_COMMON  0x002b
01554 #define CSIDL_PROGRAM_FILES_COMMONX86   0x002c
01555 #define CSIDL_COMMON_TEMPLATES  0x002d
01556 #define CSIDL_COMMON_DOCUMENTS  0x002e
01557 #define CSIDL_COMMON_ADMINTOOLS 0x002f
01558 #define CSIDL_ADMINTOOLS    0x0030
01559 #define CSIDL_CONNECTIONS   0x0031
01560 #define CSIDL_COMMON_MUSIC  0x0035
01561 #define CSIDL_COMMON_PICTURES   0x0036
01562 #define CSIDL_COMMON_VIDEO  0x0037
01563 #define CSIDL_RESOURCES     0x0038
01564 #define CSIDL_RESOURCES_LOCALIZED 0x0039
01565 #define CSIDL_COMMON_OEM_LINKS  0x003a
01566 #define CSIDL_CDBURN_AREA   0x003b
01567 #define CSIDL_COMPUTERSNEARME   0x003d
01568 #define CSIDL_PROFILES      0x003e
01569 #define CSIDL_FOLDER_MASK   0x00ff
01570 #define CSIDL_FLAG_PER_USER_INIT 0x0800
01571 #define CSIDL_FLAG_NO_ALIAS 0x1000
01572 #define CSIDL_FLAG_DONT_VERIFY  0x4000
01573 #define CSIDL_FLAG_CREATE   0x8000
01574 
01575 #define CSIDL_FLAG_MASK     0xff00
01576 
01577 /****************************************************************************
01578  * SHGetDesktopFolder API
01579  */
01580 HRESULT WINAPI SHGetDesktopFolder(IShellFolder * *);
01581 
01582 /****************************************************************************
01583  * SHBindToParent API
01584  */
01585 HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast);
01586 
01587 /****************************************************************************
01588 * SHDefExtractIcon API
01589 */
01590 HRESULT WINAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags,
01591                                  HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
01592 HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags,
01593                                  HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
01594 #define        SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon)
01595 
01596 /*
01597  * DROPFILES for CF_HDROP and CF_PRINTERS
01598  */
01599 typedef struct _DROPFILES
01600 {
01601   DWORD pFiles;
01602   POINT pt;
01603   BOOL  fNC;
01604   BOOL  fWide;
01605 } DROPFILES, *LPDROPFILES;
01606 
01607 /*
01608  * Properties of a file in the clipboard
01609  */
01610 typedef struct _FILEDESCRIPTORA {
01611     DWORD dwFlags;
01612     CLSID clsid;
01613     SIZEL sizel;
01614     POINTL pointl;
01615     DWORD dwFileAttributes;
01616     FILETIME ftCreationTime;
01617     FILETIME ftLastAccessTime;
01618     FILETIME ftLastWriteTime;
01619     DWORD nFileSizeHigh;
01620     DWORD nFileSizeLow;
01621     CHAR cFileName[MAX_PATH];
01622 } FILEDESCRIPTORA, *LPFILEDESCRIPTORA;
01623 
01624 typedef struct _FILEDESCRIPTORW {
01625     DWORD dwFlags;
01626     CLSID clsid;
01627     SIZEL sizel;
01628     POINTL pointl;
01629     DWORD dwFileAttributes;
01630     FILETIME ftCreationTime;
01631     FILETIME ftLastAccessTime;
01632     FILETIME ftLastWriteTime;
01633     DWORD nFileSizeHigh;
01634     DWORD nFileSizeLow;
01635     WCHAR cFileName[MAX_PATH];
01636 } FILEDESCRIPTORW, *LPFILEDESCRIPTORW;
01637 
01638 DECL_WINELIB_TYPE_AW(FILEDESCRIPTOR)
01639 DECL_WINELIB_TYPE_AW(LPFILEDESCRIPTOR)
01640 
01641 /*
01642  * CF_FILEGROUPDESCRIPTOR clipboard format
01643  */
01644 typedef struct _FILEGROUPDESCRIPTORA {
01645     UINT cItems;
01646     FILEDESCRIPTORA fgd[1];
01647 } FILEGROUPDESCRIPTORA, *LPFILEGROUPDESCRIPTORA;
01648 
01649 typedef struct _FILEGROUPDESCRIPTORW {
01650     UINT cItems;
01651     FILEDESCRIPTORW fgd[1];
01652 } FILEGROUPDESCRIPTORW, *LPFILEGROUPDESCRIPTORW;
01653 
01654 DECL_WINELIB_TYPE_AW(FILEGROUPDESCRIPTOR)
01655 DECL_WINELIB_TYPE_AW(LPFILEGROUPDESCRIPTOR)
01656 
01657 /****************************************************************************
01658  * Cabinet functions
01659  */
01660 
01661 typedef struct {
01662     WORD cLength;
01663     WORD nVersion;
01664     BOOL fFullPathTitle:1;
01665     BOOL fSaveLocalView:1;
01666     BOOL fNotShell:1;
01667     BOOL fSimpleDefault:1;
01668     BOOL fDontShowDescBar:1;
01669     BOOL fNewWindowMode:1;
01670     BOOL fShowCompColor:1;
01671     BOOL fDontPrettyNames:1;
01672     BOOL fAdminsCreateCommonGroups:1;
01673     UINT fUnusedFlags:7;
01674     UINT :15; /* Required for proper binary layout with gcc */
01675     UINT fMenuEnumFilter;
01676 } CABINETSTATE, *LPCABINETSTATE;
01677 
01678 #define CABINETSTATE_VERSION 2
01679 
01680 BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
01681 BOOL WINAPI WriteCabinetState(CABINETSTATE *);
01682 
01683 /****************************************************************************
01684  * Path Manipulation Routines
01685  */
01686 
01687 /* PathProcessCommand flags */
01688 #define PPCF_ADDQUOTES        0x01
01689 #define PPCF_INCLUDEARGS      0x02
01690 #define PPCF_ADDARGUMENTS     0x03
01691 #define PPCF_NODIRECTORIES    0x10
01692 #define PPCF_DONTRESOLVE      0x20
01693 #define PPCF_FORCEQUALIFY     0x40
01694 #define PPCF_LONGESTPOSSIBLE  0x80
01695 
01696 /* PathResolve flags */
01697 #define PRF_VERIFYEXISTS         0x01
01698 #define PRF_EXECUTABLE           0x02
01699 #define PRF_TRYPROGRAMEXTENSIONS 0x03
01700 #define PRF_FIRSTDIRDEF          0x04
01701 #define PRF_DONTFINDLINK         0x08
01702 
01703 VOID WINAPI PathGetShortPath(LPWSTR pszPath);
01704 LONG WINAPI PathProcessCommand(LPCWSTR, LPWSTR, int, DWORD);
01705 BOOL WINAPI PathYetAnotherMakeUniqueName(LPWSTR, LPCWSTR, LPCWSTR, LPCWSTR);
01706 
01707 /****************************************************************************
01708  * Drag And Drop Routines
01709  */
01710 
01711 /* DAD_AutoScroll sample structure */
01712 #define NUM_POINTS 3
01713 typedef struct
01714 {
01715     int   iNextSample;
01716     DWORD dwLastScroll;
01717     BOOL  bFull;
01718     POINT pts[NUM_POINTS];
01719     DWORD dwTimes[NUM_POINTS];
01720 } AUTO_SCROLL_DATA;
01721 
01722 BOOL         WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT);
01723 BOOL         WINAPI DAD_DragEnterEx(HWND,POINT);
01724 BOOL         WINAPI DAD_DragEnterEx2(HWND,POINT,IDataObject*);
01725 BOOL         WINAPI DAD_DragMove(POINT);
01726 BOOL         WINAPI DAD_DragLeave(void);
01727 BOOL         WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,const POINT*);
01728 HRESULT      WINAPI SHDoDragDrop(HWND,IDataObject*,IDropSource*,DWORD,LPDWORD);
01729 
01730 LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST,LPCSHITEMID,BOOL);
01731 LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
01732 LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
01733 LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR);
01734 LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR);
01735 #define             ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath)
01736 LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST,LPCITEMIDLIST);
01737 LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST,LPCITEMIDLIST);
01738 LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
01739 void         WINAPI ILFree(LPITEMIDLIST);
01740 LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
01741 UINT         WINAPI ILGetSize(LPCITEMIDLIST);
01742 BOOL         WINAPI ILIsEqual(LPCITEMIDLIST,LPCITEMIDLIST);
01743 BOOL         WINAPI ILIsParent(LPCITEMIDLIST,LPCITEMIDLIST,BOOL);
01744 HRESULT      WINAPI ILLoadFromStream(LPSTREAM,LPITEMIDLIST*);
01745 BOOL         WINAPI ILRemoveLastID(LPITEMIDLIST);
01746 HRESULT      WINAPI ILSaveToStream(LPSTREAM,LPCITEMIDLIST);
01747 
01748 
01749 #include <poppack.h>
01750 
01751 
01752 /* menu merging */
01753 #define MM_ADDSEPARATOR         0x00000001L
01754 #define MM_SUBMENUSHAVEIDS      0x00000002L
01755 #define MM_DONTREMOVESEPS       0x00000004L
01756 
01757 UINT WINAPI Shell_MergeMenus (HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags);
01758 
01759 
01760 /****************************************************************************
01761  * SHCreateDefaultContextMenu API
01762  */
01763 
01764 typedef struct
01765 {
01766   HWND hwnd;
01767   IContextMenuCB *pcmcb;
01768   LPCITEMIDLIST pidlFolder;
01769   IShellFolder *psf;
01770   UINT cidl;
01771   LPCITEMIDLIST* apidl;
01772   IUnknown *punkAssociationInfo;
01773   UINT cKeys;
01774   const HKEY *aKeys;
01775 }DEFCONTEXTMENU;
01776 
01777 HRESULT WINAPI SHCreateDefaultContextMenu(const DEFCONTEXTMENU *,REFIID,void **ppv);
01778 
01779 typedef HRESULT (CALLBACK * LPFNDFMCALLBACK)(IShellFolder*,HWND,IDataObject*,UINT,WPARAM,LPARAM);
01780 HRESULT WINAPI CDefFolderMenu_Create2(LPCITEMIDLIST,HWND,UINT,LPCITEMIDLIST*,IShellFolder*,LPFNDFMCALLBACK,UINT,const HKEY *,IContextMenu **);
01781 /****************************************************************************
01782  * SHCreateDefaultContextMenu API
01783  */
01784 
01785 HRESULT WINAPI
01786 SHCreateDefaultExtractIcon(
01787   REFIID riid,
01788   void **ppv);
01789 /****************************************************************************
01790  * SHCreateDataObject API
01791  */
01792 
01793 HRESULT WINAPI SHCreateDataObject(
01794   LPCITEMIDLIST pidlFolder,
01795   UINT cidl,
01796   LPCITEMIDLIST* apidl,
01797   IDataObject *pdtInner,
01798   REFIID riid,
01799   void **ppv);
01800 
01801 /****************************************************************************
01802  * CIDLData_CreateFromIDArray API
01803  */
01804 
01805 HRESULT WINAPI CIDLData_CreateFromIDArray(
01806     LPCITEMIDLIST pidlFolder,
01807     UINT cidl,
01808     LPCITEMIDLIST* apidl,
01809     IDataObject **ppdtobj);
01810 
01811 /****************************************************************************
01812  * SHOpenWithDialog
01813  */
01814 
01815 enum tagOPEN_AS_INFO_FLAGS
01816 {
01817     OAIF_ALLOW_REGISTRATION = 1,
01818     OAIF_REGISTER_EXT       = 2,
01819     OAIF_EXEC               = 4,
01820     OAIF_FORCE_REGISTRATION = 8,
01821 #if (NTDDI_VERSION >= NTDDI_VISTA)
01822     OAIF_HIDE_REGISTRATION  = 32,
01823     OAIF_URL_PROTOCOL       = 64,
01824 #endif
01825 };
01826 typedef int OPEN_AS_INFO_FLAGS;
01827 
01828 
01829 typedef struct tagOPENASINFO {
01830     LPCWSTR pcszFile;
01831     LPCWSTR pcszClass;
01832     OPEN_AS_INFO_FLAGS oaifInFlags;
01833 } OPENASINFO;
01834 
01835 HRESULT WINAPI SHOpenWithDialog(
01836   HWND hwndParent,
01837   const OPENASINFO *poainfo
01838 );
01839 
01840 #define INTERFACE   IShellIconOverlayIdentifier
01841 
01842 DEFINE_GUID(IID_IShellIconOverlayIdentifier, 0x0c6c4200L, 0xc589, 0x11d0, 0x99, 0x9a, 0x00, 0xc0, 0x4f, 0xd6, 0x55, 0xe1);
01843 DECLARE_INTERFACE_(IShellIconOverlayIdentifier, IUnknown)
01844 {
01845     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
01846     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
01847     STDMETHOD_(ULONG,Release) (THIS) PURE;
01848 
01849     STDMETHOD (IsMemberOf)(THIS_ LPCWSTR pwszPath, DWORD dwAttrib) PURE;
01850     STDMETHOD (GetOverlayInfo)(THIS_ LPWSTR pwszIconFile, int cchMax, int * pIndex, DWORD * pdwFlags) PURE;
01851     STDMETHOD (GetPriority)(THIS_ int * pIPriority) PURE;
01852 };
01853 
01854 #if !defined(__cplusplus) || defined(CINTERFACE)
01855 /*** IUnknown methods ***/
01856 #define IShellIconOverlayIdentifier_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
01857 #define IShellIconOverlayIdentifier_AddRef(p)                     (p)->lpVtbl->AddRef(p)
01858 #define IShellIconOverlayIdentifier_Release(p)                    (p)->lpVtbl->Release(p)
01859 /*** IShellIconOverlayIdentifier methods ***/
01860 #define IShellIconOverlayIdentifier_IsMemberOf(p,a,b)             (p)->lpVtbl->IsMemberOf(p,a,b)
01861 #define IShellIconOverlayIdentifier_GetOverlayInfo(p,a,b,c,d)     (p)->lpVtbl->GetOverlayInfo(p,a,b,c,d)
01862 #define IShellIconOverlayIdentifier_GetPriority(p,a)              (p)->lpVtbl->GetPriority(p,a)
01863 #endif
01864 
01865 #define ISIOI_ICONFILE  0x00000001
01866 #define ISIOI_ICONINDEX 0x00000002
01867 
01868 #undef INTERFACE
01869 
01870 /****************************************************************************
01871  * Travel log
01872  */
01873 
01874 #define TLOG_BACK  -1
01875 #define TLOG_FORE   1
01876 
01877 #define TLMENUF_INCLUDECURRENT      0x00000001
01878 #define TLMENUF_CHECKCURRENT        (TLMENUF_INCLUDECURRENT | 0x00000002)
01879 #define TLMENUF_BACK                0x00000010  // Default
01880 #define TLMENUF_FORE                0x00000020
01881 #define TLMENUF_BACKANDFORTH        (TLMENUF_BACK | TLMENUF_FORE | TLMENUF_INCLUDECURRENT)
01882 
01883 /*****************************************************************************
01884  * IDockingWindowSite interface
01885  */
01886 #define INTERFACE IDockingWindowSite
01887 DECLARE_INTERFACE_(IDockingWindowSite, IOleWindow)
01888 {
01889     // *** IUnknown methods ***
01890     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
01891     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
01892     STDMETHOD_(ULONG,Release)(THIS) PURE;
01893 
01894     // *** IOleWindow methods ***
01895     STDMETHOD(GetWindow)(THIS_ HWND *lphwnd) PURE;
01896     STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE;
01897 
01898     // *** IDockingWindowSite methods ***
01899     STDMETHOD(GetBorderDW)(THIS_ IUnknown *punkObj, LPRECT prcBorder) PURE;
01900     STDMETHOD(RequestBorderSpaceDW)(THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE;
01901     STDMETHOD(SetBorderSpaceDW)(THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE;
01902 };
01903 #undef INTERFACE
01904 
01905 #if !defined(__cplusplus) || defined(CINTERFACE)
01906 /*** IUnknown methods ***/
01907 #define IDockingWindowSite_QueryInterface(p,a,b)         (p)->lpVtbl->QueryInterface(p,a,b)
01908 #define IDockingWindowSite_AddRef(p)                     (p)->lpVtbl->AddRef(p)
01909 #define IDockingWindowSite_Release(p)                    (p)->lpVtbl->Release(p)
01910 /*** IOleWindow methods ***/
01911 #define IDockingWindowSite_GetWindow(p,a)                (p)->lpVtbl->GetWindow(p,a)
01912 #define IDockingWindowSite_ContextSensitiveHelp(p,a)     (p)->lpVtbl->ContextSensitiveHelp(p,a)
01913 /*** IDockingWindowSite methods ***/
01914 #define IDockingWindowSite_GetBorderDW(p,a,b)            (p)->lpVtbl->GetBorderDW(p,a,b)
01915 #define IDockingWindowSite_RequestBorderSpaceDW(p,a,b)   (p)->lpVtbl->RequestBorderSpaceDW(p,a,b)
01916 #define IDockingWindowSite_SetBorderSpaceDW(p,a,b)       (p)->lpVtbl->SetBorderSpaceDW(p,a,b)
01917 #endif
01918 
01919 /*****************************************************************************
01920  * IShellTaskScheduler interface
01921  */
01922 #define REFTASKOWNERID REFGUID
01923 
01924 #define INTERFACE IShellTaskScheduler
01925 DECLARE_INTERFACE_(IShellTaskScheduler, IUnknown)
01926 {
01927     // *** IUnknown methods ***
01928     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
01929     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
01930     STDMETHOD_(ULONG, Release)(THIS) PURE;
01931 
01932     // *** IShellTaskScheduler methods ***
01933     STDMETHOD(AddTask)(THIS_ IRunnableTask *pTask, REFTASKOWNERID rtoid, DWORD_PTR lParam, DWORD dwPriority) PURE;
01934     STDMETHOD(RemoveTasks)(THIS_ REFTASKOWNERID rtoid, DWORD_PTR lParam, BOOL fWaitIfRunning) PURE;
01935     STDMETHOD_(UINT, CountTasks)(THIS_ REFTASKOWNERID rtoid) PURE;
01936     STDMETHOD(Status)(THIS_ DWORD dwReleaseStatus, DWORD dwThreadTimeout) PURE;
01937 };
01938 #undef INTERFACE
01939 
01940 #if !defined(__cplusplus) || defined(CINTERFACE)
01941 /*** IUnknown methods ***/
01942 #define IShellTaskScheduler_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
01943 #define IShellTaskScheduler_AddRef(p)              (p)->lpVtbl->AddRef(p)
01944 #define IShellTaskScheduler_Release(p)             (p)->lpVtbl->Release(p)
01945 /*** IShellTaskScheduler methods ***/
01946 #define IShellTaskScheduler_AddTask(p,a,b,c,d)     (p)->lpVtbl->AddTask(p,a,b,c,d)
01947 #define IShellTaskScheduler_RemoveTasks(p,a,b,c)   (p)->lpVtbl->RemoveTasks(p,a,b,c)
01948 #define IShellTaskScheduler_CountTasks(p,a)        (p)->lpVtbl->CountTasks(p,a)
01949 #define IShellTaskScheduler_Status(p,a,b)          (p)->lpVtbl->Status(p,a,b)
01950 #endif
01951 
01952 typedef void (CALLBACK *PFNASYNCICONTASKBALLBACK)(LPCITEMIDLIST pidl, LPVOID pvData, LPVOID pvHint, INT iIconIndex, INT iOpenIconIndex);
01953 
01954 /*****************************************************************************
01955  * Control Panel functions
01956  */
01957 LRESULT WINAPI CallCPLEntry16(HINSTANCE hMod, FARPROC pFunc, HWND dw3, UINT dw4, LPARAM dw5, LPARAM dw6);
01958 
01959 #ifdef __cplusplus
01960 } /* extern "C" */
01961 #endif /* defined(__cplusplus) */
01962 
01963 #endif /* __WINE_SHLOBJ_H */

Generated on Sat May 26 2012 04:31:08 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.