#include <shtypes.h>
#include <shobjidl.h>
+typedef struct
+{
+ DWORD dwSize;
+ DWORD dwMask;
+ SHELLVIEWID* pvid;
+ LPSTR pszWebViewTemplate;
+ DWORD cchWebViewTemplate;
+ LPSTR pszWebViewTemplateVersion;
+ LPSTR pszInfoTip;
+ DWORD cchInfoTip;
+ CLSID* pclsid;
+ DWORD dwFlags;
+ LPSTR pszIconFile;
+ DWORD cchIconFile;
+ int iIconIndex;
+ LPSTR pszLogo;
+ DWORD cchLogo;
+} SHFOLDERCUSTOMSETTINGSA, *LPSHFOLDERCUSTOMSETTINGSA;
+
+typedef struct
+{
+ DWORD dwSize;
+ DWORD dwMask;
+ SHELLVIEWID* pvid;
+ LPWSTR pszWebViewTemplate;
+ DWORD cchWebViewTemplate;
+ LPWSTR pszWebViewTemplateVersion;
+ LPWSTR pszInfoTip;
+ DWORD cchInfoTip;
+ CLSID* pclsid;
+ DWORD dwFlags;
+ LPWSTR pszIconFile;
+ DWORD cchIconFile;
+ int iIconIndex;
+ LPWSTR pszLogo;
+ DWORD cchLogo;
+} SHFOLDERCUSTOMSETTINGSW, *LPSHFOLDERCUSTOMSETTINGSW;
+
#ifndef HPSXA_DEFINED
#define HPSXA_DEFINED
DECLARE_HANDLE(HPSXA);
#endif
UINT WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM);
-LPVOID WINAPI SHAlloc(ULONG);
+LPVOID WINAPI SHAlloc(ULONG) __WINE_ALLOC_SIZE(1);
HRESULT WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*);
HPSXA WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT);
+HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*);
+HRESULT WINAPI SHCreateShellItem(LPCITEMIDLIST,IShellFolder*,LPCITEMIDLIST,IShellItem**);
DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*);
DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*);
#define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString)
INT WINAPI SHHandleUpdateImage(LPCITEMIDLIST);
HRESULT WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*);
HRESULT WINAPI SHLoadOLE(LPARAM);
+HRESULT WINAPI SHParseDisplayName(LPCWSTR,IBindCtx*,LPITEMIDLIST*,SFGAOF,SFGAOF*);
+HRESULT WINAPI SHPathPrepareForWriteA(HWND,IUnknown*,LPCSTR,DWORD);
+HRESULT WINAPI SHPathPrepareForWriteW(HWND,IUnknown*,LPCWSTR,DWORD);
+#define SHPathPrepareForWrite WINELIB_NAME_AW(SHPathPrepareForWrite);
UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA,UINT,LPFNADDPROPSHEETPAGE,LPARAM);
LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR);
int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*);
#define SHUpdateImage WINELIB_NAME_AW(SHUpdateImage)
int WINAPI RestartDialog(HWND,LPCWSTR,DWORD);
int WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD);
+BOOL WINAPI IsUserAnAdmin(void);
-#define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formatable */
-#define SHFMT_CANCEL 0xFFFFFFFEL /* Last format was canceled */
-#define SHFMT_NOFORMAT 0xFFFFFFFDL /* Drive is not formatable */
+#define SHFMT_ERROR 0xFFFFFFFFL /* Error on last format, drive may be formattable */
+#define SHFMT_CANCEL 0xFFFFFFFEL /* Last format was cancelled */
+#define SHFMT_NOFORMAT 0xFFFFFFFDL /* Drive is not formattable */
/* SHFormatDrive flags */
#define SHFMT_ID_DEFAULT 0xFFFF
#define SHFMT_OPT_FULL 1
#define SHFMT_OPT_SYSONLY 2
+/* SHPathPrepareForWrite flags */
+#define SHPPFW_NONE 0x00000000
+#define SHPPFW_DIRCREATE 0x00000001
+#define SHPPFW_DEFAULT SHPPFW_DIRCREATE
+#define SHPPFW_ASKDIRCREATE 0x00000002
+#define SHPPFW_IGNOREFILENAME 0x00000004
+#define SHPPFW_NOWRITECHECK 0x00000008
+#define SHPPFW_MEDIACHECKONLY 0x00000010
+
/* SHObjectProperties flags */
#define SHOP_PRINTERNAME 0x01
#define SHOP_FILEPATH 0x02
/* DATAOBJECT_InitShellIDList*/
-#define CFSTR_SHELLIDLIST "Shell IDList Array" /* CF_IDLIST */
-
-typedef struct
-{ UINT cidl;
- UINT aoffset[1];
-} CIDA, *LPIDA;
-
-#define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets" /* CF_OBJECTPOSITIONS */
-#define CFSTR_NETRESOURCES "Net Resource" /* CF_NETRESOURCE */
-
+#define CFSTR_SHELLIDLISTA "Shell IDList Array" /* CF_IDLIST */
+#define CFSTR_SHELLIDLISTOFFSETA "Shell Object Offsets" /* CF_OBJECTPOSITIONS */
+#define CFSTR_NETRESOURCESA "Net Resource" /* CF_NETRESOURCE */
/* DATAOBJECT_InitFileGroupDesc */
-#define CFSTR_FILEDESCRIPTORA "FileGroupDescriptor" /* CF_FILEGROUPDESCRIPTORA */
-
-#define CFSTR_FILEDESCRIPTORW "FileGroupDescriptorW" /* CF_FILEGROUPDESCRIPTORW */
-
+#define CFSTR_FILEDESCRIPTORA "FileGroupDescriptor" /* CF_FILEGROUPDESCRIPTORA */
/* DATAOBJECT_InitFileContents*/
-#define CFSTR_FILECONTENTS "FileContents" /* CF_FILECONTENTS */
-
-#ifdef UNICODE
-#define CFSTR_FILENAME L"FileNameW"
-#define CFSTR_FILENAMEMAP L"FileNameMapW"
-#define CFSTR_FILEDESCRIPTOR L"FileGroupDescriptorW"
-#define CFSTR_SHELLURL L"UniformResourceLocatorW"
+#define CFSTR_FILECONTENTSA "FileContents" /* CF_FILECONTENTS */
+#define CFSTR_FILENAMEA "FileName" /* CF_FILENAMEA */
+#define CFSTR_FILENAMEMAPA "FileNameMap" /* CF_FILENAMEMAPA */
+#define CFSTR_PRINTERGROUPA "PrinterFriendlyName" /* CF_PRINTERS */
+#define CFSTR_SHELLURLA "UniformResourceLocator"
+#define CFSTR_INETURLA CFSTR_SHELLURLA
+#define CFSTR_PREFERREDDROPEFFECTA "Preferred DropEffect"
+#define CFSTR_PERFORMEDDROPEFFECTA "Performed DropEffect"
+#define CFSTR_PASTESUCCEEDEDA "Paste Succeeded"
+#define CFSTR_INDRAGLOOPA "InShellDragLoop"
+#define CFSTR_DRAGCONTEXTA "DragContext"
+#define CFSTR_MOUNTEDVOLUMEA "MountedVolume"
+#define CFSTR_PERSISTEDDATAOBJECTA "PersistedDataObject"
+#define CFSTR_TARGETCLSIDA "TargetCLSID"
+#define CFSTR_AUTOPLAY_SHELLIDLISTSA "Autoplay Enumerated IDList Array"
+#define CFSTR_LOGICALPERFORMEDDROPEFFECTA "Logical Performed DropEffect"
+
+#if defined(__GNUC__)
+# define CFSTR_SHELLIDLISTW \
+ (const WCHAR []){ 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
+# define CFSTR_SHELLIDLISTOFFSETW \
+ (const WCHAR []){ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 }
+# define CFSTR_NETRESOURCESW \
+ (const WCHAR []){ 'N','e','t',' ','R','e','s','o','u','r','c','e',0 }
+# define CFSTR_FILEDESCRIPTORW \
+ (const WCHAR []){ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 }
+# define CFSTR_FILECONTENTSW \
+ (const WCHAR []){ 'F','i','l','e','C','o','n','t','e','n','t','s',0 }
+# define CFSTR_FILENAMEW \
+ (const WCHAR []){ 'F','i','l','e','N','a','m','e','W',0 }
+# define CFSTR_FILENAMEMAPW \
+ (const WCHAR []){ 'F','i','l','e','N','a','m','e','M','a','p','W',0 }
+# define CFSTR_PRINTERGROUPW \
+ (const WCHAR []){ 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 }
+# define CFSTR_SHELLURLW \
+ (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 }
+# define CFSTR_INETURLW \
+ (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 }
+# define CFSTR_PREFERREDDROPEFFECTW \
+ (const WCHAR []){ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
+# define CFSTR_PERFORMEDDROPEFFECTW \
+ (const WCHAR []){ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
+# define CFSTR_PASTESUCCEEDEDW \
+ (const WCHAR []){ 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 }
+# define CFSTR_INDRAGLOOPW \
+ (const WCHAR []){ 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 }
+# define CFSTR_DRAGCONTEXTW \
+ (const WCHAR []){ 'D','r','a','g','C','o','n','t','e','x','t',0 }
+# define CFSTR_MOUNTEDVOLUMEW \
+ (const WCHAR []){ 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 }
+# define CFSTR_PERSISTEDDATAOBJECTW \
+ (const WCHAR []){ 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 }
+# define CFSTR_TARGETCLSIDW \
+ (const WCHAR []){ 'T','a','r','g','e','t','C','L','S','I','D',0 }
+# define CFSTR_AUTOPLAY_SHELLIDLISTSW \
+ (const WCHAR []){ 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',\
+ ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
+# define CFSTR_LOGICALPERFORMEDDROPEFFECTW \
+ (const WCHAR []){ 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',\
+ ' ','D','r','o','p','E','f','f','e','c','t',0 }
+#elif defined(_MSC_VER)
+# define CFSTR_SHELLIDLISTW L"Shell IDList Array"
+# define CFSTR_SHELLIDLISTOFFSETW L"Shell Object Offsets"
+# define CFSTR_NETRESOURCESW L"Net Resource"
+# define CFSTR_FILEDESCRIPTORW L"FileGroupDescriptorW"
+# define CFSTR_FILECONTENTSW L"FileContents"
+# define CFSTR_FILENAMEW L"FileNameW"
+# define CFSTR_FILENAMEMAPW L"FileNameMapW"
+# define CFSTR_PRINTERGROUPW L"PrinterFriendlyName"
+# define CFSTR_SHELLURLW L"UniformResourceLocator"
+# define CFSTR_INETURLW L"UniformResourceLocatorW"
+# define CFSTR_PREFERREDDROPEFFECTW L"Preferred DropEffect"
+# define CFSTR_PERFORMEDDROPEFFECTW L"Performed DropEffect"
+# define CFSTR_PASTESUCCEEDEDW L"Paste Succeeded"
+# define CFSTR_INDRAGLOOPW L"InShellDragLoop"
+# define CFSTR_DRAGCONTEXTW L"DragContext"
+# define CFSTR_MOUNTEDVOLUMEW L"MountedVolume"
+# define CFSTR_PERSISTEDDATAOBJECTW L"PersistedDataObject"
+# define CFSTR_TARGETCLSIDW L"TargetCLSID"
+# define CFSTR_AUTOPLAY_SHELLIDLISTSW L"Autoplay Enumerated IDList Array"
+# define CFSTR_LOGICALPERFORMEDDROPEFFECTW L"Logical Performed DropEffect"
#else
-#define CFSTR_FILENAME "FileName"
-#define CFSTR_FILENAMEMAP "FileNameMap"
-#define CFSTR_FILEDESCRIPTOR "FileGroupDescriptor"
-#define CFSTR_SHELLURL "UniformResourceLocator"
+static const WCHAR CFSTR_SHELLIDLISTW[] =
+ { 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
+static const WCHAR CFSTR_SHELLIDLISTOFFSETW[] =
+ { 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 };
+static const WCHAR CFSTR_NETRESOURCESW[] =
+ { 'N','e','t',' ','R','e','s','o','u','r','c','e',0 };
+static const WCHAR CFSTR_FILEDESCRIPTORW[] =
+ { 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 };
+static const WCHAR CFSTR_FILECONTENTSW[] =
+ { 'F','i','l','e','C','o','n','t','e','n','t','s',0 };
+static const WCHAR CFSTR_FILENAMEW[] =
+ { 'F','i','l','e','N','a','m','e','W',0 };
+static const WCHAR CFSTR_FILENAMEMAPW[] =
+ { 'F','i','l','e','N','a','m','e','M','a','p','W',0 };
+static const WCHAR CFSTR_PRINTERGROUPW[] =
+ { 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 };
+static const WCHAR CFSTR_SHELLURLW[] =
+ { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 };
+static const WCHAR CFSTR_INETURLW[] =
+ { 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 };
+static const WCHAR CFSTR_PREFERREDDROPEFFECTW[] =
+ { 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
+static const WCHAR CFSTR_PERFORMEDDROPEFFECTW[] =
+ { 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
+static const WCHAR CFSTR_PASTESUCCEEDEDW[] =
+ { 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 };
+static const WCHAR CFSTR_INDRAGLOOPW[] =
+ { 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 };
+static const WCHAR CFSTR_DRAGCONTEXTW[] =
+ { 'D','r','a','g','C','o','n','t','e','x','t',0 };
+static const WCHAR CFSTR_MOUNTEDVOLUMEW[] =
+ { 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 };
+static const WCHAR CFSTR_PERSISTEDDATAOBJECTW[] =
+ { 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 };
+static const WCHAR CFSTR_TARGETCLSIDW[] =
+ { 'T','a','r','g','e','t','C','L','S','I','D',0 };
+static const WCHAR CFSTR_AUTOPLAY_SHELLIDLISTSW[] =
+ { 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',
+ ' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
+static const WCHAR CFSTR_LOGICALPERFORMEDDROPEFFECTW[] =
+ { 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',
+ ' ','D','r','o','p','E','f','f','e','c','t',0 };
#endif
-#define CFSTR_FILENAMEW "FileNameW"
-#define CFSTR_FILENAMEA "FileName"
-#define CFSTR_FILENAMEMAPA "FileNameMap" /* CF_FILENAMEMAPA */
-#define CFSTR_FILENAMEMAPW "FileNameMapW" /* CF_FILENAMEMAPW */
+#define CFSTR_SHELLIDLIST WINELIB_NAME_AW(CFSTR_SHELLIDLIST)
+#define CFSTR_SHELLIDLISTOFFSET WINELIB_NAME_AW(CFSTR_SHELLIDLISTOFFSET)
+#define CFSTR_NETRESOURCES WINELIB_NAME_AW(CFSTR_NETRESOURCES)
+#define CFSTR_FILEDESCRIPTOR WINELIB_NAME_AW(CFSTR_FILEDESCRIPTOR)
+#define CFSTR_FILECONTENTS WINELIB_NAME_AW(CFSTR_FILECONTENTS)
+#define CFSTR_FILENAME WINELIB_NAME_AW(CFSTR_FILENAME)
+#define CFSTR_FILENAMEMAP WINELIB_NAME_AW(CFSTR_FILENAMEMAP)
+#define CFSTR_PRINTERGROUP WINELIB_NAME_AW(CFSTR_PRINTERGROUP)
+#define CFSTR_SHELLURL WINELIB_NAME_AW(CFSTR_SHELLURL)
+#define CFSTR_INETURL WINELIB_NAME_AW(CFSTR_INETURL)
+#define CFSTR_PREFERREDDROPEFFECT WINELIB_NAME_AW(CFSTR_PREFERREDDROPEFFECT)
+#define CFSTR_PERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_PERFORMEDDROPEFFECT)
+#define CFSTR_PASTESUCCEEDED WINELIB_NAME_AW(CFSTR_PASTESUCCEEDED)
+#define CFSTR_INDRAGLOOP WINELIB_NAME_AW(CFSTR_INDRAGLOOP)
+#define CFSTR_DRAGCONTEXT WINELIB_NAME_AW(CFSTR_DRAGCONTEXT)
+#define CFSTR_MOUNTEDVOLUME WINELIB_NAME_AW(CFSTR_MOUNTEDVOLUME)
+#define CFSTR_PERSISTEDDATAOBJECT WINELIB_NAME_AW(CFSTR_PERSISTEDDATAOBJECT)
+#define CFSTR_TARGETCLSID WINELIB_NAME_AW(CFSTR_TARGETCLSID)
+#define CFSTR_AUTOPLAY_SHELLIDLISTS WINELIB_NAME_AW(CFSTR_AUTOPLAY_SHELLIDLISTS)
+#define CFSTR_LOGICALPERFORMEDDROPEFFECT WINELIB_NAME_AW(CFSTR_LOGICALPERFORMEDDROPEFFECT)
-#define CFSTR_PRINTERGROUP "PrinterFriendlyName" /* CF_PRINTERS */
-#define CFSTR_PREFERREDDROPEFFECT "Preferred DropEffect"
-#define CFSTR_PERFORMEDDROPEFFECT "Performed DropEffect"
-#define CFSTR_PASTESUCCEEDED "Paste Succeeded"
-#define CFSTR_INDRAGLOOP "InShellDragLoop"
+typedef struct
+{ UINT cidl;
+ UINT aoffset[1];
+} CIDA, *LPIDA;
/************************************************************************
* IShellView interface
*/
-#define SV_CLASS_NAME ("SHELLDLL_DefView")
-
#define FCIDM_SHVIEWFIRST 0x0000
/* undocumented */
#define FCIDM_SHVIEW_ARRANGE 0x7001
#define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1)
-VOID WINAPI SHSetInstanceExplorer(LPUNKNOWN);
-BOOL WINAPI IsUserAnAdmin(VOID);
-
/****************************************************************************
* IShellIcon interface
*/
-#undef INTERFACE
-#define INTERFACE IShellFolderViewCB
-DECLARE_INTERFACE_(IShellFolderViewCB, IUnknown)
-{
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
- STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE;
-};
-#undef INTERFACE
-
#define INTERFACE IShellIcon
DECLARE_INTERFACE_(IShellIcon,IUnknown)
{
#define IACList_Expand(p,a) (p)->lpVtbl->Expand(p,a)
#endif
+/* IACList2 interface */
+#define INTERFACE IACList2
+DECLARE_INTERFACE_(IACList2,IACList)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IACList methods ***/
+ STDMETHOD(Expand)(THIS_ LPCOLESTR str) PURE;
+ /*** IACList2 methods ***/
+ STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE;
+ STDMETHOD(GetOptions)(THIS_ DWORD* pdwFlag) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IACList2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IACList2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IACList2_Release(p) (p)->lpVtbl->Release(p)
+/*** IACList2 methods ***/
+#define IACList2_GetOptions(p,a) (p)->lpVtbl->GetOptions(p,a)
+#define IACList2_SetOptions(p,a) (p)->lpVtbl->SetOptions(p,a)
+#endif
+
+/****************************************************************************
+ * IShellFolderViewCB interface
+ */
+
+#define INTERFACE IShellFolderViewCB
+DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IShellFolderViewCB methods ***/
+ STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IShellFolderViewCB_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IShellFolderViewCB_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IShellFolderViewCB_Release(p) (p)->lpVtbl->Release(p)
+/*** IShellFolderViewCB methods ***/
+#define IShellFolderViewCB_MessageSFVCB(p,a,b,c) (p)->lpVtbl->MessageSFVCB(p,a,b,c)
+#endif
+
/* IProgressDialog interface */
#define PROGDLG_NORMAL 0x00000000
#define PROGDLG_MODAL 0x00000001
/* IDeskBarClient interface */
#define INTERFACE IDeskBarClient
-DECLARE_INTERFACE_(IDeskBarClient,IUnknown)
+DECLARE_INTERFACE_(IDeskBarClient,IOleWindow)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
void WINAPI SHAddToRecentDocs(UINT,LPCVOID);
-HANDLE WINAPI SHChangeNotification_Lock(
- HANDLE hChange,
- DWORD dwProcessId,
- LPITEMIDLIST **lppidls,
- LPLONG lpwEventId);
-BOOL WINAPI SHChangeNotification_Unlock ( HANDLE hLock);
-
-
-
/****************************************************************************
* SHBrowseForFolder API
*/
/* message from browser */
#define BFFM_INITIALIZED 1
#define BFFM_SELCHANGED 2
-#define BFFM_VALIDATEFAILEDA 3 /* lParam:szPath ret:1(cont),0(EndDialog) */
-#define BFFM_VALIDATEFAILEDW 4 /* lParam:wzPath ret:1(cont),0(EndDialog) */
+#define BFFM_VALIDATEFAILEDA 3
+#define BFFM_VALIDATEFAILEDW 4
+#define BFFM_IUNKNOWN 5
/* messages to browser */
#define BFFM_SETSTATUSTEXTA (WM_USER+100)
#define SFVM_GET_WEBVIEW_THEME 86 /* undocumented */
#define SFVM_GETDEFERREDVIEWSETTINGS 92 /* undocumented */
-#define SHPPFW_NONE 0
-#define SHPPFW_DIRCREATE 1
-#define SHPPFW_DEFAULT SHPPFW_DIRCREATE
-#define SHPPFW_ASKDIRCREATE 2
-#define SHPPFW_IGNOREFILENAME 4
-#define SHPPFW_NOWRITECHECK 8
-
-/* Types and definitions for the SFM_* parameters */
-#include <pshpack8.h>
typedef struct _SFV_CREATE
{
UINT cbSize;
IShellFolderViewCB *psfvcb;
} SFV_CREATE;
+HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pscfv, IShellView **ppsv);
+
+/* Types and definitions for the SFM_* parameters */
+#include <pshpack8.h>
#define QCMINFO_PLACE_BEFORE 0
#define QCMINFO_PLACE_AFTER 1
HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
#define SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
-PIDLIST_ABSOLUTE WINAPI SHCloneSpecialIDList(HWND hwnd, int csidl, BOOL fCreate);
+LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND hwnd, int csidl, BOOL fCreate);
BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate);
BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate);
#define SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ;
-/**********************************************************************
- * SHCreateShellFolderView ()
- */
-
-HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv);
-
/**********************************************************************
* SHGetSetSettings ()
*/
SLDF_NO_PIDL_ALIAS = 0x00008000,
SLDF_FORCE_UNCNAME = 0x00010000,
SLDF_RUN_WITH_SHIMLAYER = 0x00020000,
+ SLDF_FORCE_NO_LINKTRACK = 0x00040000,
+ SLDF_ENABLE_TARGET_METADATA = 0x00080000,
+ SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING = 0x00200000,
+ SLDF_VALID = 0x003ff7ff,
SLDF_RESERVED = 0x80000000,
} SHELL_LINK_DATA_FLAGS;
typedef struct {
DATABLOCK_HEADER dbh;
- WORD wFillAttribute;
- WORD wPopupFillAttribute;
- COORD dwScreenBufferSize;
- COORD dwWindowSize;
- COORD dwWindowOrigin;
- DWORD nFont;
- DWORD nInputBufferSize;
- COORD dwFontSize;
- UINT uFontFamily;
- UINT uFontWeight;
- WCHAR FaceName[LF_FACESIZE];
- UINT uCursorSize;
- BOOL bFullScreen;
- BOOL bQuickEdit;
- BOOL bInsertMode;
- BOOL bAutoPosition;
- UINT uHistoryBufferSize;
- UINT uNumberOfHistoryBuffers;
- BOOL bHistoryNoDup;
- COLORREF ColorTable[16];
-} NT_CONSOLE_PROPS, *LPNT_CONSOLE_PROPS;
-
-typedef struct {
- DATABLOCK_HEADER dbh;
- UINT uCodePage;
-} NT_FE_CONSOLE_PROPS, *LPNT_FE_CONSOLE_PROPS;
-
-typedef struct {
-
-#ifdef __cplusplus
- DATABLOCK_HEADER dbh;
-#else
- DWORD cbSize;
- DWORD dwSignature;
-#endif
CHAR szDarwinID[MAX_PATH];
WCHAR szwDarwinID[MAX_PATH];
} EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK;
DWORD cbOffset;
} EXP_SPECIAL_FOLDER, *LPEXP_SPECIAL_FOLDER;
+typedef struct {
+ DWORD cbSize;
+ DWORD dwSignature;
+ BYTE abPropertyStorage[1];
+} EXP_PROPERTYSTORAGE;
+
#define EXP_SZ_LINK_SIG 0xa0000001
#define NT_CONSOLE_PROPS_SIG 0xa0000002
#define NT_FE_CONSOLE_PROPS_SIG 0xa0000004
#define EXP_SPECIAL_FOLDER_SIG 0xa0000005
#define EXP_DARWIN_ID_SIG 0xa0000006
-#define EXP_LOGO3_ID_SIG 0xa0000007
#define EXP_SZ_ICON_SIG 0xa0000007
+#define EXP_LOGO3_ID_SIG EXP_SZ_ICON_SIG /* Old SDKs only */
+#define EXP_PROPERTYSTORAGE_SIG 0xa0000009
typedef struct _SHChangeDWORDAsIDList {
USHORT cb;
ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, UINT wMsg,
int cEntries, const SHChangeNotifyEntry *pshcne);
BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID);
+HANDLE WINAPI SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dwProcessId,
+ LPITEMIDLIST **pppidl, LONG *plEvent);
BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
HRESULT WINAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST * ppidlReal);
* SHCreateDirectory API
*/
DWORD WINAPI SHCreateDirectory(HWND, LPCWSTR);
-int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, const SECURITY_ATTRIBUTES*);
-int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, const SECURITY_ATTRIBUTES*);
+int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
+int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES);
+#define SHCreateDirectoryEx WINELIB_NAME_AW(SHCreateDirectoryEx)
/****************************************************************************
* SHGetSpecialFolderLocation API
#define CSIDL_SENDTO 0x0009
#define CSIDL_BITBUCKET 0x000a
#define CSIDL_STARTMENU 0x000b
-#define CSIDL_MYDOCUMENTS 0x000c
+#define CSIDL_MYDOCUMENTS CSIDL_PERSONAL
#define CSIDL_MYMUSIC 0x000d
#define CSIDL_MYVIDEO 0x000e
#define CSIDL_DESKTOPDIRECTORY 0x0010
#define CSIDL_CDBURN_AREA 0x003b
#define CSIDL_COMPUTERSNEARME 0x003d
#define CSIDL_PROFILES 0x003e
+#define CSIDL_FOLDER_MASK 0x00ff
#define CSIDL_FLAG_PER_USER_INIT 0x0800
#define CSIDL_FLAG_NO_ALIAS 0x1000
#define CSIDL_FLAG_DONT_VERIFY 0x4000
/****************************************************************************
* Path Manipulation Routines
*/
+
+/* PathProcessCommand flags */
+#define PPCF_ADDQUOTES 0x01
+#define PPCF_INCLUDEARGS 0x02
+#define PPCF_ADDARGUMENTS 0x03
+#define PPCF_NODIRECTORIES 0x10
+#define PPCF_DONTRESOLVE 0x20
+#define PPCF_FORCEQUALIFY 0x40
+#define PPCF_LONGESTPOSSIBLE 0x80
+
+/* PathResolve flags */
+#define PRF_VERIFYEXISTS 0x01
+#define PRF_EXECUTABLE 0x02
+#define PRF_TRYPROGRAMEXTENSIONS 0x03
+#define PRF_FIRSTDIRDEF 0x04
+#define PRF_DONTFINDLINK 0x08
+
VOID WINAPI PathGetShortPath(LPWSTR pszPath);
LONG WINAPI PathProcessCommand(LPCWSTR, LPWSTR, int, DWORD);
+BOOL WINAPI PathYetAnotherMakeUniqueName(LPWSTR, LPCWSTR, LPCWSTR, LPCWSTR);
/****************************************************************************
* Drag And Drop Routines
typedef HRESULT (CALLBACK * LPFNDFMCALLBACK)(IShellFolder*,HWND,IDataObject*,UINT,WPARAM,LPARAM);
HRESULT WINAPI CDefFolderMenu_Create2(LPCITEMIDLIST,HWND,UINT,LPCITEMIDLIST*,IShellFolder*,LPFNDFMCALLBACK,UINT,const HKEY *,IContextMenu **);
-
/****************************************************************************
* SHCreateDefaultContextMenu API
*/
SHCreateDefaultExtractIcon(
REFIID riid,
void **ppv);
-
/****************************************************************************
* SHCreateDataObject API
*/
const OPENASINFO *poainfo
);
-/*****************************************************************************
- * IInitializeObject interface
- */
-#undef INTERFACE
-#define INTERFACE IInitializeObject
+#define INTERFACE IShellIconOverlayIdentifier
-DECLARE_INTERFACE_(IInitializeObject, IUnknown)//, "4622AD16-FF23-11d0-8D34-00A0C90F2719")
+DEFINE_GUID(IID_IShellIconOverlayIdentifier, 0x0c6c4200L, 0xc589, 0x11d0, 0x99, 0x9a, 0x00, 0xc0, 0x4f, 0xd6, 0x55, 0xe1);
+DECLARE_INTERFACE_(IShellIconOverlayIdentifier, IUnknown)
{
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
- STDMETHOD(Initialize)(THIS) PURE;
+ STDMETHOD (IsMemberOf)(THIS_ LPCWSTR pwszPath, DWORD dwAttrib) PURE;
+ STDMETHOD (GetOverlayInfo)(THIS_ LPWSTR pwszIconFile, int cchMax, int * pIndex, DWORD * pdwFlags) PURE;
+ STDMETHOD (GetPriority)(THIS_ int * pIPriority) PURE;
};
+
+#define ISIOI_ICONFILE 0x00000001
+#define ISIOI_ICONINDEX 0x00000002
+
#undef INTERFACE
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IInitializeObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IInitializeObject_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IInitializeObject_Release(T) (T)->lpVtbl->Release(T)
-#define IInitializeObject_Initialize(T) (T)->lpVtbl->Initialize(T)
-#endif
+/****************************************************************************
+ * Travel log
+ */
+
+#define TLOG_BACK -1
+#define TLOG_FORE 1
+
+#define TLMENUF_INCLUDECURRENT 0x00000001
+#define TLMENUF_CHECKCURRENT (TLMENUF_INCLUDECURRENT | 0x00000002)
+#define TLMENUF_BACK 0x00000010 // Default
+#define TLMENUF_FORE 0x00000020
+#define TLMENUF_BACKANDFORTH (TLMENUF_BACK | TLMENUF_FORE | TLMENUF_INCLUDECURRENT)
/*****************************************************************************
- * IBanneredBar interface
+ * IDockingWindowSite interface
*/
-enum
-{
- BMICON_LARGE = 0,
- BMICON_SMALL
-};
-#define INTERFACE IBanneredBar
-DECLARE_INTERFACE_(IBanneredBar, IUnknown)//, "596A9A94-013E-11d1-8D34-00A0C90F2719")
+#define INTERFACE IDockingWindowSite
+DECLARE_INTERFACE_(IDockingWindowSite, IOleWindow)
{
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
- STDMETHOD_(ULONG,Release) (THIS) PURE;
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(SetIconSize)(THIS_ DWORD iIcon) PURE;
- STDMETHOD(GetIconSize)(THIS_ DWORD* piIcon) PURE;
- STDMETHOD(SetBitmap)(THIS_ HBITMAP hBitmap) PURE;
- STDMETHOD(GetBitmap)(THIS_ HBITMAP* phBitmap) PURE;
+ // *** IOleWindow methods ***
+ STDMETHOD(GetWindow)(THIS_ HWND *lphwnd) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE;
+ // *** IDockingWindowSite methods ***
+ STDMETHOD(GetBorderDW)(THIS_ IUnknown *punkObj, LPRECT prcBorder) PURE;
+ STDMETHOD(RequestBorderSpaceDW)(THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE;
+ STDMETHOD(SetBorderSpaceDW)(THIS_ IUnknown *punkObj, LPCBORDERWIDTHS pbw) PURE;
};
#undef INTERFACE
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IBanneredBar_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IBanneredBar_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IBanneredBar_Release(T) (T)->lpVtbl->Release(T)
-#define IBanneredBar_SetIconSize(T,a) (T)->lpVtbl->SetIconSize(T,a)
-#define IBanneredBar_GetIconSize(T,a) (T)->lpVtbl->GetIconSize(T,a)
-#define IBanneredBar_SetBitmap(T,a) (T)->lpVtbl->SetBitmap(T,a)
-#define IBanneredBar_GetBitmap(T,a) (T)->lpVtbl->GetBitmap(T,a)
-#endif
#ifdef __cplusplus
} /* extern "C" */