diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog index c8014e9fc..6c4679d28 100644 --- a/winsup/w32api/ChangeLog +++ b/winsup/w32api/ChangeLog @@ -1,3 +1,19 @@ +2004-01-04 Filip Navara + + * include/shlguid.h (IID_IPersistFolder2, IID_IPersistFolder3, + IID_IShellFolder2, IID_IFileSystemBindData): Add declarations. + * include/shlobj.h (EXTRASEARCH, SHCOLSTATEF, SHELLDETAILS, + PERSIST_FOLDER_TARGET_INFO): Define structures. + (IEnumExtraSearch, IShellFolder2, IFileSystemBindData, + IPersistFolder2, IPersistFolder3): Add COM interface + definitions. + (IExtractIcon[AW], IShellLink[AW], IPersistFolder, IShellView, + ICommDlgBrowser, IShellFolder2, IPersistFolder2, IPersistFolder3): + Add COBJMACROS. + (SHCreateDirectoryEx[AW], SHBindToParent): Add prototypes. + * lib/shell32.c (IID_IPersistFolder2, IID_IPersistFolder3, + IID_IShellFolder2, IID_IFileSystemBindData): Add definitions. + 2004-01-03 Danny Smith * include/mshtml.h (IHTMLDocument2): Correct write, writeln diff --git a/winsup/w32api/include/shlguid.h b/winsup/w32api/include/shlguid.h index db42c8822..5bbc7af41 100644 --- a/winsup/w32api/include/shlguid.h +++ b/winsup/w32api/include/shlguid.h @@ -63,6 +63,14 @@ extern const GUID IID_IUniformResourceLocator; extern const GUID CLSID_DragDropHelper; extern const GUID IID_IDropTargetHelper; extern const GUID IID_IDragSourceHelper; +#if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500) +extern const GUID IID_IPersistFolder2; +#endif +#if (_WIN32_WINNT >= 0x500) +extern const GUID IID_IPersistFolder3; +extern const GUID IID_IShellFolder2; +extern const GUID IID_IFileSystemBindData; +#endif #ifdef UNICODE #define IID_IFileViewer IID_IFileViewerW #define IID_IShellLink IID_IShellLinkW diff --git a/winsup/w32api/include/shlobj.h b/winsup/w32api/include/shlobj.h index 99603c5d0..6b1875d7d 100644 --- a/winsup/w32api/include/shlobj.h +++ b/winsup/w32api/include/shlobj.h @@ -449,6 +449,35 @@ typedef enum { SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS, SVUIA_INPLACEACTIVATE } SVUIA_STATUS; +#if (_WIN32_IE >= 0x0500) +typedef struct tagEXTRASEARCH +{ + GUID guidSearch; + WCHAR wszFriendlyName[80]; + WCHAR wszUrl[2084]; +} EXTRASEARCH, *LPEXTRASEARCH; +typedef DWORD SHCOLSTATEF; +typedef struct +{ + GUID fmtid; + DWORD pid; +} SHCOLUMNID, *LPSHCOLUMNID; +typedef const SHCOLUMNID *LPCSHCOLUMNID; +typedef struct _SHELLDETAILS +{ + int fmt; + int cxChar; + STRRET str; +} SHELLDETAILS, *LPSHELLDETAILS; +typedef struct +{ + LPITEMIDLIST pidlTargetFolder; + WCHAR szTargetParsingName[MAX_PATH]; + WCHAR szNetworkProvider[MAX_PATH]; + DWORD dwAttributes; + int csidl; +} PERSIST_FOLDER_TARGET_INFO; +#endif DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST); typedef IEnumIDList *LPENUMIDLIST; @@ -507,12 +536,6 @@ typedef struct { typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA; #pragma pack(pop) -typedef struct { - GUID fmtid; - DWORD pid; -} SHCOLUMNID,*LPSHCOLUMNID; -typedef const SHCOLUMNID *LPCSHCOLUMNID; - #define MAX_COLUMN_NAME_LEN 80 #define MAX_COLUMN_DESC_LEN 128 @@ -611,6 +634,14 @@ DECLARE_INTERFACE_(IExtractIconA, IUnknown) }; typedef IExtractIconA *LPEXTRACTICONA; +#ifdef COBJMACROS +#define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IExtractIconA_Release(T) (T)->lpVtbl->Release(T) +#define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e) +#define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e) +#endif + #undef INTERFACE #define INTERFACE IExtractIconW DECLARE_INTERFACE_(IExtractIconW, IUnknown) @@ -623,6 +654,14 @@ DECLARE_INTERFACE_(IExtractIconW, IUnknown) }; typedef IExtractIconW *LPEXTRACTICONW; +#ifdef COBJMACROS +#define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IExtractIconW_Release(T) (T)->lpVtbl->Release(T) +#define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e) +#define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e) +#endif + #ifdef UNICODE #define IExtractIcon IExtractIconW #define LPEXTRACTICON LPEXTRACTICONW @@ -657,6 +696,31 @@ DECLARE_INTERFACE_(IShellLinkA, IUnknown) STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE; STDMETHOD(SetPath)(THIS_ LPCSTR) PURE; }; + +#ifdef COBJMACROS +#define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellLinkA_Release(T) (T)->lpVtbl->Release(T) +#define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d) +#define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a) +#define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a) +#define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b) +#define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a) +#define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b) +#define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a) +#define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b) +#define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a) +#define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a) +#define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a) +#define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a) +#define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a) +#define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c) +#define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b) +#define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b) +#define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b) +#define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a) +#endif + #undef INTERFACE #define INTERFACE IShellLinkW DECLARE_INTERFACE_(IShellLinkW, IUnknown) @@ -684,6 +748,30 @@ DECLARE_INTERFACE_(IShellLinkW, IUnknown) STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE; }; +#ifdef COBJMACROS +#define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellLinkW_Release(T) (T)->lpVtbl->Release(T) +#define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d) +#define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a) +#define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a) +#define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b) +#define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a) +#define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b) +#define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a) +#define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b) +#define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a) +#define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a) +#define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a) +#define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a) +#define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a) +#define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c) +#define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b) +#define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b) +#define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b) +#define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a) +#endif + #undef INTERFACE #define INTERFACE IShellFolder DECLARE_INTERFACE_(IShellFolder, IUnknown) @@ -720,6 +808,62 @@ typedef IShellFolder *LPSHELLFOLDER; #define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e) #endif +#if (_WIN32_IE >= 0x0500) + +DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH); +typedef IEnumExtraSearch *LPENUMEXTRASEARCH; + +#undef INTERFACE +#define INTERFACE IShellFolder2 +DECLARE_INTERFACE_(IShellFolder2, IShellFolder) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE; + STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE; + STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE; + STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE; + STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE; + STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE; + STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE; + STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE; + STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE; + STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE; + STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE; + STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE; + STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE; + STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE; + STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE; +}; +typedef IShellFolder2 *LPSHELLFOLDER2; + +#ifdef COBJMACROS +#define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellFolder2_Release(T) (T)->lpVtbl->Release(T) +#define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f) +#define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c) +#define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d) +#define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d) +#define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c) +#define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b) +#define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c) +#define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f) +#define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c) +#define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e) +#define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a) +#define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a) +#define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c) +#define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b) +#define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c) +#define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c) +#define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b) +#endif + +#endif /* _WIN32_IE >= 0x0500 */ #undef INTERFACE #define INTERFACE ICopyHook DECLARE_INTERFACE_(ICopyHook, IUnknown) @@ -756,6 +900,17 @@ DECLARE_INTERFACE(IFileViewer) }; typedef IFileViewer *LPFILEVIEWER; +#undef INTERFACE +#define INTERFACE IFileSystemBindData +DECLARE_INTERFACE_(IFileSystemBindData, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE; + STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE; +}; + #undef INTERFACE #define INTERFACE IPersistFolder DECLARE_INTERFACE_(IPersistFolder,IPersist) @@ -768,6 +923,70 @@ DECLARE_INTERFACE_(IPersistFolder,IPersist) }; typedef IPersistFolder *LPPERSISTFOLDER; +#ifdef COBJMACROS +#define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#endif + +#if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500) + +#undef INTERFACE +#define INTERFACE IPersistFolder2 +DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE; +}; +typedef IPersistFolder2 *LPPERSISTFOLDER2; + +#ifdef COBJMACROS +#define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a) +#endif + +#endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_IE >= 0x0500) + +#undef INTERFACE +#define INTERFACE IPersistFolder3 +DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE; + STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE; + STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE; +}; +typedef IPersistFolder3 *LPPERSISTFOLDER3; + +#ifdef COBJMACROS +#define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a) +#define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c) +#define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a) +#endif + +#endif /* _WIN32_IE >= 0x0500 */ + typedef interface IShellBrowser *LPSHELLBROWSER; typedef interface IShellView *LPSHELLVIEW; @@ -820,7 +1039,6 @@ DECLARE_INTERFACE_(IShellBrowser,IOleWindow) #define INTERFACE IShellView DECLARE_INTERFACE_(IShellView,IOleWindow) { - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; @@ -843,6 +1061,29 @@ DECLARE_INTERFACE_(IShellView,IOleWindow) STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE; }; +#ifdef COBJMACROS +#define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellView_Release(T) (T)->lpVtbl->Release(T) +#define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) +#define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) +#define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a) +#ifdef _FIX_ENABLEMODELESS_CONFLICT +#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a) +#else +#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a) +#endif +#define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a) +#define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T) +#define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e) +#define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T) +#define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a) +#define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c) +#define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T) +#define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b) +#define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c) +#endif + #undef INTERFACE #define INTERFACE ICommDlgBrowser DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown) @@ -856,6 +1097,15 @@ DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown) }; typedef ICommDlgBrowser *LPCOMMDLGBROWSER; +#ifdef COBJMACROS +#define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T) +#define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T) +#define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a) +#define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b) +#define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b) +#endif + typedef GUID SHELLVIEWID; typedef struct _SV2CVW2_PARAMS { DWORD cbSize; @@ -1050,6 +1300,11 @@ HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR); #if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */ HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*); #endif +#if (_WIN32_WINNT >= 0x0500) +INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES); +INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES); +HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*); +#endif #if (_WIN32_WINNT >= 0x0501) /* XP */ HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR); HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR); @@ -1089,6 +1344,9 @@ typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; #define SHGetSpecialFolderPath SHGetSpecialFolderPathW #endif #define SHGetFolderPath SHGetFolderPathW +#if (_WIN32_WINNT >= 0x0500) +#define SHCreateDirectoryEx SHCreateDirectoryExW +#endif #if (_WIN32_WINNT >= 0x0501) #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW #endif @@ -1104,6 +1362,9 @@ typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; #define SHGetSpecialFolderPath SHGetSpecialFolderPathA #endif #define SHGetFolderPath SHGetFolderPathA +#if (_WIN32_WINNT >= 0x0500) +#define SHCreateDirectoryEx SHCreateDirectoryExA +#endif #if (_WIN32_WINNT >= 0x0501) #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA #endif diff --git a/winsup/w32api/lib/shell32.c b/winsup/w32api/lib/shell32.c index c65442453..8dc72fd02 100644 --- a/winsup/w32api/lib/shell32.c +++ b/winsup/w32api/lib/shell32.c @@ -36,6 +36,10 @@ DEFINE_SHLGUID(IID_IExtractIconW,0x000214FAL,0,0); DEFINE_SHLGUID(IID_IShellExecuteHookW,0x000214FBL,0,0); DEFINE_SHLGUID(IID_IShellCopyHookW,0x000214FCL,0,0); DEFINE_GUID(IID_IShellView2,0x88E39E80L,0x3578,0x11CF,0xAE,0x69,0x08,0x00,0x2B,0x2E,0x12,0x62); +DEFINE_GUID(IID_IShellFolder2,0x93F2F68C,0x1D1B,0x11D3,0xA3,0x0E,0x00,0xC0,0x4F,0x79,0xAB,0xD1); +DEFINE_GUID(IID_IPersistFolder2,0x1AC3D9F0,0x175C,0x11D1,0x95,0xBE,0x00,0x60,0x97,0x97,0xEA,0x4F); +DEFINE_GUID(IID_IPersistFolder3,0xCEF04FDF,0xFE72,0x11D2,0x87,0xA5,0x00,0xC0,0x4F,0x68,0x37,0xCF); +DEFINE_GUID(IID_IFileSystemBindData,0x1E18D10,0x4D8B,0x11D2,0x85,0x5D,0x00,0x60,0x08,0x05,0x93,0x67); DEFINE_GUID(LIBID_SHDocVw,0xEAB22AC0,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B); DEFINE_GUID(IID_IShellExplorer,0xEAB22AC1,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B); DEFINE_GUID(DIID_DShellExplorerEvents,0xEAB22AC2,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B);