shell32: Added IDispatch support for IShellFolderViewDual3.

oldstable
Nikolay Sivov 2015-05-08 07:44:13 +03:00 committed by Alexandre Julliard
parent 26a9f62db7
commit 7ce1813fed
3 changed files with 47 additions and 17 deletions

View File

@ -229,6 +229,16 @@ BOOL AddToEnumList(IEnumIDListImpl *list, LPITEMIDLIST pidl) DECLSPEC_HIDDEN;
*/
BOOL CreateFolderEnumList(IEnumIDListImpl *list, LPCWSTR lpszPath, DWORD dwFlags) DECLSPEC_HIDDEN;
enum tid_t {
NULL_tid,
IShellDispatch6_tid,
IShellFolderViewDual3_tid,
Folder3_tid,
FolderItem2_tid,
LAST_tid
};
HRESULT get_typeinfo(enum tid_t, ITypeInfo**) DECLSPEC_HIDDEN;
void release_typelib(void) DECLSPEC_HIDDEN;
void release_desktop_folder(void) DECLSPEC_HIDDEN;

View File

@ -34,23 +34,18 @@
#include "shldisp.h"
#include "debughlp.h"
#include "shell32_main.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(shell);
enum tid_t {
NULL_tid,
IShellDispatch6_tid,
Folder3_tid,
FolderItem2_tid,
LAST_tid
};
static ITypeLib *typelib;
static const IID * const tid_ids[] =
{
&IID_NULL,
&IID_IShellDispatch6,
&IID_IShellFolderViewDual3,
&IID_Folder3,
&IID_FolderItem2
};
@ -118,7 +113,7 @@ void release_typelib(void)
ITypeLib_Release(typelib);
}
static HRESULT get_typeinfo(enum tid_t tid, ITypeInfo **typeinfo)
HRESULT get_typeinfo(enum tid_t tid, ITypeInfo **typeinfo)
{
HRESULT hr;

View File

@ -3483,16 +3483,23 @@ static ULONG WINAPI shellfolderviewdual_Release(IShellFolderViewDual3 *iface)
static HRESULT WINAPI shellfolderviewdual_GetTypeInfoCount(IShellFolderViewDual3 *iface, UINT *pctinfo)
{
IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface);
FIXME("%p\n", This);
return E_NOTIMPL;
TRACE("%p %p\n", This, pctinfo);
*pctinfo = 1;
return S_OK;
}
static HRESULT WINAPI shellfolderviewdual_GetTypeInfo(IShellFolderViewDual3 *iface,
UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
{
IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface);
FIXME("%p\n", This);
return E_NOTIMPL;
HRESULT hr;
TRACE("(%p,%u,%d,%p)\n", This, iTInfo, lcid, ppTInfo);
hr = get_typeinfo(IShellFolderViewDual3_tid, ppTInfo);
if (SUCCEEDED(hr))
ITypeInfo_AddRef(*ppTInfo);
return hr;
}
static HRESULT WINAPI shellfolderviewdual_GetIDsOfNames(
@ -3500,8 +3507,16 @@ static HRESULT WINAPI shellfolderviewdual_GetIDsOfNames(
cNames, LCID lcid, DISPID *rgDispId)
{
IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface);
FIXME("%p\n", This);
return E_NOTIMPL;
ITypeInfo *ti;
HRESULT hr;
TRACE("(%p,%p,%p,%u,%d,%p)\n", This, riid, rgszNames, cNames, lcid,
rgDispId);
hr = get_typeinfo(IShellFolderViewDual3_tid, &ti);
if (SUCCEEDED(hr))
hr = ITypeInfo_GetIDsOfNames(ti, rgszNames, cNames, rgDispId);
return hr;
}
static HRESULT WINAPI shellfolderviewdual_Invoke(IShellFolderViewDual3 *iface,
@ -3510,8 +3525,18 @@ static HRESULT WINAPI shellfolderviewdual_Invoke(IShellFolderViewDual3 *iface,
UINT *puArgErr)
{
IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface);
FIXME("%p\n", This);
return E_NOTIMPL;
ITypeInfo *ti;
HRESULT hr;
TRACE("(%p,%d,%p,%d,%u,%p,%p,%p,%p)\n", This, dispIdMember, riid, lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
hr = get_typeinfo(IShellFolderViewDual3_tid, &ti);
if (SUCCEEDED(hr))
hr = ITypeInfo_Invoke(ti, &This->IShellFolderViewDual3_iface, dispIdMember, wFlags, pDispParams,
pVarResult, pExcepInfo, puArgErr);
return hr;
}
static HRESULT WINAPI shellfolderviewdual_get_Application(IShellFolderViewDual3 *iface,