Commit 7ce1813f authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

shell32: Added IDispatch support for IShellFolderViewDual3.

parent 26a9f62d
...@@ -229,6 +229,16 @@ BOOL AddToEnumList(IEnumIDListImpl *list, LPITEMIDLIST pidl) DECLSPEC_HIDDEN; ...@@ -229,6 +229,16 @@ BOOL AddToEnumList(IEnumIDListImpl *list, LPITEMIDLIST pidl) DECLSPEC_HIDDEN;
*/ */
BOOL CreateFolderEnumList(IEnumIDListImpl *list, LPCWSTR lpszPath, DWORD dwFlags) 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_typelib(void) DECLSPEC_HIDDEN;
void release_desktop_folder(void) DECLSPEC_HIDDEN; void release_desktop_folder(void) DECLSPEC_HIDDEN;
......
...@@ -34,23 +34,18 @@ ...@@ -34,23 +34,18 @@
#include "shldisp.h" #include "shldisp.h"
#include "debughlp.h" #include "debughlp.h"
#include "shell32_main.h"
#include "wine/debug.h" #include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(shell); WINE_DEFAULT_DEBUG_CHANNEL(shell);
enum tid_t {
NULL_tid,
IShellDispatch6_tid,
Folder3_tid,
FolderItem2_tid,
LAST_tid
};
static ITypeLib *typelib; static ITypeLib *typelib;
static const IID * const tid_ids[] = static const IID * const tid_ids[] =
{ {
&IID_NULL, &IID_NULL,
&IID_IShellDispatch6, &IID_IShellDispatch6,
&IID_IShellFolderViewDual3,
&IID_Folder3, &IID_Folder3,
&IID_FolderItem2 &IID_FolderItem2
}; };
...@@ -118,7 +113,7 @@ void release_typelib(void) ...@@ -118,7 +113,7 @@ void release_typelib(void)
ITypeLib_Release(typelib); ITypeLib_Release(typelib);
} }
static HRESULT get_typeinfo(enum tid_t tid, ITypeInfo **typeinfo) HRESULT get_typeinfo(enum tid_t tid, ITypeInfo **typeinfo)
{ {
HRESULT hr; HRESULT hr;
......
...@@ -3483,16 +3483,23 @@ static ULONG WINAPI shellfolderviewdual_Release(IShellFolderViewDual3 *iface) ...@@ -3483,16 +3483,23 @@ static ULONG WINAPI shellfolderviewdual_Release(IShellFolderViewDual3 *iface)
static HRESULT WINAPI shellfolderviewdual_GetTypeInfoCount(IShellFolderViewDual3 *iface, UINT *pctinfo) static HRESULT WINAPI shellfolderviewdual_GetTypeInfoCount(IShellFolderViewDual3 *iface, UINT *pctinfo)
{ {
IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface); IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface);
FIXME("%p\n", This); TRACE("%p %p\n", This, pctinfo);
return E_NOTIMPL; *pctinfo = 1;
return S_OK;
} }
static HRESULT WINAPI shellfolderviewdual_GetTypeInfo(IShellFolderViewDual3 *iface, static HRESULT WINAPI shellfolderviewdual_GetTypeInfo(IShellFolderViewDual3 *iface,
UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
{ {
IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface); IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface);
FIXME("%p\n", This); HRESULT hr;
return E_NOTIMPL;
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( static HRESULT WINAPI shellfolderviewdual_GetIDsOfNames(
...@@ -3500,8 +3507,16 @@ static HRESULT WINAPI shellfolderviewdual_GetIDsOfNames( ...@@ -3500,8 +3507,16 @@ static HRESULT WINAPI shellfolderviewdual_GetIDsOfNames(
cNames, LCID lcid, DISPID *rgDispId) cNames, LCID lcid, DISPID *rgDispId)
{ {
IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface); IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface);
FIXME("%p\n", This); ITypeInfo *ti;
return E_NOTIMPL; 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, static HRESULT WINAPI shellfolderviewdual_Invoke(IShellFolderViewDual3 *iface,
...@@ -3510,8 +3525,18 @@ static HRESULT WINAPI shellfolderviewdual_Invoke(IShellFolderViewDual3 *iface, ...@@ -3510,8 +3525,18 @@ static HRESULT WINAPI shellfolderviewdual_Invoke(IShellFolderViewDual3 *iface,
UINT *puArgErr) UINT *puArgErr)
{ {
IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface); IShellViewImpl *This = impl_from_IShellFolderViewDual3(iface);
FIXME("%p\n", This); ITypeInfo *ti;
return E_NOTIMPL; 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, static HRESULT WINAPI shellfolderviewdual_get_Application(IShellFolderViewDual3 *iface,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment