From 1244e8c7d4f433345e9a3ad5e285044ec61673d3 Mon Sep 17 00:00:00 2001 From: Thomas Weidenmueller Date: Tue, 25 Sep 2007 11:58:40 -0600 Subject: [PATCH] shell32: Implement SHCreatePropSheetExtArrayEx. --- dlls/shell32/shell32.spec | 4 ++-- dlls/shell32/shellord.c | 10 +++++++++- include/shlobj.h | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/dlls/shell32/shell32.spec b/dlls/shell32/shell32.spec index 9beb6d3acab..6928538bcfa 100644 --- a/dlls/shell32/shell32.spec +++ b/dlls/shell32/shell32.spec @@ -156,7 +156,7 @@ 165 stdcall -noname SHCreateDirectory(long ptr) 166 stdcall -noname CallCPLEntry16(long long long long long long) 167 stdcall -noname SHAddFromPropSheetExtArray(long long long) - 168 stdcall -noname SHCreatePropSheetExtArray(long str long) + 168 stdcall -noname SHCreatePropSheetExtArray(long wstr long) 169 stdcall -noname SHDestroyPropSheetExtArray(long) 170 stdcall -noname SHReplaceFromPropSheetExtArray(long long long long) 171 stdcall -noname PathCleanupSpec(ptr ptr) @@ -182,7 +182,7 @@ 191 stdcall -noname SHUpdateImageA(str long long long) 192 stdcall -noname SHUpdateImageW(wstr long long long) 193 stdcall -noname SHHandleUpdateImage(ptr) - 194 stub SHCreatePropSheetExtArrayEx + 194 stdcall -noname SHCreatePropSheetExtArrayEx(long wstr long ptr) 195 stdcall -noname SHFree(ptr) 196 stdcall -noname SHAlloc(long) 197 stub SHGlobalDefect diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c index 52c2934c803..e3b77cfcf78 100644 --- a/dlls/shell32/shellord.c +++ b/dlls/shell32/shellord.c @@ -1587,6 +1587,14 @@ UINT WINAPI SHAddFromPropSheetExtArray(HPSXA hpsxa, LPFNADDPROPSHEETPAGE lpfnAdd * SHCreatePropSheetExtArray [SHELL32.168] */ HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface) +{ + return SHCreatePropSheetExtArrayEx(hKey, pszSubKey, max_iface, NULL); +} + +/************************************************************************* + * SHCreatePropSheetExtArrayEx [SHELL32.194] + */ +HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj) { static const WCHAR szPropSheetSubKey[] = {'s','h','e','l','l','e','x','\\','P','r','o','p','e','r','t','y','S','h','e','e','t','H','a','n','d','l','e','r','s',0}; WCHAR szHandler[64]; @@ -1652,7 +1660,7 @@ HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_if { if (SUCCEEDED(pspsx->lpVtbl->QueryInterface(pspsx, &IID_IShellExtInit, (PVOID *)&psxi))) { - if (SUCCEEDED(psxi->lpVtbl->Initialize(psxi, NULL, NULL, hKey))) + if (SUCCEEDED(psxi->lpVtbl->Initialize(psxi, NULL, pDataObj, hKey))) { /* Add the IShellPropSheetExt instance to the array */ psxa->pspsx[psxa->uiCount++] = pspsx; diff --git a/include/shlobj.h b/include/shlobj.h index cd5562d69ce..d93a69d112c 100644 --- a/include/shlobj.h +++ b/include/shlobj.h @@ -43,6 +43,7 @@ UINT WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM LPVOID WINAPI SHAlloc(ULONG); HRESULT WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*); HPSXA WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT); +HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*); DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*); DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*); #define SHCLSIDFromString WINELIB_NAME_AW(SHCLSIDFromString)