From a6a6521b06a0ddfe7fb1192abe0762051ce7a794 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sun, 11 Nov 2007 21:38:44 +0000 Subject: [PATCH] - make INewItem_Constructor compatible to be loaded as a shell extension - fix api definition of CDefFolderMenu_Create2 - disable loading of inewitem api (reenabled when default context menu api implementation is ready) svn path=/trunk/; revision=30366 --- reactos/dll/win32/shell32/shell32_main.h | 2 +- reactos/dll/win32/shell32/shellole.c | 1 + reactos/dll/win32/shell32/shv_bg_cmenu.c | 3 ++- reactos/dll/win32/shell32/shv_item_cmenu.c | 4 +++- reactos/dll/win32/shell32/shv_item_new.c | 8 ++++---- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/reactos/dll/win32/shell32/shell32_main.h b/reactos/dll/win32/shell32/shell32_main.h index 73e8e49f193..5a312ad5520 100644 --- a/reactos/dll/win32/shell32/shell32_main.h +++ b/reactos/dll/win32/shell32/shell32_main.h @@ -82,7 +82,7 @@ LPENUMFORMATETC IEnumFORMATETC_Constructor(UINT, const FORMATETC []); LPCLASSFACTORY IClassFactory_Constructor(REFCLSID); IContextMenu2 * ISvItemCm_Constructor(LPSHELLFOLDER pSFParent, LPCITEMIDLIST pidl, LPCITEMIDLIST *aPidls, UINT uItemCount); -HRESULT WINAPI INewItem_Constructor(LPSHELLFOLDER pSFParent, REFIID riid, LPVOID *ppv); +HRESULT WINAPI INewItem_Constructor(IUnknown * pUnkOuter, REFIID riif, LPVOID *ppv); IContextMenu2 * ISvStaticItemCm_Constructor(LPSHELLFOLDER pSFParent, LPCITEMIDLIST pidl, LPCITEMIDLIST *apidl, UINT cidl, HKEY hKey); IContextMenu2 * ISvBgCm_Constructor(LPSHELLFOLDER pSFParent, BOOL bDesktop); LPSHELLVIEW IShellView_Constructor(LPSHELLFOLDER); diff --git a/reactos/dll/win32/shell32/shellole.c b/reactos/dll/win32/shell32/shellole.c index 38a12960cbb..e4005afd041 100644 --- a/reactos/dll/win32/shell32/shellole.c +++ b/reactos/dll/win32/shell32/shellole.c @@ -78,6 +78,7 @@ static const struct { {&CLSID_Printers, &ISF_Printers_Constructor}, {&CLSID_RecycleBin, &RecycleBin_Constructor}, {&CLSID_OpenWith, &SHEOW_Constructor}, + {&CLSID_NewMenu, &INewItem_Constructor}, {NULL,NULL} }; diff --git a/reactos/dll/win32/shell32/shv_bg_cmenu.c b/reactos/dll/win32/shell32/shv_bg_cmenu.c index cf29529b086..e20940b1c92 100644 --- a/reactos/dll/win32/shell32/shv_bg_cmenu.c +++ b/reactos/dll/win32/shell32/shv_bg_cmenu.c @@ -226,7 +226,7 @@ static HRESULT WINAPI ISVBgCm_fnQueryContextMenu( * FIXME * load other shell extensions */ - +#if 0 if (SUCCEEDED(INewItem_Constructor(This->pSFParent, &IID_IContextMenu2, (LPVOID*)&icm))) { if (SUCCEEDED(IContextMenu_QueryContextMenu(icm, hMenu, 10, idCmdFirst, idCmdLast, uFlags))) @@ -239,6 +239,7 @@ static HRESULT WINAPI ISVBgCm_fnQueryContextMenu( This->icm_new = NULL; } } +#endif if (This->bDesktop) { diff --git a/reactos/dll/win32/shell32/shv_item_cmenu.c b/reactos/dll/win32/shell32/shv_item_cmenu.c index be9db69a6d8..f14580596fd 100644 --- a/reactos/dll/win32/shell32/shv_item_cmenu.c +++ b/reactos/dll/win32/shell32/shv_item_cmenu.c @@ -1291,7 +1291,9 @@ HRESULT WINAPI SHCreateDefaultContextMenu( * */ -INT CDefFolderMenu_Create2( +INT +WINAPI +CDefFolderMenu_Create2( LPCITEMIDLIST pidlFolder, HWND hwnd, UINT cidl, diff --git a/reactos/dll/win32/shell32/shv_item_new.c b/reactos/dll/win32/shell32/shv_item_new.c index 81119f794bf..223223c0f9c 100644 --- a/reactos/dll/win32/shell32/shv_item_new.c +++ b/reactos/dll/win32/shell32/shv_item_new.c @@ -55,7 +55,7 @@ typedef struct PSHELLNEW_ITEM s_SnHead; }INewMenuImpl; -static const GUID CLSID_NewMenu = {0xD969A300, 0xE7FF, 0x11d0, {0xA9, 0x3B, 0x00, 0xA0, 0xC9, 0x0F, 0x27, 0x19} }; +const GUID CLSID_NewMenu = {0xD969A300, 0xE7FF, 0x11d0, {0xA9, 0x3B, 0x00, 0xA0, 0xC9, 0x0F, 0x27, 0x19} }; static const IContextMenu2Vtbl cmvt; static WCHAR szNew[100]; @@ -791,7 +791,7 @@ static const IContextMenu2Vtbl cmvt = INewItem_IContextMenu_fnHandleMenuMsg }; -HRESULT WINAPI INewItem_Constructor(LPSHELLFOLDER pSFParent, REFIID riid, LPVOID *ppv) +HRESULT WINAPI INewItem_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppv) { INewMenuImpl * ow; HRESULT res; @@ -820,8 +820,8 @@ HRESULT WINAPI INewItem_Constructor(LPSHELLFOLDER pSFParent, REFIID riid, LPVOID { IShellFolder_Release(cached_ow->pSFParent); } - cached_ow->pSFParent = pSFParent; - IShellFolder_AddRef(pSFParent); + // cached_ow->pSFParent = pSFParent; + // IShellFolder_AddRef(pSFParent); res = INewItem_fnQueryInterface( cached_ow, riid, ppv ); return res;