- Add IShellView2 and IShellView3 COM interfaces

- Add IBandSite interface
- Add COM object typedefs and #defines to shtypes.idl

svn path=/trunk/; revision=33207
This commit is contained in:
Ged Murphy 2008-05-01 09:39:37 +00:00
parent 5e70dd89f7
commit 7c46bc1d7a
5 changed files with 219 additions and 147 deletions

View file

@ -46,145 +46,6 @@ static const GUID SID_HACK_SMenuPopup = {0xD1E7AFEB,0x6A2E,0x11D0,{0x8C,0x78,0x0
#define IDeskBarClient_GetSize(T,a,b) (T)->lpVtbl->GetSize(T,a,b)
#endif
#include <pshpack8.h>
typedef struct
{
DWORD dwMask;
DWORD dwState;
DWORD dwStyle;
} BANDSITEINFO;
#include <poppack.h>
#define BSIM_STATE 0x1
#define BSIM_STYLE 0x2
#define BSIS_AUTOGRIPPER 0x0
#define BSIS_NOGRIPPER 0x1
#define BSIS_ALWAYSGRIPPER 0x2
#define BSIS_LOCKED 0x100
#define BSSF_UNDELETEABLE 0x1000
DEFINE_GUID(IID_IBandSite, 0x4CF504B0, 0xDE96, 0x11D0, 0x8B, 0x3F, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xE5);
#define INTERFACE IBandSite
DECLARE_INTERFACE_(IBandSite,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IBandSite methods ***/
STDMETHOD_(HRESULT,AddBand) (THIS_ IUnknown *punk) PURE;
STDMETHOD_(HRESULT,EnumBands) (THIS_ UINT uBand, DWORD *pdwBandID) PURE;
STDMETHOD_(HRESULT,QueryBand) (THIS_ DWORD dwBandID, IDeskBand **ppstb, DWORD *pdwState, LPWSTR pszName, int cchName) PURE;
STDMETHOD_(HRESULT,SetBandState) (THIS_ DWORD dwBandID, DWORD dwMask, DWORD dwState) PURE;
STDMETHOD_(HRESULT,RemoveBand) (THIS_ DWORD dwBandID) PURE;
STDMETHOD_(HRESULT,GetBandObject) (THIS_ DWORD dwBandID, REFIID riid, VOID **ppv) PURE;
STDMETHOD_(HRESULT,SetBandSiteInfo) (THIS_ const BANDSITEINFO *pbsinfo) PURE;
STDMETHOD_(HRESULT,GetBandSiteInfo) (THIS_ BANDSITEINFO *pbsinfo) PURE;
};
#undef INTERFACE
#if defined(COBJMACROS)
/*** IUnknown methods ***/
#define IBandSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IBandSite_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IBandSite_Release(p) (p)->lpVtbl->Release(p)
/*** IBandSite methods ***/
#define IBandSite_AddBand(p,a) (p)->lpVtbl->AddBand(p,a)
#define IBandSite_EnumBands(p,a,b) (p)->lpVtbl->EnumBands(p,a,b)
#define IBandSite_QueryBand(p,a,b,c,d,e) (p)->lpVtbl->QueryBand(p,a,b,c,d,e)
#define IBandSite_SetBandState(p,a,b,c) (p)->lpVtbl->SetBandState(p,a,b,c)
#define IBandSite_RemoveBand(p,a) (p)->lpVtbl->RemoveBand(p,a)
#define IBandSite_GetBandObject(p,a,b,c) (p)->lpVtbl->GetBandObject(p,a,b,c)
#define IBandSite_SetBandSiteInfo(p,a) (p)->lpVtbl->SetBandSiteInfo(p,a)
#define IBandSite_GetBandSiteInfo(p,a) (p)->lpVtbl->GetBandSiteInfo(p,a)
#endif
#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;
#include <poppack.h>
typedef ITEMIDLIST ITEMID_CHILD;
#define PITEMID_CHILD LPITEMIDLIST
typedef const ITEMID_CHILD /* __unaligned */ *PCUITEMID_CHILD;
enum tagSV3CVW3
{
SV3CVW3_DEFAULT = 0x0,
SV3CVW3_NONINTERACTIVE = 0x1,
SV3CVW3_FORCEVIEWMODE = 0x2,
SV3CVW3_FORCEFOLDERFLAGS = 0x4
} ;
typedef DWORD SV3CVW3_FLAGS;
#define INTERFACE IShellView3
DECLARE_INTERFACE_(IShellView3,IShellView)
{
STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
#ifdef _FIX_ENABLEMODELESS_CONFLICT
STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
#else
STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
#endif
STDMETHOD(UIActivate)(THIS_ UINT) PURE;
STDMETHOD(Refresh) (THIS) PURE;
STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
STDMETHOD(DestroyViewWindow)(THIS) PURE;
STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
STDMETHOD(SaveViewState)(THIS) PURE;
STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
STDMETHOD(HandleRename)(THIS_ PCUITEMID_CHILD) PURE;
STDMETHOD(SelectAndPositionItem)(THIS_ PCUITEMID_CHILD,UINT,POINT*) PURE;
STDMETHOD(CreateViewWindow3)(THIS_ IShellBrowser*,IShellView*,SV3CVW3_FLAGS,FOLDERFLAGS,FOLDERFLAGS,FOLDERVIEWMODE,const SHELLVIEWID*,const RECT*,HWND*) PURE;
};
#undef INTERFACE
#ifdef COBJMACROS
#define IShellView3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
#define IShellView3_AddRef(T) (T)->lpVtbl->AddRef(T)
#define IShellView3_Release(T) (T)->lpVtbl->Release(T)
#define IShellView3_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
#define IShellView3_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
#define IShellView3_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a)
#ifdef _FIX_ENABLEMODELESS_CONFLICT
#define IShellView3_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a)
#else
#define IShellView3_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a)
#endif
#define IShellView3_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a)
#define IShellView3_Refresh(T) (T)->lpVtbl->Refresh(T)
#define IShellView3_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e)
#define IShellView3_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T)
#define IShellView3_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a)
#define IShellView3_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c)
#define IShellView3_SaveViewState(T) (T)->lpVtbl->SaveViewState(T)
#define IShellView3_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b)
#define IShellView3_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c)
#define IShellView3_GetView(T,a,b) (T)->lpVtbl->GetView(T,a,b)
#define IShellView3_CreateViewWindow2(T,a) (T)->lpVtbl->CreateViewWindow2(T,a)
#define IShellView3_HandleRename(T,a) (T)->lpVtbl->HandleRename(T,a)
#define IShellView3_SelectAndPositionItem(T,a,b,c) (T)->lpVtbl->SelectAndPositionItem(T,a,b,c)
#define IShellView3_CreateViewWindow3(T,a,b,c,d,e,f,g,h,i) (T)->lpVtbl->CreateViewWindow3(T,a,b,c,d,e,f,g,h,i)
#endif
#define SHGVSPB_PERUSER 0x1
#define SHGVSPB_PERFOLDER 0x4
@ -194,7 +55,6 @@ DECLARE_INTERFACE_(IShellView3,IShellView)
#define SHGVSPB_FOLDERNODEFAULTS (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER | SHGVSPB_NOAUTODEFAULTS)
#define DBC_SHOW 1
#define DBC_HIDE 0

View file

@ -145,7 +145,6 @@ typedef struct
* IShellView interface
*/
typedef GUID SHELLVIEWID;
#define SV_CLASS_NAME ("SHELLDLL_DefView")
#define FCIDM_SHVIEWFIRST 0x0000

View file

@ -388,7 +388,7 @@ typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
/*****************************************************************************
* IShellView interface
*/
interface IShellBrowser; /* forward declaration */
interface IShellBrowser;
[
object,
uuid(000214e3-0000-0000-c000-000000000046),
@ -412,7 +412,7 @@ interface IShellView : IOleWindow
typedef UINT SVSIF;
typedef enum
typedef enum tagSVGIO
{
SVGIO_BACKGROUND = 0x00000000,
SVGIO_SELECTION = 0x00000001,
@ -422,7 +422,7 @@ interface IShellView : IOleWindow
SVGIO_FLAG_VIEWORDER = 0x80000000,
} SVGIO;
typedef enum
typedef enum tagSVUIA_STATUS
{
SVUIA_DEACTIVATE = 0,
SVUIA_ACTIVATE_NOFOCUS = 1,
@ -460,6 +460,80 @@ interface IShellView : IOleWindow
}
[
uuid(88E39E80-3578-11CF-AE69-08002B2E1262),
object,
pointer_default(unique)
]
interface IShellView2 : IShellView
{
typedef GUID SHELLVIEWID;
cpp_quote("#define SV2GV_CURRENTVIEW ((UINT)-1)")
cpp_quote("#define SV2GV_DEFAULTVIEW ((UINT)-2)")
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* pvid,
[in] ULONG uView);
HRESULT CreateViewWindow2(
[in] LPSV2CVW2_PARAMS lpParams);
HRESULT HandleRename(
[in, unique] PCUITEMID_CHILD pidlNew);
HRESULT SelectAndPositionItem(
[in] PCUITEMID_CHILD pidlItem,
[in] UINT uFlags,
[in, unique] POINT *ppt);
}
[
uuid(ec39fa88-f8af-41c5-8421-38bed28f4673),
object,
pointer_default(unique)
]
interface IShellView3 : IShellView2
{
enum tagSV3CVW3
{
SV3CVW3_DEFAULT = 0x00000000,
SV3CVW3_NONINTERACTIVE = 0x00000001,
SV3CVW3_FORCEVIEWMODE = 0x00000002,
SV3CVW3_FORCEFOLDERFLAGS = 0x00000004,
};
typedef DWORD SV3CVW3_FLAGS;
HRESULT CreateViewWindow3(
[in] IShellBrowser *psbOwner,
[in, unique] IShellView *psvPrev,
[in] SV3CVW3_FLAGS dwViewFlags,
[in] FOLDERFLAGS dwMask,
[in] FOLDERFLAGS dwFlags,
[in] FOLDERVIEWMODE fvMode,
[in, unique] const SHELLVIEWID *pvid,
[in] const RECT *prcView,
[out] HWND *phwndView);
}
/*****************************************************************************
* IShellBrowser interface
*/
@ -1583,3 +1657,91 @@ interface IMenuPopup : IDeskBar
}
cpp_quote("#endif /* _WIN32_IE_IE60 */")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE40)")
/*****************************************************************************
* IBandSite interface
*/
cpp_quote("#include <pshpack8.h>")
typedef struct tagBANDSITEINFO
{
DWORD dwMask;
DWORD dwState;
DWORD dwStyle;
} BANDSITEINFO;
cpp_quote("#include <poppack.h>")
enum tagBANDSITECID {
BSID_BANDADDED,
BSID_BANDREMOVED,
};
cpp_quote("#define BSIM_STATE 0x00000001")
cpp_quote("#define BSIM_STYLE 0x00000002")
cpp_quote("#define BSSF_VISIBLE 0x00000001")
cpp_quote("#define BSSF_NOTITLE 0x00000002")
cpp_quote("#define BSSF_UNDELETEABLE 0x00001000")
cpp_quote("#define BSIS_AUTOGRIPPER 0x00000000")
cpp_quote("#define BSIS_NOGRIPPER 0x00000001")
cpp_quote("#define BSIS_ALWAYSGRIPPER 0x00000002")
cpp_quote("#define BSIS_LEFTALIGN 0x00000004")
cpp_quote("#define BSIS_SINGLECLICK 0x00000008")
cpp_quote("#define BSIS_NOCONTEXTMENU 0x00000010")
cpp_quote("#define BSIS_NODROPTARGET 0x00000020")
cpp_quote("#define BSIS_NOCAPTION 0x00000040")
cpp_quote("#define BSIS_PREFERNOLINEBREAK 0x00000080")
cpp_quote("#define BSIS_LOCKED 0x00000100")
cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)")
cpp_quote("#define BSIS_PRESERVEORDERDURINGLAYOUT 0x00000200")
cpp_quote("#endif /* _WIN32_IE_IE70 */")
cpp_quote("#define SID_SBandSite IID_IBandSite")
cpp_quote("#define CGID_BandSite IID_IBandSite")
[
object,
uuid(4CF504B0-DE96-11D0-8B3F-00A0C911E8E5)
]
interface IBandSite : IUnknown
{
HRESULT AddBand([in] IUnknown* punk);
HRESULT EnumBands(
[in] UINT uBand,
[out] DWORD* pdwBandID);
HRESULT QueryBand(
[in] DWORD dwBandID,
[out] IDeskBand** ppstb,
[out] DWORD* pdwState,
[out, string, size_is(cchName)] LPWSTR pszName,
[in] int cchName);
HRESULT SetBandState(
[in] DWORD dwBandID,
[in] DWORD dwMask,
[in] DWORD dwState);
HRESULT RemoveBand([in] DWORD dwBandID);
HRESULT GetBandObject(
[in] DWORD dwBandID,
[in] REFIID riid,
[out, iid_is(riid)] void **ppv);
HRESULT SetBandSiteInfo([in] const BANDSITEINFO *pbsinfo);
HRESULT GetBandSiteInfo([in, out] BANDSITEINFO *pbsinfo);
}
cpp_quote("#endif /* _WIN32_IE_IE40 */")

