diff options
Diffstat (limited to 'src/VBox/Devices/Graphics/shaderlib/wine/include/shobjidl.idl')
-rw-r--r-- | src/VBox/Devices/Graphics/shaderlib/wine/include/shobjidl.idl | 3408 |
1 files changed, 3408 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/shaderlib/wine/include/shobjidl.idl b/src/VBox/Devices/Graphics/shaderlib/wine/include/shobjidl.idl new file mode 100644 index 00000000..8e7f041a --- /dev/null +++ b/src/VBox/Devices/Graphics/shaderlib/wine/include/shobjidl.idl @@ -0,0 +1,3408 @@ +/* + * COM interfaces for shell objects + * + * Copyright (C) 1999 Juergen Schmied + * Copyright (C) 2003 Alexandre Julliard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + +import "objidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +import "docobj.idl"; +import "shtypes.idl"; +import "servprov.idl"; +import "comcat.idl"; +import "propidl.idl"; +/* FIXME: import "prsht.idl";*/ +import "msxml.idl"; +import "wtypes.idl"; +import "propsys.idl"; +import "objectarray.idl"; +/* FIXME: import "structuredquery.idl"; */ + +cpp_quote("/* FIXME: #include <sherrors.h> */") + + +/***************************************************************************** + * IPersistFolder interface + */ +[ + object, + uuid(000214ea-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IPersistFolder : IPersist +{ + typedef IPersistFolder *LPPERSISTFOLDER; + + HRESULT Initialize( [in] LPCITEMIDLIST pidl ); +} + + +/***************************************************************************** + * IPersistFolder2 interface + */ +[ + object, + uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f), + pointer_default(unique) +] +interface IPersistFolder2 : IPersistFolder +{ + typedef IPersistFolder2 *LPPERSISTFOLDER2; + + HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl ); +} + + +/***************************************************************************** + * IPersistIDList interface + */ +[ + object, + uuid(1079acfc-29bd-11d3-8e0d-00c04f6837d5), + pointer_default(unique) +] +interface IPersistIDList : IPersist +{ + HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); + HRESULT GetIDList( [out] LPITEMIDLIST *ppidl ); +} + + +/***************************************************************************** + * IEnumIDList interface + */ +[ + object, + uuid(000214f2-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IEnumIDList : IUnknown +{ + typedef IEnumIDList *LPENUMIDLIST; + + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( [in] ULONG celt ); + HRESULT Reset(); + HRESULT Clone( [out] IEnumIDList **ppenum ); +} + +/***************************************************************************** + * IShellPropSheetExt interface + */ +cpp_quote("#if 0") + typedef LPARAM LPFNSVADDPROPSHEETPAGE; +cpp_quote("#else") +cpp_quote("#include <prsht.h>") +cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;") +cpp_quote("#endif") + +[ + object, + uuid(000214E9-0000-0000-C000-000000000046), + pointer_default(unique), + local +] +interface IShellPropSheetExt : IUnknown +{ + enum tagSHELLPROPSHEETEXTPAGEID { + EXPPS_FILETYPES = 0x1 + }; + + typedef UINT EXPPS; + + HRESULT AddPages( + [in] LPFNSVADDPROPSHEETPAGE pfnAddPage, + [in] LPARAM lParam); + HRESULT ReplacePage( + [in] EXPPS uPageID, + [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith, + [in] LPARAM lParam); +} +typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT; + +/***************************************************************************** + * IShellFolder interface + */ +[ + object, + uuid(000214e6-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellFolder : IUnknown +{ + typedef IShellFolder * LPSHELLFOLDER; + + typedef enum tagSHGDN + { + SHGDN_NORMAL = 0, + SHGDN_INFOLDER = 1, + SHGDN_FOREDITING = 0x1000, + SHGDN_INCLUDE_NONFILESYS = 0x2000, + SHGDN_FORADDRESSBAR = 0x4000, + SHGDN_FORPARSING = 0x8000 + } SHGNO; + + typedef DWORD SHGDNF; + + enum tagSHCONTF + { + SHCONTF_FOLDERS = 32, + SHCONTF_NONFOLDERS = 64, + SHCONTF_INCLUDEHIDDEN = 128, + SHCONTF_INIT_ON_FIRST_NEXT = 256, + SHCONTF_NETPRINTERSRCH = 512, + SHCONTF_SHAREABLE = 1024, + SHCONTF_STORAGE = 2048 + }; + + typedef DWORD SHCONTF; + + cpp_quote("#define SFGAO_CANCOPY DROPEFFECT_COPY") + cpp_quote("#define SFGAO_CANMOVE DROPEFFECT_MOVE") + cpp_quote("#define SFGAO_CANLINK DROPEFFECT_LINK") + cpp_quote("#define SFGAO_STORAGE 0x00000008L") + cpp_quote("#define SFGAO_CANRENAME 0x00000010L") + cpp_quote("#define SFGAO_CANDELETE 0x00000020L") + cpp_quote("#define SFGAO_HASPROPSHEET 0x00000040L") + cpp_quote("#define SFGAO_DROPTARGET 0x00000100L") + cpp_quote("#define SFGAO_CAPABILITYMASK 0x00000177L") + cpp_quote("#define SFGAO_ENCRYPTED 0x00002000L") + cpp_quote("#define SFGAO_ISSLOW 0x00004000L") + cpp_quote("#define SFGAO_GHOSTED 0x00008000L") + cpp_quote("#define SFGAO_LINK 0x00010000L") + cpp_quote("#define SFGAO_SHARE 0x00020000L") + cpp_quote("#define SFGAO_READONLY 0x00040000L") + cpp_quote("#define SFGAO_HIDDEN 0x00080000L") + cpp_quote("#define SFGAO_DISPLAYATTRMASK 0x000FC000L") + cpp_quote("#define SFGAO_FILESYSANCESTOR 0x10000000L") + cpp_quote("#define SFGAO_FOLDER 0x20000000L") + cpp_quote("#define SFGAO_FILESYSTEM 0x40000000L") + cpp_quote("#define SFGAO_HASSUBFOLDER 0x80000000L") + cpp_quote("#define SFGAO_CONTENTSMASK 0x80000000L") + cpp_quote("#define SFGAO_VALIDATE 0x01000000L") + cpp_quote("#define SFGAO_REMOVABLE 0x02000000L") + cpp_quote("#define SFGAO_COMPRESSED 0x04000000L") + cpp_quote("#define SFGAO_BROWSABLE 0x08000000L") + cpp_quote("#define SFGAO_NONENUMERATED 0x00100000L") + cpp_quote("#define SFGAO_NEWCONTENT 0x00200000L") + cpp_quote("#define SFGAO_STREAM 0x00400000L") + cpp_quote("#define SFGAO_STORAGEANCESTOR 0x00800000L") + + typedef ULONG SFGAOF; + + HRESULT ParseDisplayName( + [in] HWND hwndOwner, + [in] LPBC pbcReserved, + [in, string] LPOLESTR lpszDisplayName, + [out] ULONG *pchEaten, + [out] LPITEMIDLIST *ppidl, + [in, out, unique] ULONG *pdwAttributes); + + HRESULT EnumObjects( + [in] HWND hwndOwner, + [in] SHCONTF grfFlags, + [out] IEnumIDList **ppenumIDList); + + HRESULT BindToObject( + [in] LPCITEMIDLIST pidl, + [in] LPBC pbcReserved, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvOut); + + HRESULT BindToStorage( + [in] LPCITEMIDLIST pidl, + [in] LPBC pbcReserved, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvObj); + + HRESULT CompareIDs( + [in] LPARAM lParam, + [in] LPCITEMIDLIST pidl1, + [in] LPCITEMIDLIST pidl2); + + HRESULT CreateViewObject( + [in] HWND hwndOwner, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvOut); + + HRESULT GetAttributesOf( + [in] UINT cidl, + [in, size_is(cidl)] LPCITEMIDLIST *apidl, + [in, out] SFGAOF *rgfInOut); + + HRESULT GetUIObjectOf( + [in] HWND hwndOwner, + [in] UINT cidl, + [in, size_is(cidl)] LPCITEMIDLIST *apidl, + [in] REFIID riid, + [in, out, unique] UINT *prgfInOut, + [out, iid_is(riid)] void **ppvOut); + + HRESULT GetDisplayNameOf( + [in] LPCITEMIDLIST pidl, + [in] SHGDNF uFlags, + [out] STRRET *lpName); + + HRESULT SetNameOf( + [in] HWND hwnd, + [in] LPCITEMIDLIST pidl, + [in, string] LPCOLESTR lpszName, + [in] SHGDNF uFlags, + [out] LPITEMIDLIST *ppidlOut); +} + + +/***************************************************************************** + * IEnumExtraSearch interface + */ +[ + object, + uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13), + pointer_default(unique) +] +interface IEnumExtraSearch : IUnknown +{ + typedef IEnumExtraSearch *LPENUMEXTRASEARCH; + + typedef struct + { + GUID guidSearch; + WCHAR wszFriendlyName[80]; + /* + *WCHAR wszMenuText[80]; + *WCHAR wszHelpText[MAX_PATH]; + */ + WCHAR wszUrl[2084]; + /* + *WCHAR wszIcon[MAX_PATH+10]; + *WCHAR wszGreyIcon[MAX_PATH+10]; + *WCHAR wszClrIcon[MAX_PATH+10]; + */ + } EXTRASEARCH, *LPEXTRASEARCH; + + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( [in] ULONG celt ); + HRESULT Reset(); + HRESULT Clone( [out] IEnumExtraSearch **ppenum ); +} + + +/***************************************************************************** + * IShellFolder2 interface + */ +[ + object, + uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1), + pointer_default(unique) +] +interface IShellFolder2 : IShellFolder +{ + typedef struct + { + GUID fmtid; + DWORD pid; + } SHCOLUMNID, *LPSHCOLUMNID; + typedef const SHCOLUMNID *LPCSHCOLUMNID; + + HRESULT GetDefaultSearchGUID( [out] GUID *lpguid ); + HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum ); + HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay ); + HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags ); + HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv); + HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd); + HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid ); +} + +/***************************************************************************** + * IShellItem interface + */ +[ + object, + uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe), + pointer_default(unique) +] +interface IShellItem : IUnknown +{ + typedef [v1_enum] enum { + SIGDN_NORMALDISPLAY = 0, + SIGDN_PARENTRELATIVEPARSING = 0x80018001, + SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000, + SIGDN_PARENTRELATIVEEDITING = 0x80031001, + SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000, + SIGDN_FILESYSPATH = 0x80058000, + SIGDN_URL = 0x80068000, + SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001, + SIGDN_PARENTRELATIVE = 0x80080001 + } SIGDN; /* & 0xFFFF => SHGDN */ + + [v1_enum] enum _SICHINTF + { + SICHINT_DISPLAY = 0x00000000, + SICHINT_CANONICAL = 0x10000000, + SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000, + SICHINT_ALLFIELDS = 0x80000000 + }; + typedef DWORD SICHINTF; + + HRESULT BindToHandler( + [in] IBindCtx *pbc, + [in] REFGUID rbhid, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvOut); + + HRESULT GetParent( [out] IShellItem **ppsi ); + + HRESULT GetDisplayName( + [in] SIGDN sigdnName, + [out] LPWSTR *ppszName); + + HRESULT GetAttributes( + [in] SFGAOF sfgaoMask, + [out] SFGAOF *psfgaoAttribs); + + HRESULT Compare( + [in] IShellItem *psi, + [in] SICHINTF hint, + [out] int *piOrder); +} + +/***************************************************************************** + * IShellItem2 interface + */ +[ + object, + uuid(7E9FB0D3-919F-4307-AB2E-9B1860310C93), + pointer_default(unique) +] +interface IShellItem2 : IShellItem +{ + HRESULT GetPropertyStore( + [in] GETPROPERTYSTOREFLAGS flags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPropertyStoreWithCreateObject( + [in] GETPROPERTYSTOREFLAGS flags, + [in] IUnknown *punkCreateObject, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPropertyStoreForKeys( + [in, size_is(cKeys)] const PROPERTYKEY *rgKeys, + [in] UINT cKeys, + [in] GETPROPERTYSTOREFLAGS flags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPropertyDescriptionList( + [in] REFPROPERTYKEY keyType, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT Update( + [in, unique] IBindCtx *pbc); + + HRESULT GetProperty( + [in] REFPROPERTYKEY key, + [out] PROPVARIANT *ppropvar); + + HRESULT GetCLSID( + [in] REFPROPERTYKEY key, + [out] CLSID *pclsid); + + HRESULT GetFileTime ( + [in] REFPROPERTYKEY key, + [out] FILETIME *pft); + + HRESULT GetInt32( + [in] REFPROPERTYKEY key, + [out] int *pi); + + HRESULT GetString( + [in] REFPROPERTYKEY key, + [out, string] LPWSTR *ppsz); + + HRESULT GetUInt32( + [in] REFPROPERTYKEY key, + [out] ULONG *pui); + + HRESULT GetUInt64( + [in] REFPROPERTYKEY key, + [out] ULONGLONG *pull); + + HRESULT GetBool( + [in] REFPROPERTYKEY key, + [out] BOOL *pf); +} + +typedef enum tagNWMF { + NWMF_UNLOADING = 0x0001, + NWMF_USERINITED = 0x0002, + NWMF_FIRST = 0x0004, + NWMF_OVERRIDEKEY = 0x0008, + NWMF_SHOWHELP = 0x0010, + NWMF_HTMLDIALOG = 0x0020, + NWMF_FROMDIALOGCHILD = 0x0040, + NWMF_USERREQUESTED = 0x0080, + NWMF_USERALLOWED = 0x0100 +} NWMF; + +[ + uuid(d2bc4c84-3f72-4a52-a604-7bcbf3982cbb), + object, + pointer_default(unique) +] +interface INewWindowManager : IUnknown +{ + HRESULT EvaluateNewWindow( + [in, string] LPCWSTR pszUrl, + [in, string] LPCWSTR pszName, + [in, string] LPCWSTR pszUrlContext, + [in, string] LPCWSTR pszFeatures, + [in] BOOL fReplace, + [in] DWORD dwFlags, + [in] DWORD dwUserActionTime); +} + +cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager") + +/***************************************************************************** + * IEnumShellItems interface + */ +[ + object, + uuid(70629033-E363-4A28-A567-0DB78006E6D7), + pointer_default(unique) +] +interface IEnumShellItems : IUnknown +{ + [local] HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumShellItems **ppenum); +} + +/***************************************************************************** + * IShellItemArray interface + */ +[ + object, + uuid(B63EA76D-1F85-456F-A19C-48159EFA858B), + pointer_default(unique) +] +interface IShellItemArray : IUnknown +{ + typedef [v1_enum] enum SIATTRIBFLAGS { + SIATTRIBFLAGS_AND = 0x0001, + SIATTRIBFLAGS_OR = 0x0002, + SIATTRIBFLAGS_APPCOMPAT = 0x0003, + SIATTRIBFLAGS_MASK = 0x0003, + SIATTRIBFLAGS_ALLITEMS = 0x4000 + } SIATTRIBFLAGS; + cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)") + + HRESULT BindToHandler( + [in, unique] IBindCtx *pbc, + [in] REFGUID bhid, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvOut); + + HRESULT GetPropertyStore( + [in] GETPROPERTYSTOREFLAGS flags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPropertyDescriptionList( + [in] REFPROPERTYKEY keyType, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetAttributes( + [in] SIATTRIBFLAGS AttribFlags, + [in] SFGAOF sfgaoMask, + [out] SFGAOF *psfgaoAttribs); + + HRESULT GetCount( + [out] DWORD *pdwNumItems); + + HRESULT GetItemAt( + [in] DWORD dwIndex, + [out] IShellItem **ppsi); + + HRESULT EnumItems( + [out] IEnumShellItems **ppenumShellItems); + +} + +typedef [v1_enum] enum DATAOBJ_GET_ITEM_FLAGS +{ + DOGIF_DEFAULT = 0x0, + DOGIF_TRAVERSE_LINK = 0x1, + DOGIF_NO_HDROP = 0x2, + DOGIF_NO_URL = 0x4, + DOGIF_ONLY_IF_ONE = 0x8 +} DATAOBJ_GET_ITEM_FLAGS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DATAOBJ_GET_ITEM_FLAGS)") + +cpp_quote("HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName);") +cpp_quote("HRESULT WINAPI SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHCreateItemFromIDList(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl);") +cpp_quote("HRESULT WINAPI SHGetItemFromObject(IUnknown *punk, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, IShellFolder* psf, UINT cidl, PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray);") +cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromDataObject(IDataObject *pdo, REFIID riid, void **ppv);") + +/***************************************************************************** + * IShellItemFilter interface + */ +[ + object, + uuid(2659B475-EEB8-48B7-8F07-B378810F48CF), + pointer_default(unique) +] +interface IShellItemFilter : IUnknown +{ + HRESULT IncludeItem( + [in] IShellItem *psi); + + HRESULT GetEnumFlagsForItem( + [in] IShellItem *psi, + [out] SHCONTF *pgrfFlags); +} + +/***************************************************************************** + * FOLDERSETTINGS + */ +typedef char *LPVIEWSETTINGS; + +typedef enum +{ + FWF_AUTOARRANGE = 0x00000001, + FWF_ABBREVIATEDNAMES = 0x00000002, + FWF_SNAPTOGRID = 0x00000004, + FWF_OWNERDATA = 0x00000008, + FWF_BESTFITWINDOW = 0x00000010, + FWF_DESKTOP = 0x00000020, + FWF_SINGLESEL = 0x00000040, + FWF_NOSUBFOLDERS = 0x00000080, + FWF_TRANSPARENT = 0x00000100, + FWF_NOCLIENTEDGE = 0x00000200, + FWF_NOSCROLL = 0x00000400, + FWF_ALIGNLEFT = 0x00000800, + FWF_NOICONS = 0x00001000, + FWF_SHOWSELALWAYS = 0x00002000, + FWF_NOVISIBLE = 0x00004000, + FWF_SINGLECLICKACTIVATE = 0x00008000, + FWF_NOWEBVIEW = 0x00010000, + FWF_HIDEFILENAMES = 0x00020000, + FWF_CHECKSELECT = 0x00040000, + FWF_NOENUMREFRESH = 0x00080000, + FWF_NOGROUPING = 0x00100000, + FWF_FULLROWSELECT = 0x00200000, + FWF_NOFILTERS = 0x00400000, + FWF_NOCOLUMNHEADER = 0x00800000, + FWF_NOHEADERINALLVIEWS = 0x01000000, + FWF_EXTENDEDTILES = 0x02000000, + FWF_TRICHECKSELECT = 0x04000000, + FWF_AUTOCHECKSELECT = 0x08000000, + FWF_NOBROWSERVIEWSTATE = 0x10000000, + FWF_SUBSETGROUPS = 0x20000000, + FWF_USESEARCHFOLDER = 0x40000000, + FWF_ALLOWRTLREADING = 0x80000000 +} FOLDERFLAGS; + +typedef enum +{ + FVM_AUTO =-1, + FVM_ICON = 1, + FVM_FIRST = FVM_ICON, + FVM_SMALLICON = 2, + FVM_LIST = 3, + FVM_DETAILS = 4, + FVM_THUMBNAIL = 5, + FVM_TILE = 6, + FVM_THUMBSTRIP = 7, + FVM_CONTENT = 8, + FVM_LAST = FVM_CONTENT +} FOLDERVIEWMODE; + +typedef struct +{ + UINT ViewMode; + UINT fFlags; +} FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS; +typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS; + +/***************************************************************************** + * IShellIcon interface + */ +[ + uuid(000214e5-0000-0000-c000-000000000046), + object, + pointer_default(unique) +] +interface IShellIcon : IUnknown +{ + HRESULT GetIconOf( + [in] PCUITEMID_CHILD pidl, + [in] UINT flags, + [out] int *pIconIndex); +} + +/***************************************************************************** + * IShellView interface + */ +interface IShellBrowser; /* forward declaration */ +[ + object, + uuid(000214e3-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellView : IOleWindow +{ + typedef IShellView *LPSHELLVIEW; + + cpp_quote("#define SVSI_DESELECT 0x00000000") + cpp_quote("#define SVSI_SELECT 0x00000001") + cpp_quote("#define SVSI_EDIT 0x00000003") + cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004") + cpp_quote("#define SVSI_ENSUREVISIBLE 0x00000008") + cpp_quote("#define SVSI_FOCUSED 0x00000010") + cpp_quote("#define SVSI_TRANSLATEPT 0x00000020") + cpp_quote("#define SVSI_SELECTIONMARK 0x00000040") + cpp_quote("#define SVSI_POSITIONITEM 0x00000080") + cpp_quote("#define SVSI_CHECK 0x00000100") + cpp_quote("#define SVSI_NOSTATECHANGE 0x80000000") + + typedef UINT SVSIF; + + typedef enum + { + SVGIO_BACKGROUND = 0x00000000, + SVGIO_SELECTION = 0x00000001, + SVGIO_ALLVIEW = 0x00000002, + SVGIO_CHECKED = 0x00000003, + SVGIO_TYPE_MASK = 0x0000000f, + SVGIO_FLAG_VIEWORDER = 0x80000000, + } SVGIO; + + typedef enum + { + SVUIA_DEACTIVATE = 0, + SVUIA_ACTIVATE_NOFOCUS = 1, + SVUIA_ACTIVATE_FOCUS = 2, + SVUIA_INPLACEACTIVATE = 3 + } SVUIA_STATUS; + + HRESULT TranslateAccelerator( [in] MSG *pmsg ); + HRESULT EnableModeless( [in] BOOL fEnable ); + HRESULT UIActivate( [in] UINT uState ); + HRESULT Refresh(); + HRESULT CreateViewWindow( + [in] IShellView *psvPrevious, + [in] LPCFOLDERSETTINGS lpfs, + [in] IShellBrowser *psb, + [out] RECT *prcView, + [out] HWND *phWnd); + + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs ); + + [local] HRESULT AddPropertySheetPages( + [in] DWORD dwReserved, + [in] LPFNSVADDPROPSHEETPAGE pfn, + [in] LPARAM lparam); + + HRESULT SaveViewState(); + HRESULT SelectItem( + [in] LPCITEMIDLIST pidlItem, + [in] SVSIF uFlags); + HRESULT GetItemObject( + [in] UINT uItem, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); +} + +[ + object, + uuid(88e39e80-3578-11cf-ae69-08002b2e1262), + pointer_default(unique) +] +interface IShellView2 : IShellView +{ + typedef GUID SHELLVIEWID; +cpp_quote("#include <pshpack8.h>") + typedef struct _SV2CVW2_PARAMS + { + DWORD cbSize; + IShellView *psvPrev; + LPCFOLDERSETTINGS pfs; + IShellBrowser *psbOwner; + RECT *prcView; + SHELLVIEWID const *pvid; + HWND hwndView; + } SV2CVW2_PARAMS, *LPSV2CVW2_PARAMS; +cpp_quote("#include <poppack.h>") + + HRESULT GetView( + [in, out] SHELLVIEWID *view_guid, + [in] ULONG view_type + ); + HRESULT CreateViewWindow2( + [in] LPSV2CVW2_PARAMS view_params + ); + HRESULT HandleRename( + [in] LPCITEMIDLIST new_pidl + ); + HRESULT SelectAndPositionItem( + [in] LPCITEMIDLIST item, + [in] UINT flags, + [in] POINT *point + ); +} + +/***************************************************************************** + * IFolderView interface + */ +[ + uuid(cde725b0-ccc9-4519-917e-325d72fab4ce), + object, + pointer_default(unique) +] +interface IFolderView : IUnknown +{ + HRESULT GetCurrentViewMode( [out] UINT *mode ); + HRESULT SetCurrentViewMode( [in] UINT mode ); + HRESULT GetFolder( [in] REFIID riid, [out, iid_is(riid)] void **ppv ); + HRESULT Item( + [in] int index, + [out] PITEMID_CHILD *ppidl + ); + HRESULT ItemCount( + [in] UINT flags, + [out] int *items + ); + HRESULT Items( + [in] UINT flags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv + ); + HRESULT GetSelectionMarkedItem( [out] int *item ); + HRESULT GetFocusedItem( [out] int *item ); + HRESULT GetItemPosition( + [in] PCUITEMID_CHILD pidl, + [out] POINT* ppt + ); + HRESULT GetSpacing( [in, out, unique] POINT* pt ); + HRESULT GetDefaultSpacing( [out] POINT* pt ); + HRESULT GetAutoArrange(); + HRESULT SelectItem( + [in] int item, + [in] DWORD flags + ); + HRESULT SelectAndPositionItems( + [in] UINT cidl, + [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, + [in, unique, size_is(cidl)] POINT* apt, + [in] DWORD flags + ); +} + +/***************************************************************************** + * IShellBrowser interface + */ +[ + object, + uuid(000214e2-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellBrowser : IOleWindow +{ + typedef IShellBrowser *LPSHELLBROWSER; + +cpp_quote("#define SBSP_DEFBROWSER 0x00000000") +cpp_quote("#define SBSP_SAMEBROWSER 0x00000001") +cpp_quote("#define SBSP_NEWBROWSER 0x00000002") +cpp_quote("#define SBSP_DEFMODE 0x00000000") +cpp_quote("#define SBSP_OPENMODE 0x00000010") +cpp_quote("#define SBSP_EXPLOREMODE 0x00000020") +cpp_quote("#define SBSP_HELPMODE 0x00000040") +cpp_quote("#define SBSP_NOTRANSFERHIST 0x00000080") +cpp_quote("#define SBSP_ABSOLUTE 0x00000000") +cpp_quote("#define SBSP_RELATIVE 0x00001000") +cpp_quote("#define SBSP_PARENT 0x00002000") +cpp_quote("#define SBSP_NAVIGATEBACK 0x00004000") +cpp_quote("#define SBSP_NAVIGATEFORWARD 0x00008000") +cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE 0x00010000") +cpp_quote("#define SBSP_KEEPSAMETEMPLATE 0x00020000") +cpp_quote("#define SBSP_KEEPWORDWHEELTEXT 0x00040000") +cpp_quote("#define SBSP_ACTIVATE_NOFOCUS 0x00080000") +cpp_quote("#define SBSP_CREATENOHISTORY 0x00100000") +cpp_quote("#define SBSP_PLAYNOSOUND 0x00200000") +cpp_quote("#define SBSP_CALLERUNTURUSTED 0x00800000") +cpp_quote("#define SBSP_TRUSTFIRSTDOWNLOAD 0x01000000") +cpp_quote("#define SBSP_UNTRUSTEDFORDOWNLOAD 0x02000000") +cpp_quote("#define SBSP_NOAUTOSELECT 0x04000000") +cpp_quote("#define SBSP_WRITENOHISTORY 0x08000000") +cpp_quote("#define SBSP_TRUSTEDFORACTIVEX 0x10000000") +cpp_quote("#define SBSP_FEEDNAVIGATION 0x20000000") +cpp_quote("#define SBSP_REDIRECT 0x40000000") +cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000") + +cpp_quote("#define FCW_STATUS 0x0001") +cpp_quote("#define FCW_TOOLBAR 0x0002") +cpp_quote("#define FCW_TREE 0x0003") +cpp_quote("#define FCW_INTERNETBAR 0x0006") +cpp_quote("#define FCW_PROGRESS 0x0008") + +cpp_quote("#define FCT_MERGE 0x0001") +cpp_quote("#define FCT_CONFIGABLE 0x0002") +cpp_quote("#define FCT_ADDTOEND 0x0004") + +cpp_quote("#if 0") + typedef LPARAM LPTBBUTTONSB; +cpp_quote("#else") +cpp_quote("#include <commctrl.h>") +cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;") +cpp_quote("#endif") + + HRESULT InsertMenusSB( + [in] HMENU hmenuShared, + [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths); + + HRESULT SetMenuSB( + [in] HMENU hmenuShared, + [in] HOLEMENU holemenuReserved, + [in] HWND hwndActiveObject); + + HRESULT RemoveMenusSB( [in] HMENU hmenuShared ); + HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText ); + HRESULT EnableModelessSB( [in] BOOL fEnable ); + HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID ); + + HRESULT BrowseObject( + [in] LPCITEMIDLIST pidl, + [in] UINT wFlags); + + HRESULT GetViewStateStream( + [in] DWORD grfMode, + [out] IStream **ppStrm); + + HRESULT GetControlWindow( + [in] UINT id, + [out] HWND *phwnd); + + [local] HRESULT SendControlMsg( + [in] UINT id, + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam, + [in] LRESULT *pret); + + HRESULT QueryActiveShellView( [out] IShellView **ppshv ); + HRESULT OnViewWindowActive( [in] IShellView *pshv ); + + [local] + HRESULT SetToolbarItems( + [in] LPTBBUTTONSB lpButtons, + [in] UINT nButtons, + [in] UINT uFlags); +} + + +/***************************************************************************** + * IShellLinkA interface + */ +[ + object, + uuid(000214ee-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellLinkA : IUnknown +{ + typedef enum + { + SLR_NO_UI = 0x0001, + SLR_ANY_MATCH = 0x0002, + SLR_UPDATE = 0x0004, + SLR_NOUPDATE = 0x0008, + SLR_NOSEARCH = 0x0010, + SLR_NOTRACK = 0x0020, + SLR_NOLINKINFO = 0x0040, + SLR_INVOKE_MSI = 0x0080, + SLR_NO_UI_WITH_MSG_PUMP = 0x0101, + } SLR_FLAGS; + + typedef enum + { + SLGP_SHORTPATH = 0x0001, + SLGP_UNCPRIORITY = 0x0002, + SLGP_RAWPATH = 0x0004, + } SLGP_FLAGS; + + HRESULT GetPath( + [out, size_is(cch)] LPSTR pszFile, + [in] int cch, + [in, out, unique] WIN32_FIND_DATAA *pfd, + [in] DWORD fFlags); + + HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); + + HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); + + HRESULT GetDescription( + [out, size_is(cch)] LPSTR pszName, + [in] int cch); + + HRESULT SetDescription( [in] LPCSTR pszName ); + + HRESULT GetWorkingDirectory( + [out, size_is(cch)] LPSTR pszDir, + [in] int cch); + + HRESULT SetWorkingDirectory( [in] LPCSTR pszDir ); + + HRESULT GetArguments( + [out, size_is(cch)] LPSTR pszArgs, + [in] int cch); + + HRESULT SetArguments( [in] LPCSTR pszArgs ); + + HRESULT GetHotkey( [out] WORD *pwHotkey ); + + HRESULT SetHotkey( [in] WORD wHotkey ); + + HRESULT GetShowCmd( [out] int *piShowCmd ); + + HRESULT SetShowCmd( [in] int iShowCmd ); + + HRESULT GetIconLocation( + [out, size_is(cch)] LPSTR pszIconPath, + [in] int cch, + [out] int *piIcon); + + HRESULT SetIconLocation( + [in] LPCSTR pszIconPath, + [in] int iIcon); + + HRESULT SetRelativePath( + [in] LPCSTR pszPathRel, + [in] DWORD dwReserved); + + HRESULT Resolve( + [in] HWND hwnd, + [in] DWORD fFlags); + + HRESULT SetPath( [in] LPCSTR pszFile ); +} + + +/***************************************************************************** + * IShellLinkW interface + */ +[ + object, + uuid(000214f9-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface IShellLinkW : IUnknown +{ + HRESULT GetPath( + [out, size_is(cch)] LPWSTR pszFile, + [in] int cch, + [in, out] WIN32_FIND_DATAW *pfd, + [in] DWORD fFlags); + + HRESULT GetIDList( [out] LPITEMIDLIST * ppidl ); + + HRESULT SetIDList( [in] LPCITEMIDLIST pidl ); + + HRESULT GetDescription( + [out, size_is(cch)] LPWSTR pszName, + [in] int cch); + + HRESULT SetDescription( [in] LPCWSTR pszName ); + + HRESULT GetWorkingDirectory( + [out, size_is(cch)] LPWSTR pszDir, + [in] int cch); + + HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir ); + + HRESULT GetArguments( + [out, size_is(cch)] LPWSTR pszArgs, + [in] int cch); + + HRESULT SetArguments( [in] LPCWSTR pszArgs ); + + HRESULT GetHotkey( [out] WORD *pwHotkey ); + + HRESULT SetHotkey( [in] WORD wHotkey ); + + HRESULT GetShowCmd( [out] int *piShowCmd ); + + HRESULT SetShowCmd( [in] int iShowCmd ); + + HRESULT GetIconLocation( + [out, size_is(cch)] LPWSTR pszIconPath, + [in] int cch, + [out] int *piIcon); + + HRESULT SetIconLocation( + [in] LPCWSTR pszIconPath, + [in] int iIcon); + + HRESULT SetRelativePath( + [in] LPCWSTR pszPathRel, + [in] DWORD dwReserved); + + HRESULT Resolve( + [in] HWND hwnd, + [in] DWORD fFlags); + + HRESULT SetPath( [in] LPCWSTR pszFile ); +} + +cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)") + + +/***************************************************************************** + * IShellExtInit interface + */ +[ + object, + uuid(000214e8-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface IShellExtInit : IUnknown +{ + typedef IShellExtInit *LPSHELLEXTINIT; + + HRESULT Initialize( + [in] LPCITEMIDLIST pidlFolder, + [in] IDataObject *pdtobj, + [in] HKEY hkeyProgID); +} + + +/*******************************************************************************/ +/* Note: the following interfaces are not in shobjidl.idl under Windows, they */ +/* are declared directly in shlobj.h. It hopefully won't break anything to put */ +/* them here anyway. */ +/*******************************************************************************/ + +#ifndef MAX_PATH +#define MAX_PATH 260 +#endif + + +/***************************************************************************** + * IPersistFolder3 interface + */ +[ + object, + uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf), + pointer_default(unique) +] +interface IPersistFolder3 : IPersistFolder2 +{ + typedef struct + { + LPITEMIDLIST pidlTargetFolder; + WCHAR szTargetParsingName[MAX_PATH]; + WCHAR szNetworkProvider[MAX_PATH]; + DWORD dwAttributes; + int csidl; + } PERSIST_FOLDER_TARGET_INFO; + + HRESULT InitializeEx( + [in] IBindCtx *pbc, + [in] LPCITEMIDLIST pidlRoot, + [in] const PERSIST_FOLDER_TARGET_INFO *ppfti); + + HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti ); +} + + +/***************************************************************************** + * IExtractIconA interface + */ +[ + object, + uuid(000214eb-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface IExtractIconA : IUnknown +{ +cpp_quote("#define GIL_OPENICON 0x0001") +cpp_quote("#define GIL_FORSHELL 0x0002") +cpp_quote("#define GIL_ASYNC 0x0020") +cpp_quote("#define GIL_DEFAULTICON 0x0040") +cpp_quote("#define GIL_FORSHORTCUT 0x0080") + +cpp_quote("#define GIL_SIMULATEDOC 0x0001") +cpp_quote("#define GIL_PERINSTANCE 0x0002") +cpp_quote("#define GIL_PERCLASS 0x0004") +cpp_quote("#define GIL_NOTFILENAME 0x0008") +cpp_quote("#define GIL_DONTCACHE 0x0010") + + typedef IExtractIconA *LPEXTRACTICONA; + + HRESULT GetIconLocation( + [in] UINT uFlags, + [out, size_is(cchMax)] LPSTR szIconFile, + [in] UINT cchMax, + [out] INT *piIndex, + [out] UINT *pwFlags); + + HRESULT Extract( + [in] LPCSTR pszFile, + [in] UINT nIconIndex, + [out] HICON *phiconLarge, + [out] HICON *phiconSmall, + [in] UINT nIconSize ); +} + + +/***************************************************************************** + * IExtractIconW interface + */ +[ + object, + uuid(000214fa-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface IExtractIconW : IUnknown +{ + typedef IExtractIconW *LPEXTRACTICONW; + + HRESULT GetIconLocation( + [in] UINT uFlags, + [out, size_is(cchMax)] LPWSTR szIconFile, + [in] UINT cchMax, + [out] INT *piIndex, + [out] UINT *pwFlags); + + HRESULT Extract( + [in] LPCWSTR pszFile, + [in] UINT nIconIndex, + [out] HICON *phiconLarge, + [out] HICON *phiconSmall, + [in] UINT nIconSize ); +} + +cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)") +cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)") + + +/***************************************************************************** + * ICommDlgBrowser interface + */ +[ + object, + uuid(000214f1-0000-0000-c000-000000000046), + pointer_default(unique) +] +interface ICommDlgBrowser : IUnknown +{ +cpp_quote("#define CDBOSC_SETFOCUS 0x00000000") +cpp_quote("#define CDBOSC_KILLFOCUS 0x00000001") +cpp_quote("#define CDBOSC_SELCHANGE 0x00000002") +cpp_quote("#define CDBOSC_RENAME 0x00000003") +cpp_quote("#define CDBOSC_STATECHANGE 0x00000004") + + typedef ICommDlgBrowser *LPCOMMDLGBROWSER; + + HRESULT OnDefaultCommand( [in] IShellView *shv ); + HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange ); + HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl ); +} + + +/***************************************************************************** + * ICommDlgBrowser2 interface + */ +[ + object, + uuid(10339516-2894-11D2-9039-00C04F8EEB3E), + pointer_default(unique) +] +interface ICommDlgBrowser2 : ICommDlgBrowser +{ + + HRESULT Notify( + [in] IShellView *ppshv, + [in] DWORD dwNotifyType); + + HRESULT GetDefaultMenuText( + [in] IShellView *ppshv, + [out, string, size_is(cchMax)] LPWSTR pszText, + [in] int cchMax); + + HRESULT GetViewFlags( + [out] DWORD *pdwFlags); +} + + +/***************************************************************************** + * ICommDlgBrowser3 interface + */ +[ + object, + uuid(C8AD25A1-3294-41EE-8165-71174BD01C57), + pointer_default(unique) +] +interface ICommDlgBrowser3 : ICommDlgBrowser2 +{ + + HRESULT OnColumnClicked( + [in] IShellView *ppshv, + [in] int iColumn); + + HRESULT GetCurrentFilter( + [out, string, size_is(cchFileSpec)] LPWSTR pszFileSpec, + [in] int cchFileSpec); + + HRESULT OnPreviewCreated( + [in] IShellView *ppshv); +} + +/***************************************************************************** + * IDockingWindow interface + */ +[ + object, + uuid(012dd920-7b26-11d0-8ca9-00a0c92dbfe8) +] +interface IDockingWindow : IOleWindow +{ + HRESULT ShowDW( + [in] BOOL fShow); + + HRESULT CloseDW( + [in] DWORD dwReserved); + + HRESULT ResizeBorderDW( + [in] LPCRECT prcBorder, + [in] IUnknown *punkToolbarSite, + [in] BOOL fReserved); +}; + + +/***************************************************************************** + * IDockingWindowFrame interface + */ +[ + object, + uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8), + pointer_default(unique), + local +] +interface IDockingWindowFrame : IOleWindow +{ +cpp_quote("#define DWFRF_NORMAL 0x0000") +cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001") +cpp_quote("#define DWFAF_HIDDEN 0x0001") + + HRESULT AddToolbar( + [in] IUnknown *punkSrc, + [in] LPCWSTR pwszItem, + [in] DWORD dwAddFlags); + + HRESULT RemoveToolbar( + [in] IUnknown *punkSrc, + [in] DWORD dwRemoveFlags); + + HRESULT FindToolbar( + [in] LPCWSTR pwszItem, + [in] REFIID riid, + [out] LPVOID *ppvObj); +} + + +/***************************************************************************** + * IDragSourceHelper interface + */ +[ + object, + uuid(de5bf786-477a-11d2-839d-00c04fd918d0), + pointer_default(unique), + local +] +interface IDragSourceHelper : IUnknown +{ + typedef struct + { + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; + } SHDRAGIMAGE, *LPSHDRAGIMAGE; + + HRESULT InitializeFromBitmap( + [in] LPSHDRAGIMAGE pshdi, + [in] IDataObject *pDataObject); + + HRESULT InitializeFromWindow( + [in] HWND hwnd, + [in] POINT *ppt, + [in] IDataObject *pDataObject); +} + + +/***************************************************************************** + * IDropTargetHelper interface + */ +[ + object, + uuid(4657278b-411b-11d2-839a-00c04fd918d0), + pointer_default(unique), + local +] +interface IDropTargetHelper : IUnknown +{ + HRESULT DragEnter( + [in] HWND hwndTarget, + [in] IDataObject *pDataObject, + [in] POINT *ppt, + [in] DWORD dwEffect); + + HRESULT DragLeave(); + + HRESULT DragOver( + [in] POINT *ppt, + [in] DWORD dwEffect); + + HRESULT Drop( + [in] IDataObject *pDataObject, + [in] POINT *ppt, + [in] DWORD dwEffect); + + HRESULT Show( [in] BOOL fShow ); +} + + +/***************************************************************************** + * IContextMenu interface + */ +[ + object, + uuid(000214e4-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface IContextMenu : IUnknown +{ +cpp_quote("#define CMF_NORMAL 0x00000000") +cpp_quote("#define CMF_DEFAULTONLY 0x00000001") +cpp_quote("#define CMF_VERBSONLY 0x00000002") +cpp_quote("#define CMF_EXPLORE 0x00000004") +cpp_quote("#define CMF_NOVERBS 0x00000008") +cpp_quote("#define CMF_CANRENAME 0x00000010") +cpp_quote("#define CMF_NODEFAULT 0x00000020") +cpp_quote("#define CMF_INCLUDESTATIC 0x00000040") +cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100") +cpp_quote("#define CMF_RESERVED 0xffff0000") + +cpp_quote("#define GCS_VERBA 0x00000000") +cpp_quote("#define GCS_HELPTEXTA 0x00000001") +cpp_quote("#define GCS_VALIDATEA 0x00000002") +cpp_quote("#define GCS_VERBW 0x00000004") +cpp_quote("#define GCS_HELPTEXTW 0x00000005") +cpp_quote("#define GCS_VALIDATEW 0x00000006") +cpp_quote("#define GCS_UNICODE 0x00000004") +cpp_quote("#define GCS_VERB WINELIB_NAME_AW(GCS_VERB)") +cpp_quote("#define GCS_HELPTEXT WINELIB_NAME_AW(GCS_HELPTEXT)") +cpp_quote("#define GCS_VALIDATE WINELIB_NAME_AW(GCS_VALIDATE)") + +cpp_quote("#define CMDSTR_NEWFOLDERA \"NewFolder\"") +cpp_quote("#define CMDSTR_VIEWLISTA \"ViewList\"") +cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"") +cpp_quote("#if defined(__GNUC__)") +cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }") +cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }") +cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }") +cpp_quote("#elif defined(_MSC_VER)") +cpp_quote("# define CMDSTR_NEWFOLDERW L\"NewFolder\"") +cpp_quote("# define CMDSTR_VIEWLISTW L\"ViewList\"") +cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"") +cpp_quote("#else") +cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};") +cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};") +cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};") +cpp_quote("#endif") +cpp_quote("#define CMDSTR_NEWFOLDER WINELIB_NAME_AW(CMDSTR_NEWFOLDER)") +cpp_quote("#define CMDSTR_VIEWLIST WINELIB_NAME_AW(CMDSTR_VIEWLIST)") +cpp_quote("#define CMDSTR_VIEWDETAILS WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)") + +cpp_quote("#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY") +cpp_quote("#define CMIC_MASK_ICON SEE_MASK_ICON") +cpp_quote("#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI") +cpp_quote("#define CMIC_MASK_UNICODE SEE_MASK_UNICODE") +cpp_quote("#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE") +cpp_quote("#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME") +cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM") +cpp_quote("#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE") +cpp_quote("#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK") +cpp_quote("#define CMIC_MASK_NOASYNC SEE_MASK_NOASYNC") +cpp_quote("#define CMIC_MASK_SHIFT_DOWN 0x10000000") +cpp_quote("#define CMIC_MASK_PTINVOKE 0x20000000") +cpp_quote("#define CMIC_MASK_CONTROL_DOWN 0x40000000") +cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE") +cpp_quote("#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS") + + typedef IContextMenu *LPCONTEXTMENU; + + typedef struct tagCMINVOKECOMMANDINFO + { + DWORD cbSize; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + INT nShow; + DWORD dwHotKey; + HANDLE hIcon; + } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO; + + typedef struct tagCMInvokeCommandInfoEx + { + DWORD cbSize; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + INT nShow; + DWORD dwHotKey; + HANDLE hIcon; + LPCSTR lpTitle; + LPCWSTR lpVerbW; + LPCWSTR lpParametersW; + LPCWSTR lpDirectoryW; + LPCWSTR lpTitleW; + POINT ptInvoke; + } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX; + + HRESULT QueryContextMenu( + [in] HMENU hmenu, + [in] UINT indexMenu, + [in] UINT idCmdFirst, + [in] UINT idCmdLast, + [in] UINT uFlags); + + HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici ); + + HRESULT GetCommandString( + [in] UINT_PTR idCmd, + [in] UINT uType, + [out] UINT *pwReserved, + [out, size_is(cchMax)] LPSTR pszName, + [in] UINT cchMax); +} + + +/***************************************************************************** + * IContextMenu2 interface + */ +[ + object, + uuid(000214f4-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface IContextMenu2 : IContextMenu +{ + typedef IContextMenu2 *LPCONTEXTMENU2; + + HRESULT HandleMenuMsg( + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam); +} + + +/***************************************************************************** + * IContextMenu3 interface + */ +[ + object, + uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719), + pointer_default(unique), + local +] +interface IContextMenu3 : IContextMenu2 +{ + typedef IContextMenu3 *LPCONTEXTMENU3; + + HRESULT HandleMenuMsg2( + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam, + [out] LRESULT *plResult); +} + + +[ + object, + uuid(3409e930-5a39-11d1-83fa-00a0c90dc849), + pointer_default(unique), + local +] +interface IContextMenuCB : IUnknown +{ + HRESULT CallBack( + [in] IShellFolder *psf, + [in] HWND hwndOwner, + [in] IDataObject *pdtobj, + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam); +} + +/***************************************************************************** + * IShellExecuteHookA interface + */ +[ + object, + uuid(000214f5-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface IShellExecuteHookA : IUnknown +{ + cpp_quote("struct _SHELLEXECUTEINFOA;") + HRESULT Execute( + [in, out] struct _SHELLEXECUTEINFOA* pei); +} + + +/***************************************************************************** + * IShellExecuteHookW interface + */ +[ + object, + uuid(000214fb-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface IShellExecuteHookW : IUnknown +{ + cpp_quote("struct _SHELLEXECUTEINFOW;") + HRESULT Execute( + [in, out] struct _SHELLEXECUTEINFOW* pei); +} + +/***************************************************************************** + * IShellLinkDataList interface + */ +[ + object, + uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1), + pointer_default(unique) +] +interface IShellLinkDataList : IUnknown +{ + [local] HRESULT AddDataBlock( + [in] void *pDataBlock); + [local] HRESULT CopyDataBlock( + [in] DWORD dwSig, + [out] void **ppDataBlock); + HRESULT RemoveDataBlock( + [in] DWORD dwSig); + HRESULT GetFlags( + [out] DWORD *pdwFlags); + HRESULT SetFlags( + [in] DWORD dwFlags); +} + + +/***************************************************************************** + * IResolveShellLink interface + */ +[ + object, + uuid(5cd52983-9449-11d2-963a-00c04f79adf0), + pointer_default(unique) +] +interface IResolveShellLink : IUnknown +{ + HRESULT ResolveShellLink( + [in] IUnknown *punk, + [in] HWND hwnd, + [in] DWORD fFlags); +} + + +/***************************************************************************** + * IURLSearchHook interface + */ +[ + object, + uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497), + pointer_default(unique), + local +] +interface IURLSearchHook : IUnknown +{ + HRESULT Translate( + [in, out] LPWSTR lpwszSearchURL, + [in] DWORD cchBufferSize); +} + + +/***************************************************************************** + * ISearchContext interface + */ +[ + object, + uuid(09f656a2-41af-480c-88f7-16cc0d164615), + pointer_default(unique), + local +] +interface ISearchContext : IUnknown +{ + HRESULT GetSearchUrl( + [in] BSTR *pbstrSearchUrl); + HRESULT GetSearchText( + [in] BSTR *pbstrSearchText); + HRESULT GetSearchStyle( + [in] BSTR *pdwSearchStyle); +} + + +/***************************************************************************** + * IURLSearchHook2 interface + */ +[ + object, + uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0), + pointer_default(unique), + local +] +interface IURLSearchHook2 : IURLSearchHook +{ + HRESULT TranslateWithSearchContext( + [in, out] LPWSTR lpwszSearchURL, + [in] DWORD cchBufferSize, + [in] ISearchContext *pSearchContext); +} + + +cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)") + +/***************************************************************************** + * INewShortcutHookA interface + */ +[ + object, + uuid(000214e1-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface INewShortcutHookA : IUnknown +{ + HRESULT SetReferent( + [in] LPCSTR pcszReferent, + [in] HWND hwnd); + HRESULT GetReferent( + [out] LPSTR pcszReferent, + [in] int cchReferent); + HRESULT SetFolder( + [in] LPCSTR pcszReferent); + HRESULT GetFolder( + [out] LPSTR pcszReferent, + [in] int cchFolder); + HRESULT GetName( + [out] LPSTR pszName, + [in] int cchName); + HRESULT GetExtension( + [out] LPSTR pszExtension, + [in] int cchExtension); +} + + +/***************************************************************************** + * INewShortcutHookW interface + */ +[ + object, + uuid(000214f7-0000-0000-c000-000000000046), + pointer_default(unique), + local +] +interface INewShortcutHookW : IUnknown +{ + HRESULT SetReferent( + [in] LPCWSTR pcszReferent, + [in] HWND hwnd); + HRESULT GetReferent( + [out] LPWSTR pcszReferent, + [in] int cchReferent); + HRESULT SetFolder( + [in] LPCWSTR pcszReferent); + HRESULT GetFolder( + [out] LPWSTR pcszReferent, + [in] int cchFolder); + HRESULT GetName( + [out] LPWSTR pszName, + [in] int cchName); + HRESULT GetExtension( + [out] LPWSTR pszExtension, + [in] int cchExtension); +} + +/***************************************************************************** + * IRunnableTask interface + */ +[ + object, + uuid(85788d00-6807-11d0-b810-00c04fd706ec), + pointer_default(unique), + local +] +interface IRunnableTask : IUnknown +{ + HRESULT Run(); + HRESULT Kill([in] BOOL fWait); + HRESULT Suspend(); + HRESULT Resume(); + ULONG IsRunning(); +} + +/***************************************************************************** + * IShellChangeNotify interface + */ +[ + object, + uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2), + pointer_default(unique), + local +] +interface IShellChangeNotify : IUnknown +{ + HRESULT OnChange( + [in] LONG lEvent, + [in] LPCITEMIDLIST pidl1, + [in] LPCITEMIDLIST pidl2); +} + +/***************************************************************************** + * IFileSystemBindData interface + */ +[ + object, + uuid(01e18d10-4d8b-11d2-855d-006008059367), + pointer_default(unique), + local +] +interface IFileSystemBindData : IUnknown +{ + HRESULT SetFindData( + [in] const WIN32_FIND_DATAW *pfd); + HRESULT GetFindData( + [out] WIN32_FIND_DATAW *pfd); +} + +/***************************************************************************** + * ITaskbarList interface + */ +[ + object, + uuid(56FDF342-FD6D-11d0-958A-006097C9A090), + pointer_default(unique) +] +interface ITaskbarList : IUnknown +{ + HRESULT HrInit(); + + HRESULT AddTab( + [in] HWND hwnd); + + HRESULT DeleteTab( + [in] HWND hwnd); + + HRESULT ActivateTab( + [in] HWND hwnd); + + HRESULT SetActiveAlt( + [in] HWND hwnd); +} + +/***************************************************************************** + * ITaskbarList2 interface + */ +[ + object, + uuid(602D4995-B13A-429B-A66E-1935E44F4317), + pointer_default(unique) +] +interface ITaskbarList2 : ITaskbarList +{ + HRESULT MarkFullscreenWindow( + [in] HWND hwnd, + [in] BOOL fullscreen); +} + +cpp_quote("#ifdef MIDL_PASS") +typedef IUnknown* HIMAGELIST; +cpp_quote("#endif") + +typedef [v1_enum] enum THUMBBUTTONFLAGS { + THBF_ENABLED = 0x0000, + THBF_DISABLED = 0x0001, + THBF_DISMISSONCLICK = 0x0002, + THBF_NOBACKGROUND = 0x0004, + THBF_HIDDEN = 0x0008, + THBF_NONINTERACTIVE = 0x0010 +} THUMBBUTTONFLAGS; + +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)") + +typedef [v1_enum] enum THUMBBUTTONMASK { + THB_BITMAP = 0x0001, + THB_ICON = 0x0002, + THB_TOOLTIP = 0x0004, + THB_FLAGS = 0x0008 +} THUMBBUTTONMASK; + +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)") + +cpp_quote("#include <pshpack8.h>") +typedef struct THUMBBUTTON { + THUMBBUTTONMASK dwMask; + UINT iId; + UINT iBitmap; + HICON hIcon; + WCHAR szTip[260]; + THUMBBUTTONFLAGS dwFlags; +} THUMBBUTTON, *LPTHUMBBUTTON; +cpp_quote("#include <poppack.h>") + +[ + uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf), + object +] +interface ITaskbarList3 : ITaskbarList2 +{ + typedef [v1_enum] enum TBPFLAG { + TBPF_NOPROGRESS = 0x0000, + TBPF_INDETERMINATE = 0x0001, + TBPF_NORMAL = 0x0002, + TBPF_ERROR = 0x0004, + TBPF_PAUSED = 0x0008 + } TBPFLAG; + + cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)") + + HRESULT SetProgressValue( + [in] HWND hwnd, + [in] ULONGLONG ullCompleted, + [in] ULONGLONG ullTotal); + + HRESULT SetProgressState( + [in] HWND hwnd, + [in] TBPFLAG tbpFlags); + + HRESULT RegisterTab( + [in] HWND hwndTab, + [in] HWND hwndMDI); + + HRESULT UnregisterTab([in] HWND hwndTab); + + HRESULT SetTabOrder( + [in] HWND hwndTab, + [in] HWND hwndInsertBefore); + + HRESULT SetTabActive( + [in] HWND hwndTab, + [in] HWND hwndMDI, + [in] DWORD dwReserved); + + HRESULT ThumbBarAddButtons( + [in] HWND hwnd, + [in] UINT cButtons, + [in, size_is(cButtons)] LPTHUMBBUTTON pButton); + + HRESULT ThumbBarUpdateButtons( + [in] HWND hwnd, + [in] UINT cButtons, + [in, size_is(cButtons)] LPTHUMBBUTTON pButton); + + HRESULT ThumbBarSetImageList( + [in] HWND hwnd, + [in] HIMAGELIST himl); + + HRESULT SetOverlayIcon( + [in] HWND hwnd, + [in] HICON hIcon, + [in, unique, string] LPCWSTR pszDescription); + + HRESULT SetThumbnailTooltip( + [in] HWND hwnd, + [in, unique, string] LPCWSTR pszTip); + + HRESULT SetThumbnailClip( + [in] HWND hwnd, + [in] RECT *prcClip); +} + +[ + uuid(c43dc798-95d1-4bea-9030-bb99e2983a1a), + object +] +interface ITaskbarList4 : ITaskbarList3 +{ + typedef [v1_enum] enum STPFLAG { + STPF_NONE = 0x0000, + STPF_USEAPPTHUMBNAILALWAYS = 0x0001, + STPF_USEAPPTHUMBNAILWHENACTIVE = 0x0002, + STPF_USEAPPPEEKALWAYS = 0x0004, + STPF_USEAPPPEEKWHENACTIVE = 0x0008 + } STPFLAG; + + cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)") + + HRESULT SetTabProperties( + [in] HWND hwndTab, + [in] STPFLAG stpFlags); +} + +/***************************************************************************** + * IAutoCompleteDropDown interface + */ +[ + object, + uuid(3CD141F4-3C6A-11d2-BCAA-00C04FD929DB), + pointer_default(unique) +] +interface IAutoCompleteDropDown : IUnknown +{ +cpp_quote("#define ACDD_VISIBLE 0x0001") + + HRESULT GetDropDownStatus( + [out] DWORD *pdwFlags, + [out, string] LPWSTR *ppwszString); + + HRESULT ResetEnumerator(); +} + +[ + object, + uuid(cb728b20-f786-11ce-92ad-00aa00a74cd0), + pointer_default(unique) +] +interface IProfferService : IUnknown +{ + HRESULT ProfferService( + [in] REFGUID service, + [in] IServiceProvider *pService, + [out] DWORD *pCookie); + + HRESULT RevokeService([in] DWORD cookie); +} + +/***************************************************************************** + * IExplorerBrowserEvents interface + */ +[ + object, + uuid(361BBDC7-E6EE-4E13-BE58-58E2240C810F) +] +interface IExplorerBrowserEvents : IUnknown +{ + HRESULT OnNavigationPending( + [in] PCIDLIST_ABSOLUTE pidlFolder); + + HRESULT OnViewCreated( + [in] IShellView *psv); + + HRESULT OnNavigationComplete( + [in] PCIDLIST_ABSOLUTE pidlFolder); + + HRESULT OnNavigationFailed( + [in] PCIDLIST_ABSOLUTE pidlFolder); +} + +typedef GUID EXPLORERPANE; +typedef EXPLORERPANE *REFEXPLORERPANE; + +cpp_quote("#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility") + +/***************************************************************************** + * IExplorerPaneVisibility interface + */ +[ + object, + uuid(E07010EC-BC17-44C0-97B0-46C7C95B9EDC) +] +interface IExplorerPaneVisibility : IUnknown +{ + typedef enum tagEXPLORERPANESTATE { + EPS_DONTCARE = 0x0, + EPS_DEFAULT_ON = 0x1, + EPS_DEFAULT_OFF = 0x2, + EPS_STATE_MASK = 0xffff, + EPS_INITIALSTATE = 0x10000, + EPS_FORCE = 0x20000 + } EXPLORERPANESTATE; + + HRESULT GetPaneState( + [in] REFEXPLORERPANE ep, + [out] EXPLORERPANESTATE *peps); +} + +typedef [v1_enum] enum tagEXPLORER_BROWSER_FILL_FLAGS { + EBF_NONE = 0, + EBF_SELECTFROMDATAOBJECT = 0x100, + EBF_NODROPTARGET = 0x200 +} EXPLORER_BROWSER_FILL_FLAGS; + +typedef [v1_enum] enum tagEXPLORER_BROWSER_OPTIONS { + EBO_NONE = 0x00, + EBO_NAVIGATEONCE = 0x01, + EBO_SHOWFRAMES = 0x02, + EBO_ALWAYSNAVIGATE = 0x04, + EBO_NOTRAVELLOG = 0x08, + EBO_NOWRAPPERWINDOW = 0x10, + EBO_HTMLSHAREPOINTVIEW = 0x20 +} EXPLORER_BROWSER_OPTIONS; + +cpp_quote("#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser") + +/***************************************************************************** + * IExplorerBrowser interface + */ +[ + object, + uuid(DFD3B6B5-C10C-4BE9-85F6-A66969F402F6), + pointer_default(unique) +] +interface IExplorerBrowser : IUnknown +{ + + [local] HRESULT Initialize( + [in] HWND hwndParent, + [in] const RECT *prc, + [in, unique] const FOLDERSETTINGS *pfs); + + HRESULT Destroy(); + + [local] HRESULT SetRect( + [in,out,unique] HDWP *phdwp, + [in] RECT rcBrowser); + + HRESULT SetPropertyBag( + [in, string] LPCWSTR pszPropertyBag); + + HRESULT SetEmptyText( + [in, string] LPCWSTR pszEmptyText); + + HRESULT SetFolderSettings( + [in] const FOLDERSETTINGS *pfs); + + HRESULT Advise( + [in] IExplorerBrowserEvents *psbe, + [out] DWORD *pdwCookie); + + HRESULT Unadvise( + [in] DWORD dwCookie); + + HRESULT SetOptions( + [in] EXPLORER_BROWSER_OPTIONS dwFlag); + + HRESULT GetOptions( + [out] EXPLORER_BROWSER_OPTIONS *pdwFlag); + + HRESULT BrowseToIDList( + [in] PCUIDLIST_RELATIVE pidl, + [in] UINT uFlags); + + HRESULT BrowseToObject( + [in] IUnknown *punk, + [in] UINT uFlags); + + HRESULT FillFromObject( + [in] IUnknown *punk, + [in] EXPLORER_BROWSER_FILL_FLAGS dwFlags); + + HRESULT RemoveAll(); + + HRESULT GetCurrentView( + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); +} + +/***************************************************************************** + * INameSpaceTreeControl interface + */ +[ + object, + uuid(028212A3-B627-47E9-8856-C14265554E4F) +] +interface INameSpaceTreeControl : IUnknown +{ + [v1_enum] enum _NSTCSTYLE { + NSTCS_HASEXPANDOS = 0x00000001, + NSTCS_HASLINES = 0x00000002, + NSTCS_SINGLECLICKEXPAND = 0x00000004, + NSTCS_FULLROWSELECT = 0x00000008, + NSTCS_SPRINGEXPAND = 0x00000010, + NSTCS_HORIZONTALSCROLL = 0x00000020, + NSTCS_ROOTHASEXPANDO = 0x00000040, + NSTCS_SHOWSELECTIONALWAYS = 0x00000080, + NSTCS_NOINFOTIP = 0x00000200, + NSTCS_EVENHEIGHT = 0x00000400, + NSTCS_NOREPLACEOPEN = 0x00000800, + NSTCS_DISABLEDRAGDROP = 0x00001000, + NSTCS_NOORDERSTREAM = 0x00002000, + NSTCS_RICHTOOLTIP = 0x00004000, + NSTCS_BORDER = 0x00008000, + NSTCS_NOEDITLABELS = 0x00010000, + NSTCS_TABSTOP = 0x00020000, + NSTCS_FAVORITESMODE = 0x00080000, + NSTCS_AUTOHSCROLL = 0x00100000, + NSTCS_FADEINOUTEXPANDOS = 0x00200000, + NSTCS_EMPTYTEXT = 0x00400000, + NSTCS_CHECKBOXES = 0x00800000, + NSTCS_PARTIALCHECKBOXES = 0x01000000, + NSTCS_EXCLUSIONCHECKBOXES = 0x02000000, + NSTCS_DIMMEDCHECKBOXES = 0x04000000, + NSTCS_NOINDENTCHECKS = 0x08000000, + NSTCS_ALLOWJUNCTIONS = 0x10000000, + NSTCS_SHOWTABSBUTTON = 0x20000000, + NSTCS_SHOWDELETEBUTTON = 0x40000000, + NSTCS_SHOWREFRESHBUTTON = (int)0x80000000 + }; + typedef DWORD NSTCSTYLE; + + [v1_enum] enum _NSTCROOTSTYLE { + NSTCRS_VISIBLE = 0x0000, + NSTCRS_HIDDEN = 0x0001, + NSTCRS_EXPANDED = 0x0002 + }; + typedef DWORD NSTCROOTSTYLE; + + [v1_enum] enum _NSTCITEMSTATE { + NSTCIS_NONE = 0x0000, + NSTCIS_SELECTED = 0x0001, + NSTCIS_EXPANDED = 0x0002, + NSTCIS_BOLD = 0x0004, + NSTCIS_DISABLED = 0x0008, + NSTCIS_SELECTEDNOEXPAND = 0x0010 + }; + typedef DWORD NSTCITEMSTATE; + + typedef [v1_enum] enum NSTCGNI { + NSTCGNI_NEXT = 0, + NSTCGNI_NEXTVISIBLE = 1, + NSTCGNI_PREV = 2, + NSTCGNI_PREVVISIBLE = 3, + NSTCGNI_PARENT = 4, + NSTCGNI_CHILD = 5, + NSTCGNI_FIRSTVISIBLE = 6, + NSTCGNI_LASTVISIBLE = 7 + } NSTCGNI; + + HRESULT Initialize( + [in] HWND hwndParent, + [in, unique] RECT *prc, + [in] NSTCSTYLE nstcsFlags); + + HRESULT TreeAdvise( + [in] IUnknown *punk, + [out] DWORD *pdwCookie); + + HRESULT TreeUnadvise( + [in] DWORD dwCookie); + + HRESULT AppendRoot( + [in] IShellItem *psiRoot, + [in] SHCONTF grfEnumFlags, + [in] NSTCROOTSTYLE grfRootStyle, + [in, unique] IShellItemFilter *pif); + + HRESULT InsertRoot( + [in] int iIndex, + [in] IShellItem *psiRoot, + [in] SHCONTF grfEnumFlags, + [in] NSTCROOTSTYLE grfRootStyle, + [in, unique] IShellItemFilter *pif); + + HRESULT RemoveRoot( + [in] IShellItem *psiRoot); + + HRESULT RemoveAllRoots(); + + HRESULT GetRootItems( + [out] IShellItemArray **ppsiaRootItems); + + HRESULT SetItemState( + [in] IShellItem *psi, + [in] NSTCITEMSTATE nstcisMask, + [in] NSTCITEMSTATE nstcisFlags); + + HRESULT GetItemState( + [in] IShellItem *psi, + [in] NSTCITEMSTATE nstcismask, + [out] NSTCITEMSTATE *pnstcisFlags); + + HRESULT GetSelectedItems( + [out] IShellItemArray **psiaItems); + + HRESULT GetItemCustomState( + [in] IShellItem *psi, + [out] int *piStateNumber); + + HRESULT SetItemCustomState( + [in] IShellItem *psi, + [in] int iStateNumber); + + HRESULT EnsureItemVisible( + [in] IShellItem *psi); + + HRESULT SetTheme( + [in, string] LPCWSTR pszTheme); + + HRESULT GetNextItem( + [in, unique] IShellItem *psi, + [in] NSTCGNI nstcgi, + [out] IShellItem **ppsiNext); + + HRESULT HitTest( + [in] POINT *ppt, + [out] IShellItem **ppsiOut); + + HRESULT GetItemRect( + [in] IShellItem *psi, + [out] RECT *prect); + + HRESULT CollapseAll(); +} + +/***************************************************************************** + * INameSpaceTreeControl2 interface + */ +[ + object, + uuid(7CC7AED8-290E-49BC-8945-C1401CC9306C) +] +interface INameSpaceTreeControl2 : INameSpaceTreeControl +{ + typedef [v1_enum] enum NSTCSTYLE2 { + NSTCS2_DEFAULT = 0x00, + NSTCS2_INTERRUPTNOTIFICATIONS = 0x01, + NSTCS2_SHOWNULLSPACEMENU = 0x02, + NSTCS2_DISPLAYPADDING = 0x04, + NSTCS2_DISPLAYPINNEDONLY = 0x08, + NTSCS2_NOSINGLETONAUTOEXPAND = 0x10, /* The apparent typo here is */ + NTSCS2_NEVERINSERTNONENUMERATED = 0x20 /* present also in the Win SDK */ + } NSTCSTYLE2; + cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(NSTCSTYLE2)") + + HRESULT SetControlStyle( + [in] NSTCSTYLE nstcsMask, + [in] NSTCSTYLE nstcsStyle); + + HRESULT GetControlStyle( + [in] NSTCSTYLE nstcsMask, + [out] NSTCSTYLE *pnstcsStyle); + + HRESULT SetControlStyle2( + [in] NSTCSTYLE2 nstcsMask, + [in] NSTCSTYLE2 nstcsStyle); + + HRESULT GetControlStyle2( + [in] NSTCSTYLE2 nstcsMask, + [out] NSTCSTYLE2 *pnstcsStyle); +} + +/***************************************************************************** + * INameSpaceTreeControlEvents interface + */ + +[ + object, + uuid(93D77985-B3D8-4484-8318-672CDDA002CE), + local +] +interface INameSpaceTreeControlEvents : IUnknown +{ + [v1_enum] enum _NSTCEHITTEST { + NSTCEHT_NOWHERE = 0x0001, + NSTCEHT_ONITEMICON = 0x0002, + NSTCEHT_ONITEMLABEL = 0x0004, + NSTCEHT_ONITEMIDENT = 0x0008, + NSTCEHT_ONITEMBUTTON = 0x0010, + NSTCEHT_ONITEMRIGHT = 0x0020, + NSTCEHT_ONITEMSTATEICON = 0x0040, + NSTCEHT_ONITEM = 0x0046, + NSTCEHT_ONITEMTABBUTTON = 0x1000 + }; + typedef DWORD NSTCEHITTEST; + + [v1_enum] enum _NSTCECLICKTYPE { + NSTCECT_LBUTTON = 0x1, + NSTCECT_MBUTTON = 0x2, + NSTCECT_RBUTTON = 0x3, + NSTCECT_BUTTON = 0x3, + NSTCECT_DBLCLICK = 0x4 + }; + typedef DWORD NSTCECLICKTYPE; + + HRESULT OnItemClick( + [in] IShellItem *psi, + [in] NSTCEHITTEST nstceHitTest, + [in] NSTCECLICKTYPE nstceClickType); + + HRESULT OnPropertyItemCommit( + [in] IShellItem *psi); + + HRESULT OnItemStateChanging( + [in] IShellItem *psi, + [in] NSTCITEMSTATE nstcisMask, + [in] NSTCITEMSTATE nstcisState); + + HRESULT OnItemStateChanged( + [in] IShellItem *psi, + [in] NSTCITEMSTATE nstcisMask, + [in] NSTCITEMSTATE nstcisState); + + HRESULT OnSelectionChanged( + [in] IShellItemArray *psiaSelection); + + HRESULT OnKeyboardInput( + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam); + + HRESULT OnBeforeExpand( + [in] IShellItem *psi); + + HRESULT OnAfterExpand( + [in] IShellItem *psi); + + HRESULT OnBeginLabelEdit( + [in] IShellItem *psi); + + HRESULT OnEndLabelEdit( + [in] IShellItem *psi); + + HRESULT OnGetToolTip( + [in] IShellItem *psi, + [out, string, size_is(cchTip)] LPWSTR pszTip, + [in] int cchTip); + + HRESULT OnBeforeItemDelete( + [in] IShellItem *psi); + + HRESULT OnItemAdded( + [in] IShellItem *psi, + [in] BOOL fIsRoot); + + HRESULT OnItemDeleted( + [in] IShellItem *psi, + [in] BOOL fIsRoot); + + HRESULT OnBeforeContextMenu( + [in, unique] IShellItem *psi, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT OnAfterContextMenu( + [in] IShellItem *psi, + [in] IContextMenu *pcmIn, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT OnBeforeStateImageChange( + [in] IShellItem *psi); + + HRESULT OnGetDefaultIconIndex( + [in] IShellItem *psi, + [out] int *piDefaultIcon, + [out] int *piOpenIcon); +} + +/***************************************************************************** + * INameSpaceTreeControlCustomDraw interface + */ +[ + object, + uuid(2D3BA758-33EE-42D5-BB7B-5F3431D86C78), + local +] + +interface INameSpaceTreeControlCustomDraw : IUnknown +{ + typedef struct NSTCCUSTOMDRAW + { + IShellItem *psi; + UINT uItemState; + NSTCITEMSTATE nstcis; + LPCWSTR pszText; + int iImage; + HIMAGELIST himl; + int iLevel; + int iIndent; + } NSTCCUSTOMDRAW; + + HRESULT PrePaint( + [in] HDC hdc, + [in] RECT *prc, + [out] LRESULT *plres); + + HRESULT PostPaint( + [in] HDC hdc, + [in] RECT *prc); + + HRESULT ItemPrePaint( + [in] HDC hdc, + [in] RECT *prc, + [in, out] COLORREF *pclrText, + [in, out] COLORREF *pclrTextBk, + [out] LRESULT *plres); + + HRESULT ItemPostPaint( + [in] HDC hdc, + [in] RECT *prc, + [in] NSTCCUSTOMDRAW *pnstccdItem); +} + +/***************************************************************************** + * INameSpaceTreeControlDropHandler interface + */ +[ + object, + uuid(F9C665D6-C2F2-4C19-BF33-8322D7352F51), + local +] +interface INameSpaceTreeControlDropHandler : IUnknown +{ + HRESULT OnDragEnter( + [in, unique] IShellItem *psiOver, + [in] IShellItemArray *psiaData, + [in] BOOL fOutsideSource, + [in] DWORD grfKeyState, + [in, out] DWORD *pdwEffect); + + HRESULT OnDragOver( + [in, unique] IShellItem *psiOver, + [in] IShellItemArray *psiaData, + [in] DWORD grfKeyState, + [in, out] DWORD *pdwEffect); + + HRESULT OnDragPosition( + [in, unique] IShellItem *psiOver, + [in] IShellItemArray *psiaData, + [in] int iNewPosition, + [in] int iOldPosition); + + HRESULT OnDrop( + [in, unique] IShellItem *psiOver, + [in] IShellItemArray *psiaData, + [in] int iPosition, + [in] DWORD grfKeyState, + [in, out] DWORD *pdwEffect); + + HRESULT OnDropPosition( + [in, unique] IShellItem *psiOver, + [in] IShellItemArray *psiaData, + [in] int iNewPosition, + [in] int iOldPosition); + + HRESULT OnDragLeave( + [in, unique] IShellItem *psiOver); +} +cpp_quote("#define NSTCDHPOS_ONTOP -1") + +interface IFileDialog; + +typedef [v1_enum] enum FDE_OVERWRITE_RESPONSE +{ + FDEOR_DEFAULT = 0, + FDEOR_ACCCEP = 1, + FDEOR_REFUSE = 2 +} FDE_OVERWRITE_RESPONSE; + +typedef [v1_enum] enum FDE_SHAREVIOLATION_RESPONSE +{ + FDESVR_DEFAULT = 0, + FDESVR_ACCEPT = 1, + FDESVR_REFUSE = 2 +} FDE_SHAREVIOLATION_RESPONSE; + +/***************************************************************************** + * IFileDialogEvents interface + */ +[ + object, + uuid(973510DB-7D7F-452B-8975-74A85828D354), + pointer_default(unique) +] +interface IFileDialogEvents : IUnknown +{ + HRESULT OnFileOk( + [in] IFileDialog *pfd); + + HRESULT OnFolderChanging( + [in] IFileDialog *pfd, + [in] IShellItem *psiFolder); + + HRESULT OnFolderChange( + [in] IFileDialog *pfd); + + HRESULT OnSelectionChange( + [in] IFileDialog *pfd); + + HRESULT OnShareViolation( + [in] IFileDialog *pfd, + [in] IShellItem *psi, + [out] FDE_SHAREVIOLATION_RESPONSE *pResponse); + + HRESULT OnTypeChange( + [in] IFileDialog *pfd); + + HRESULT OnOverwrite( + [in] IFileDialog *pfd, + [in] IShellItem *psi, + [out] FDE_OVERWRITE_RESPONSE *pResponse); +} + +/***************************************************************************** + * IModalWindow interface + */ +[ + object, + uuid(B4DB1657-70D7-485E-8E3E-6FCB5A5C1802), + pointer_default(unique) +] +interface IModalWindow : IUnknown +{ + [local] + HRESULT Show( + [in, unique, annotation("__in_opt")] HWND hwndOwner); + + [call_as(Show)] + HRESULT RemoteShow( + [in, unique] HWND hwndOwner); +} + +typedef [v1_enum] enum FDAP +{ + FDAP_BOTTOM = 0, + FDAP_TOP = 1 +} FDAP; + +/***************************************************************************** + * IFileDialog interface + */ +[ + object, + uuid(42F85136-DB7E-439C-85F1-E4075D135FC8), + pointer_default(unique) +] +interface IFileDialog : IModalWindow +{ + [v1_enum] enum _FILEOPENDIALOGOPTIONS + { + FOS_OVERWRITEPROMPT = 0x00000002, + FOS_STRICTFILETYPES = 0x00000004, + FOS_NOCHANGEDIR = 0x00000008, + FOS_PICKFOLDERS = 0x00000020, + FOS_FORCEFILESYSTEM = 0x00000040, + FOS_ALLNONSTORAGEITEMS = 0x00000080, + FOS_NOVALIDATE = 0x00000100, + FOS_ALLOWMULTISELECT = 0x00000200, + FOS_PATHMUSTEXIST = 0x00000800, + FOS_FILEMUSTEXIST = 0x00001000, + FOS_CREATEPROMPT = 0x00002000, + FOS_SHAREAWARE = 0x00004000, + FOS_NOREADONLYRETURN = 0x00008000, + FOS_NOTESTFILECREATE = 0x00010000, + FOS_HIDEMRUPLACES = 0x00020000, + FOS_HIDEPINNEDPLACES = 0x00040000, + FOS_NODEREFERENCELINKS = 0x00100000, + FOS_DONTADDTORECENT = 0x02000000, + FOS_FORCESHOWHIDDEN = 0x10000000, + FOS_DEFAULTNOMINIMODE = 0x20000000, + FOS_FORCEPREVIEWPANEON = 0x40000000 + }; + typedef DWORD FILEOPENDIALOGOPTIONS; + + HRESULT SetFileTypes( + [in] UINT cFileTypes, + [in, size_is(cFileTypes)] const COMDLG_FILTERSPEC *rgFilterSpec); + + HRESULT SetFileTypeIndex( + [in] UINT iFileType); + + HRESULT GetFileTypeIndex( + [out] UINT *piFileType); + + HRESULT Advise( + [in] IFileDialogEvents *pfde, + [out] DWORD *pdwCookie); + + HRESULT Unadvise( + [in] DWORD dwCookie); + + HRESULT SetOptions( + [in] FILEOPENDIALOGOPTIONS fos); + + HRESULT GetOptions( + [in] FILEOPENDIALOGOPTIONS *pfos); + + HRESULT SetDefaultFolder( + [in] IShellItem *psi); + + HRESULT SetFolder( + [in] IShellItem *psi); + + HRESULT GetFolder( + [out] IShellItem **ppsi); + + HRESULT GetCurrentSelection( + [out] IShellItem **ppsi); + + HRESULT SetFileName( + [in, string] LPCWSTR pszName); + + HRESULT GetFileName( + [out, string] LPWSTR *pszName); + + HRESULT SetTitle( + [in, string] LPCWSTR pszTitle); + + HRESULT SetOkButtonLabel( + [in, string] LPCWSTR pszText); + + HRESULT SetFileNameLabel( + [in, string] LPCWSTR pszLabel); + + HRESULT GetResult( + [out] IShellItem **ppsi); + + HRESULT AddPlace( + [in] IShellItem *psi, + [in] FDAP fdap); + + HRESULT SetDefaultExtension( + [in, string] LPCWSTR pszDefaultExtension); + + HRESULT Close( + [in] HRESULT hr); + + HRESULT SetClientGuid( + [in] REFGUID guid); + + HRESULT ClearClientData(); + + HRESULT SetFilter( + [in] IShellItemFilter *pFilter); +} + +/***************************************************************************** + * IFileDialog2 interface + */ +[ + object, + uuid(61744FC7-85B5-4791-A9B0-272276309B13), + pointer_default(unique) +] +interface IFileDialog2 : IFileDialog +{ + HRESULT SetCancelButtonLabel( + [in] LPCWSTR pszLabel); + + HRESULT SetNavigationRoot( + [in] IShellItem *psi); +} + +/***************************************************************************** + * IFileOperationProgressSink interface + */ +[ + object, + uuid(04B0F1A7-9490-44BC-96E1-4296A31252E2), + pointer_default(unique) +] +interface IFileOperationProgressSink : IUnknown +{ + HRESULT StartOperations(); + + HRESULT FinishOperations( + [in] HRESULT hrResult); + + HRESULT PreRenameItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in, unique, string] LPCWSTR pszNewName); + + HRESULT PostRenameItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in, string] LPCWSTR pszNewName, + [in] HRESULT hrRename, + [in] IShellItem *psiNewlyCreated); + + HRESULT PreMoveItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName); + + HRESULT PostMoveItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName, + [in] HRESULT hrMove, + [in] IShellItem *psiNewlyCreated); + + HRESULT PreCopyItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName); + + HRESULT PostCopyItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName, + [in] HRESULT hrCopy, + [in] IShellItem *psiNewlyCreated); + + HRESULT PreDeleteItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem); + + HRESULT PostDeleteItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] HRESULT hrDelete, + [in] IShellItem *psiNewlyCreated); + + HRESULT PreNewItem( + [in] DWORD dwFlags, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName); + + HRESULT PostNewItem( + [in] DWORD dwFlags, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName, + [in, unique, string] LPCWSTR pszTemplateName, + [in] DWORD dwFileAttributes, + [in] HRESULT hrNew, + [in] IShellItem *psiNewItem); + + HRESULT UpdateProgress( + [in] UINT iWorkTotal, + [in] UINT iWorkSoFar); + + HRESULT ResetTimer(); + + HRESULT PauseTimer(); + + HRESULT ResumeTimer(); +} + +/***************************************************************************** + * IFileSaveDialog interface + */ +[ + object, + uuid(84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB), + pointer_default(unique) +] +interface IFileSaveDialog : IFileDialog +{ + HRESULT SetSaveAsItem( + [in] IShellItem *psi); + + HRESULT SetProperties( + [in] IPropertyStore *pStore); + + HRESULT SetCollectedProperties( + [in] IPropertyDescriptionList *pList, + [in] BOOL fAppendDefault); + + HRESULT GetProperties( + [in] IPropertyStore **ppStore); + + HRESULT ApplyProperties( + [in] IShellItem *psi, + [in] IPropertyStore *pStore, + [in, unique] HWND hwnd, + [in, unique] IFileOperationProgressSink *pSink); +} + + +/***************************************************************************** + * IFileOpenDialog interface + */ +[ + object, + uuid(D57C7288-D4AD-4768-BE02-9D969532D960), + pointer_default(unique) +] +interface IFileOpenDialog : IFileDialog +{ + HRESULT GetResults( + [out] IShellItemArray **ppenum); + + HRESULT GetSelectedItems( + [out] IShellItemArray **ppsai); +} + +typedef [v1_enum] enum CDCONTROLSTATEF +{ + CDCS_INACTIVE = 0x0, + CDCS_ENABLED = 0x1, + CDCS_VISIBLE = 0x2, + CDCS_ENABLEDVISIBLE = 0x3 +} CDCONTROLSTATEF; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CDCONTROLSTATEF)") +/***************************************************************************** + * IFileDialogCustomize interface + */ +[ + object, + uuid(E6FDD21A-163F-4975-9C8C-A69F1BA37034), + pointer_default(unique) +] +interface IFileDialogCustomize : IUnknown +{ + HRESULT EnableOpenDropDown( + [in] DWORD dwIDCtl); + + HRESULT AddMenu( + [in] DWORD dwIDCtl, + [in, string] LPCWSTR pszLabel); + + HRESULT AddPushButton( + [in] DWORD dwIDCtl, + [in, string] LPCWSTR pszLabel); + + HRESULT AddComboBox( + [in] DWORD dwIDCtl); + + HRESULT AddRadioButtonList( + [in] DWORD dwIDCtl); + + HRESULT AddCheckButton( + [in] DWORD dwIDCtl, + [in, string] LPCWSTR pszLabel, + [in] BOOL bChecked); + + HRESULT AddEditBox( + [in] DWORD dwIDCtl, + [in, string] LPCWSTR pszText); + + HRESULT AddSeparator( + [in] DWORD dwIDCtl); + + HRESULT AddText( + [in] DWORD dwIDCtl, + [in, string] LPCWSTR pszText); + + HRESULT SetControlLabel( + [in] DWORD dwIDCtl, + [in, string] LPCWSTR pszLabel); + + HRESULT GetControlState( + [in] DWORD dwIDCtl, + [out] CDCONTROLSTATEF *pdwState); + + HRESULT SetControlState( + [in] DWORD dwIDCtl, + [in] CDCONTROLSTATEF dwState); + + HRESULT GetEditBoxText( + [in] DWORD dwIDCtl, + [out, string] WCHAR **ppszText); + + HRESULT SetEditBoxText( + [in] DWORD dwIDCtl, + [in, string] LPCWSTR pszText); + + HRESULT GetCheckButtonState( + [in] DWORD dwIDCtl, + [out] BOOL *pbChecked); + + HRESULT SetCheckButtonState( + [in] DWORD dwIDCtl, + [in] BOOL bChecked); + + HRESULT AddControlItem( + [in] DWORD dwIDCtl, + [in] DWORD dwIDItem, + [in] LPCWSTR pszLabel); + + HRESULT RemoveControlItem( + [in] DWORD dwIDCtl, + [in] DWORD dwIDItem); + + HRESULT RemoveAllControlItems( + [in] DWORD dwIDCtl); + + HRESULT GetControlItemState( + [in] DWORD dwIDCtl, + [in] DWORD dwIDItem, + [out] CDCONTROLSTATEF *pdwState); + + HRESULT SetControlItemState( + [in] DWORD dwIDCtl, + [in] DWORD dwIDItem, + [in] CDCONTROLSTATEF dwState); + + HRESULT GetSelectedControlItem( + [in] DWORD dwIDCtl, + [out] DWORD *pdwIDItem); + + HRESULT SetSelectedControlItem( + [in] DWORD dwIDCtl, + [in] DWORD dwIDItem); + + HRESULT StartVisualGroup( + [in] DWORD dwIDCtl, + [in, string] LPCWSTR pszLabel); + + HRESULT EndVisualGroup(); + + HRESULT MakeProminent( + [in] DWORD dwIDCtl); + + HRESULT SetControlItemText( + [in] DWORD dwIDCtl, + [in] DWORD dwIDItem, + [in, string] LPCWSTR pszLabel); +} + +/***************************************************************************** + * IFileDialogControlEvents interface + */ +[ + object, + uuid(36116642-D713-4B97-9B83-7484A9D00433), + pointer_default(unique) +] +interface IFileDialogControlEvents : IUnknown +{ + HRESULT OnItemSelected( + [in] IFileDialogCustomize *pfdc, + [in] DWORD dwIDCtl, + [in] DWORD dwIDItem); + + HRESULT OnButtonClicked( + [in] IFileDialogCustomize *pfdc, + [in] DWORD dwIDCtl); + + HRESULT OnCheckButtonToggled( + [in] IFileDialogCustomize *pfdc, + [in] BOOL dwIDCtl, + [in] BOOL bChecked); + + HRESULT OnControlActivating( + [in] IFileDialogCustomize *pfdc, + [in] DWORD dwIDCtl); +} + +typedef [v1_enum] enum tagKF_CATEGORY +{ + KF_CATEGORY_VIRTUAL = 0x00000001, + KF_CATEGORY_FIXED = 0x00000002, + KF_CATEGORY_COMMON = 0x00000003, + KF_CATEGORY_PERUSER = 0x00000004 +} KF_CATEGORY; + +typedef [v1_enum] enum tagKF_REDIRECTION_CAPABILITIES +{ + KF_REDIRECTION_CAPABILITIES_ALLOW_ALL = 0x000000ff, + KF_REDIRECTION_CAPABILITIES_REDIRECTABLE = 0x00000001, + KF_REDIRECTION_CAPABILITIES_DENY_ALL = 0x000fff00, + KF_REDIRECTION_CAPABILITIES_DENY_POLICY_REDIRECTED = 0x00000100, + KF_REDIRECTION_CAPABILITIES_DENY_POLICY = 0x00000200, + KF_REDIRECTION_CAPABILITIES_DENY_PERMISSIONS = 0x00000400 +} KF_REDIRECTION_CAPABILITIES; + +typedef [v1_enum] enum tagKF_DEFINITION_FLAGS +{ + KFDF_LOCAL_REDIRECT_ONLY = 0x00000002, + KFDF_ROAMABLE = 0x00000004, + KFDF_PRECREATE = 0x00000008, + KFDF_STREAM = 0x00000010, + KFDF_PUBLISHEXPANDEDPATH = 0x00000020 +} KF_DEFINITION_FLAGS; + +typedef struct tagKNOWNFOLDER_DEFINITION +{ + KF_CATEGORY category; + LPWSTR pszName; + LPWSTR pszDescription; + KNOWNFOLDERID fidParent; + LPWSTR pszRelativePath; + LPWSTR pszParsingName; + LPWSTR pszTooltip; + LPWSTR pszLocalizedName; + LPWSTR pszIcon; + LPWSTR pszSecurity; + DWORD dwAttributes; + KF_DEFINITION_FLAGS kfdFlags; + FOLDERTYPEID ftidType; +} KNOWNFOLDER_DEFINITION; + +[ + object, + uuid(3aa7af7e-9b36-420C-a8e3-f77d4674a488), + pointer_default(ref) +] +interface IKnownFolder : IUnknown +{ + HRESULT GetId( + [out] KNOWNFOLDERID *pkfid); + + HRESULT GetCategory( + [out] KF_CATEGORY *pCategory); + + HRESULT GetShellItem( + [in] DWORD dwFlags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPath( + [in] DWORD dwFlags, + [out, string] LPWSTR *ppszPath); + + HRESULT SetPath( + [in] DWORD dwFlags, + [in, string] LPCWSTR pszPath); + + HRESULT GetIDList( + [in] DWORD dwFlags, + [out] PIDLIST_ABSOLUTE *ppidl); + + HRESULT GetFolderType( + [out] FOLDERTYPEID *pftid); + + HRESULT GetRedirectionCapabilities( + [out] KF_REDIRECTION_CAPABILITIES *pCapabilities); + + HRESULT GetFolderDefinition( + [out] KNOWNFOLDER_DEFINITION *pKFD); +} + +typedef [v1_enum] enum tagKF_REDIRECT_FLAGS +{ + KF_REDIRECT_USER_EXCLUSIVE = 0x00000001, + KF_REDIRECT_COPY_SOURCE_DACL = 0x00000002, + KF_REDIRECT_OWNER_USER = 0x00000004, + KF_REDIRECT_SET_OWNER_EXPLICIT = 0x00000008, + KF_REDIRECT_CHECK_ONLY = 0x00000010, + KF_REDIRECT_WITH_UI = 0x00000020, + KF_REDIRECT_UNPIN = 0x00000040, + KF_REDIRECT_PIN = 0x00000080, + KF_REDIRECT_COPY_CONTENTS = 0x00000200, + KF_REDIRECT_DEL_SOURCE_CONTENTS = 0x00000400, + KF_REDIRECT_EXCLUDE_ALL_KNOWN_SUBFOLDERS = 0x00000800 +} KF_REDIRECT_FLAGS; + +[ + object, + uuid(8BE2D872-86AA-4d47-B776-32CCA40C7018), + pointer_default(ref) +] +interface IKnownFolderManager : IUnknown +{ + typedef [v1_enum] enum tagFFFP_MODE + { + FFFP_EXACTMATCH, + FFFP_NEARESTPARENTMATCH + } FFFP_MODE; + + HRESULT FolderIdFromCsidl( + [in] int nCsidl, + [out] KNOWNFOLDERID *pfid); + + HRESULT FolderIdToCsidl( + [in] REFKNOWNFOLDERID rfid, + [out] int *pnCsidl); + + HRESULT GetFolderIds( + [out, size_is(, *pCount)] KNOWNFOLDERID **ppKFId, + [in, out] UINT *pCount); + + HRESULT GetFolder( + [in] REFKNOWNFOLDERID rfid, + [out] IKnownFolder **ppkf); + + HRESULT GetFolderByName( + [in, string] LPCWSTR pszCanonicalName, + [out] IKnownFolder **ppkf); + + HRESULT RegisterFolder( + [in] REFKNOWNFOLDERID rfid, + [in] KNOWNFOLDER_DEFINITION const *pKFD); + + HRESULT UnregisterFolder( + [in] REFKNOWNFOLDERID rfid); + + HRESULT FindFolderFromPath( + [in, string] LPCWSTR pszPath, + [in] FFFP_MODE mode, + [out] IKnownFolder **ppkf); + + HRESULT FindFolderFromIDList( + [in] PCIDLIST_ABSOLUTE pidl, + [out] IKnownFolder **ppkf); + + HRESULT Redirect( + [in] REFKNOWNFOLDERID rfid, + [in, unique] HWND hwnd, + [in] KF_REDIRECT_FLAGS flags, + [in, unique, string] LPCWSTR pszTargetPath, + [in] UINT cFolders, + [in, size_is(cFolders), unique] KNOWNFOLDERID const *pExclusion, + [out, string] LPWSTR *ppszError); +} + +/* function for releasing structure returned from IKnownFolder::GetFolderDefinition */ +cpp_quote("static inline void FreeKnownFolderDefinitionFields(KNOWNFOLDER_DEFINITION *pKFD)") +cpp_quote("{") +cpp_quote(" CoTaskMemFree(pKFD->pszName);") +cpp_quote(" CoTaskMemFree(pKFD->pszDescription);") +cpp_quote(" CoTaskMemFree(pKFD->pszRelativePath);") +cpp_quote(" CoTaskMemFree(pKFD->pszParsingName);") +cpp_quote(" CoTaskMemFree(pKFD->pszTooltip);") +cpp_quote(" CoTaskMemFree(pKFD->pszLocalizedName);") +cpp_quote(" CoTaskMemFree(pKFD->pszIcon);") +cpp_quote(" CoTaskMemFree(pKFD->pszSecurity);") +cpp_quote("}") + +typedef [v1_enum] enum ASSOCIATIONLEVEL { + AL_MACHINE, + AL_EFFECTIVE, + AL_USER +} ASSOCIATIONLEVEL; + +typedef [v1_enum] enum ASSOCIATIONTYPE { + AT_FILEEXTENSION, + AT_URLPROTOCOL, + AT_STARTMENUCLIENT, + AT_MIMETYPE +} ASSOCIATIONTYPE; + +[ + object, + uuid(4e530b0a-e611-4c77-a3ac-9031d022281b), + pointer_default(unique) +] +interface IApplicationAssociationRegistration : IUnknown +{ + HRESULT QueryCurrentDefault( + [in, string] LPCWSTR pszQuery, + [in] ASSOCIATIONTYPE atQueryType, + [in] ASSOCIATIONLEVEL alQueryLevel, + [out, string] LPWSTR *ppszAssociation); + + HRESULT QueryAppIsDefault( + [in, string] LPCWSTR pszQuery, + [in] ASSOCIATIONTYPE atQueryType, + [in] ASSOCIATIONLEVEL alQueryLevel, + [in, string] LPCWSTR pszAppRegistryName, + [out] BOOL *pfDefault); + + HRESULT QueryAppIsDefaultAll( + [in] ASSOCIATIONLEVEL alQueryLevel, + [in, string] LPCWSTR pszAppRegistryName, + [out] BOOL* pfDefault); + + HRESULT SetAppAsDefault( + [in, string] LPCWSTR pszAppRegistryName, + [in, string] LPCWSTR pszSet, + [in] ASSOCIATIONTYPE atSetType); + + HRESULT SetAppAsDefaultAll( + [in, string] LPCWSTR pszAppRegistryName); + + HRESULT ClearUserAssociations(); +} + +[ + uuid(6332debf-87b5-4670-90c0-5e57b408a49e), + object, + pointer_default(unique) +] +interface ICustomDestinationList : IUnknown +{ + typedef [v1_enum] enum KNOWNDESTCATEGORY { + KDC_FREQUENT = 1, + KDC_RECENT + } KNOWNDESTCATEGORY; + + HRESULT SetAppID([in, string] LPCWSTR pszAppID); + + HRESULT BeginList( + [out] UINT *pcMinSlots, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT AppendCategory( + [in, string] LPCWSTR pszCategory, + [in] IObjectArray *poa); + + HRESULT AppendKnownCategory([in] KNOWNDESTCATEGORY category); + HRESULT AddUserTasks([in] IObjectArray *poa); + HRESULT CommitList(); + + HRESULT GetRemovedDestinations( + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT DeleteList([in, unique, string] LPCWSTR pszAppID); + HRESULT AbortList(); +} + +/***************************************************************************** + * ShellObjects typelibrary + */ +[ + uuid(50A7E9B1-70EF-11D1-B75A-00A0C90564FE), + lcid(0x0000), + version(1.0) +] +library ShellObjects +{ + [ + uuid(71F96385-DDD6-48D3-A0C1-AE06E8B055FB) + ] + coclass ExplorerBrowser + { + interface IExplorerBrowser; + } + + [ + uuid(DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7) + ] + coclass FileOpenDialog + { + interface IFileOpenDialog; + } + + [ + uuid(C0B4E2F3-BA21-4773-8DBA-335EC946EB8B) + ] + coclass FileSaveDialog + { + interface IFileSaveDialog; + } + + [ + uuid(AE054212-3535-4430-83ED-D501AA6680E6) + ] + coclass NamespaceTreeControl + { + interface INameSpaceTreeControl2; + } + + [ + uuid(4df0c730-df9d-4ae3-9153-aa6b82e9795a) + ] + coclass KnownFolderManager + { + interface IKnownFolderManager; + } + + [ + uuid(591209c7-767b-42b2-9fba-44ee4615f2c7) + ] + coclass ApplicationAssociationRegistration + { + interface IApplicationAssociationRegistration; + } + + [ + uuid(00021401-0000-0000-c000-000000000046) + ] + coclass ShellLink + { + interface IShellLinkW; + } + + [ + uuid(56fdf344-fd6d-11d0-958a-006097c9a090) + ] + coclass TaskbarList + { + interface ITaskbarList4; + } + + [ + uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6) + ] + coclass DestinationList { + interface ICustomDestinationList; + } + + [ + uuid(2d3468c1-36a7-43b6-ac24-d3f02fd9607a) + ] + coclass EnumerableObjectCollection + { + interface IEnumObjects; + } +} |