shell32: Implement SHCreateShellFolderView (ordinal 256).

Used by IE7's Add On management dialog.
This commit is contained in:
Aric Stewart 2009-06-26 17:01:29 +09:00 committed by Alexandre Julliard
parent 9224609589
commit a6c81e0754
3 changed files with 69 additions and 28 deletions

View File

@ -210,7 +210,7 @@
249 stdcall -noname PathParseIconLocation(ptr) PathParseIconLocationAW
250 stdcall -noname PathRemoveExtension(ptr) PathRemoveExtensionAW
251 stdcall -noname PathRemoveArgs(ptr) PathRemoveArgsAW
256 stdcall @(ptr ptr) SHELL32_256
256 stdcall SHCreateShellFolderView(ptr ptr)
258 stdcall -noname LinkWindow_RegisterClass()
259 stdcall -noname LinkWindow_UnregisterClass()
#299 stub Shl1632_ThunkData32

View File

@ -1893,33 +1893,6 @@ HRESULT WINAPI SHCreateStdEnumFmtEtc(
return hRes;
}
/*************************************************************************
* SHELL32_256 (SHELL32.256)
*/
HRESULT WINAPI SHELL32_256(LPDWORD lpdw0, LPDWORD lpdw1)
{
HRESULT ret = S_OK;
FIXME("stub %p 0x%08x %p\n", lpdw0, lpdw0 ? *lpdw0 : 0, lpdw1);
if (!lpdw0 || *lpdw0 != 0x10)
ret = E_INVALIDARG;
else
{
LPVOID lpdata = 0;/*LocalAlloc(LMEM_ZEROINIT, 0x4E4);*/
if (!lpdata)
ret = E_OUTOFMEMORY;
else
{
/* Initialize and return unknown lpdata structure */
}
}
return ret;
}
/*************************************************************************
* SHFindFiles (SHELL32.90)
*/
@ -2140,3 +2113,36 @@ HRESULT WINAPI SHGetImageList(int iImageList, REFIID riid, void **ppv)
FIXME("STUB: %i %s\n",iImageList,debugstr_guid(riid));
return E_NOINTERFACE;
}
/*************************************************************************
* SHCreateShellFolderView [SHELL32.256]
*
* Create a new instance of the default Shell folder view object.
*
* RETURNS
* Success: S_OK
* Failure: error value
*
* NOTES
* see IShellFolder::CreateViewObject
*/
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv,
IShellView **ppsv)
{
IShellView * psf;
HRESULT hRes;
TRACE("sf=%p outer=%p callback=%p\n",
pcsfv->pshf, pcsfv->psvOuter, pcsfv->psfvcb);
psf = IShellView_Constructor(pcsfv->pshf);
if (!psf)
return E_OUTOFMEMORY;
IShellView_AddRef(psf);
hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppsv);
IShellView_Release(psf);
return hRes;
}

View File

@ -514,6 +514,31 @@ DECLARE_INTERFACE_(IACList2,IACList)
#define IACList2_SetOptions(p,a) (p)->lpVtbl->SetOptions(p,a)
#endif
/****************************************************************************
* IShellFolderViewCB interface
*/
#define INTERFACE IShellFolderViewCB
DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IShellFolderViewCB methods ***/
STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IShellFolderViewCB_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellFolderViewCB_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellFolderViewCB_Release(p) (p)->lpVtbl->Release(p)
/*** IShellFolderViewCB methods ***/
#define IShellFolderViewCB_MessageSFVCB(p,a,b,c) (p)->lpVtbl->MessageSFVCB(p,a,b,c)
#endif
/* IProgressDialog interface */
#define PROGDLG_NORMAL 0x00000000
#define PROGDLG_MODAL 0x00000001
@ -737,6 +762,16 @@ HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv);
#define SFVM_GET_WEBVIEW_THEME 86 /* undocumented */
#define SFVM_GETDEFERREDVIEWSETTINGS 92 /* undocumented */
typedef struct _SFV_CREATE
{
UINT cbSize;
IShellFolder *pshf;
IShellView *psvOuter;
IShellFolderViewCB *psfvcb;
} SFV_CREATE;
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pscfv, IShellView **ppsv);
/* Types and definitions for the SFM_* parameters */
#include <pshpack8.h>