View file

@ -21,6 +21,8 @@
import "wtypes.idl";
cpp_quote("#include <pshpack1.h>")
typedef struct
{
@ -32,10 +34,60 @@ typedef const SHITEMID *LPCSHITEMID;
typedef struct _ITEMIDLIST
{
SHITEMID mkid; /* first itemid in list */
} ITEMIDLIST,*LPITEMIDLIST;
typedef const ITEMIDLIST *LPCITEMIDLIST;
} ITEMIDLIST;
cpp_quote("#if defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus)")
cpp_quote("typedef struct _ITEMIDLIST_RELATIVE : ITEMIDLIST {} ITEMIDLIST_RELATIVE;")
cpp_quote("typedef struct _ITEMID_CHILD : ITEMIDLIST_RELATIVE {} ITEMID_CHILD;")
cpp_quote("typedef struct _ITEMIDLIST_ABSOLUTE : ITEMIDLIST_RELATIVE {} ITEMIDLIST_ABSOLUTE;")
cpp_quote("#else /* !(defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus)) */")
typedef ITEMIDLIST ITEMIDLIST_RELATIVE;
typedef ITEMIDLIST ITEMID_CHILD;
typedef ITEMIDLIST ITEMIDLIST_ABSOLUTE;
cpp_quote("#endif /* defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus) */")
cpp_quote("#include <poppack.h>")
typedef [unique] BYTE_BLOB * wirePIDL;
typedef ITEMIDLIST /*__unaligned*/ * LPITEMIDLIST;
typedef const ITEMIDLIST /*__unaligned*/ * LPCITEMIDLIST;
cpp_quote("#if defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus)")
typedef ITEMIDLIST_ABSOLUTE * PIDLIST_ABSOLUTE;
typedef const ITEMIDLIST_ABSOLUTE * PCIDLIST_ABSOLUTE;
typedef const ITEMIDLIST_ABSOLUTE /*__unaligned*/ * PCUIDLIST_ABSOLUTE;
typedef ITEMIDLIST_RELATIVE * PIDLIST_RELATIVE;
typedef const ITEMIDLIST_RELATIVE * PCIDLIST_RELATIVE;
typedef ITEMIDLIST_RELATIVE /*__unaligned*/ * PUIDLIST_RELATIVE;
typedef const ITEMIDLIST_RELATIVE /*__unaligned*/ * PCUIDLIST_RELATIVE;
typedef ITEMID_CHILD * PITEMID_CHILD;
typedef const ITEMID_CHILD * PCITEMID_CHILD;
typedef ITEMID_CHILD /*__unaligned*/ * PUITEMID_CHILD;
typedef const ITEMID_CHILD /*__unaligned*/ * PCUITEMID_CHILD;
typedef PCUITEMID_CHILD const *PCUITEMID_CHILD_ARRAY;
typedef PCUIDLIST_RELATIVE const *PCUIDLIST_RELATIVE_ARRAY;
typedef PCIDLIST_ABSOLUTE const *PCIDLIST_ABSOLUTE_ARRAY;
typedef PCUIDLIST_ABSOLUTE const *PCUIDLIST_ABSOLUTE_ARRAY;
cpp_quote("#else // !(defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus))")
cpp_quote("#define PIDLIST_ABSOLUTE LPITEMIDLIST")
cpp_quote("#define PCIDLIST_ABSOLUTE LPCITEMIDLIST")
cpp_quote("#define PCUIDLIST_ABSOLUTE LPCITEMIDLIST")
cpp_quote("#define PIDLIST_RELATIVE LPITEMIDLIST")
cpp_quote("#define PCIDLIST_RELATIVE LPCITEMIDLIST")
cpp_quote("#define PUIDLIST_RELATIVE LPITEMIDLIST")
cpp_quote("#define PCUIDLIST_RELATIVE LPCITEMIDLIST")
cpp_quote("#define PITEMID_CHILD LPITEMIDLIST")
cpp_quote("#define PCITEMID_CHILD LPCITEMIDLIST")
cpp_quote("#define PUITEMID_CHILD LPITEMIDLIST")
cpp_quote("#define PCUITEMID_CHILD LPCITEMIDLIST")
cpp_quote("#define PCUITEMID_CHILD_ARRAY LPCITEMIDLIST *")
cpp_quote("#define PCUIDLIST_RELATIVE_ARRAY LPCITEMIDLIST *")
cpp_quote("#define PCIDLIST_ABSOLUTE_ARRAY LPCITEMIDLIST *")
cpp_quote("#define PCUIDLIST_ABSOLUTE_ARRAY LPCITEMIDLIST *")
cpp_quote("#endif // defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus)")
#ifndef MAX_PATH
#define MAX_PATH 260
#endif

View file

@ -122,5 +122,4 @@ DEFINE_GUID(CLSID_ComBinding, 0x00000328,0x0000,0x0000,0xc0,0x00,0x0
DEFINE_GUID(CLSID_StdEvent, 0x0000032b,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_ManualResetEvent, 0x0000032c,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_SynchronizeContainer, 0x0000032d,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(IID_IBandSite, 0x4CF504B0, 0xDE96, 0x11D0, 0x8B, 0x3F, 0x00, 0xA0, 0xC9, 0x11, 0xE8, 0xE5);
DEFINE_GUID(CLSID_RebarBandSite, 0xECD4FC4D, 0x521C, 0x11D0, 0xB7, 0x92, 0x00, 0xA0, 0xC9, 0x03, 0x12, 0xE1);