From 39077a7bf0de87142f7c2919dfe0eb32964ff3d0 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Sat, 20 Jul 2024 19:59:48 +0900 Subject: [PATCH] [BROWSEUI][SHDOCVW][SDK] Fix INamespaceProxy interface (#7156) Use correct interface definition for standardization. JIRA issue: CORE-19686 Use INamespaceProxy interface that is documented in the Microsoft official site ( https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ee318424%28v=vs.85%29 ) and Windows 10 PSDK (see um/ienamespacecontrol.idl file). --- dll/win32/browseui/explorerband.cpp | 21 ++++++++++++++++----- dll/win32/browseui/explorerband.h | 16 +++++++++++----- dll/win32/shdocvw/CFavBand.cpp | 21 ++++++++++++++++----- dll/win32/shdocvw/CFavBand.h | 16 +++++++++++----- sdk/include/reactos/shlobj_undoc.h | 10 +++++----- 5 files changed, 59 insertions(+), 25 deletions(-) diff --git a/dll/win32/browseui/explorerband.cpp b/dll/win32/browseui/explorerband.cpp index 592256e8e87..5922c74f612 100644 --- a/dll/win32/browseui/explorerband.cpp +++ b/dll/win32/browseui/explorerband.cpp @@ -1455,31 +1455,42 @@ HRESULT STDMETHODCALLTYPE CExplorerBand::Select(long paramC) } // *** INamespaceProxy *** -HRESULT STDMETHODCALLTYPE CExplorerBand::GetNavigateTarget(long paramC, long param10, long param14) + +/// Returns the ITEMIDLIST that should be navigated when an item is invoked. +STDMETHODIMP CExplorerBand::GetNavigateTarget( + _In_ PCIDLIST_ABSOLUTE pidl, + _Out_ PIDLIST_ABSOLUTE ppidlTarget, + _Out_ ULONG *pulAttrib) { UNIMPLEMENTED; return E_NOTIMPL; } -HRESULT STDMETHODCALLTYPE CExplorerBand::Invoke(long paramC) +/// Handles a user action on an item. +STDMETHODIMP CExplorerBand::Invoke(_In_ PCIDLIST_ABSOLUTE pidl) { UNIMPLEMENTED; return E_NOTIMPL; } -HRESULT STDMETHODCALLTYPE CExplorerBand::OnSelectionChanged(long paramC) +/// Called when the user has selected an item. +STDMETHODIMP CExplorerBand::OnSelectionChanged(_In_ PCIDLIST_ABSOLUTE pidl) { UNIMPLEMENTED; return E_NOTIMPL; } -HRESULT STDMETHODCALLTYPE CExplorerBand::RefreshFlags(long paramC, long param10, long param14) +/// Returns flags used to update the tree control. +STDMETHODIMP CExplorerBand::RefreshFlags( + _Out_ DWORD *pdwStyle, + _Out_ DWORD *pdwExStyle, + _Out_ DWORD *dwEnum) { UNIMPLEMENTED; return E_NOTIMPL; } -HRESULT STDMETHODCALLTYPE CExplorerBand::CacheItem(long paramC) +STDMETHODIMP CExplorerBand::CacheItem(_In_ PCIDLIST_ABSOLUTE pidl) { UNIMPLEMENTED; return E_NOTIMPL; diff --git a/dll/win32/browseui/explorerband.h b/dll/win32/browseui/explorerband.h index 7a2da27c158..5498dc605f0 100644 --- a/dll/win32/browseui/explorerband.h +++ b/dll/win32/browseui/explorerband.h @@ -160,11 +160,17 @@ public: STDMETHOD(Select)(long paramC) override; // *** INamespaceProxy *** - STDMETHOD(GetNavigateTarget)(long paramC, long param10, long param14) override; - STDMETHOD(Invoke)(long paramC) override; - STDMETHOD(OnSelectionChanged)(long paramC) override; - STDMETHOD(RefreshFlags)(long paramC, long param10, long param14) override; - STDMETHOD(CacheItem)(long paramC) override; + STDMETHOD(GetNavigateTarget)( + _In_ PCIDLIST_ABSOLUTE pidl, + _Out_ PIDLIST_ABSOLUTE ppidlTarget, + _Out_ ULONG *pulAttrib) override; + STDMETHOD(Invoke)(_In_ PCIDLIST_ABSOLUTE pidl) override; + STDMETHOD(OnSelectionChanged)(_In_ PCIDLIST_ABSOLUTE pidl) override; + STDMETHOD(RefreshFlags)( + _Out_ DWORD *pdwStyle, + _Out_ DWORD *pdwExStyle, + _Out_ DWORD *dwEnum) override; + STDMETHOD(CacheItem)(_In_ PCIDLIST_ABSOLUTE pidl) override; // *** IDispatch methods *** STDMETHOD(GetTypeInfoCount)(UINT *pctinfo) override; diff --git a/dll/win32/shdocvw/CFavBand.cpp b/dll/win32/shdocvw/CFavBand.cpp index 66e82d578ec..b839f2cfdcd 100644 --- a/dll/win32/shdocvw/CFavBand.cpp +++ b/dll/win32/shdocvw/CFavBand.cpp @@ -530,31 +530,42 @@ STDMETHODIMP CFavBand::Select(long paramC) // *** INamespaceProxy *** -STDMETHODIMP CFavBand::GetNavigateTarget(long paramC, long param10, long param14) +/// Returns the ITEMIDLIST that should be navigated when an item is invoked. +STDMETHODIMP CFavBand::GetNavigateTarget( + _In_ PCIDLIST_ABSOLUTE pidl, + _Out_ PIDLIST_ABSOLUTE ppidlTarget, + _Out_ ULONG *pulAttrib) { UNIMPLEMENTED; return E_NOTIMPL; } -STDMETHODIMP CFavBand::Invoke(long paramC) +/// Handles a user action on an item. +STDMETHODIMP CFavBand::Invoke(_In_ PCIDLIST_ABSOLUTE pidl) { UNIMPLEMENTED; return E_NOTIMPL; } -STDMETHODIMP CFavBand::OnSelectionChanged(long paramC) +/// Called when the user has selected an item. +STDMETHODIMP CFavBand::OnSelectionChanged(_In_ PCIDLIST_ABSOLUTE pidl) { UNIMPLEMENTED; return E_NOTIMPL; } -STDMETHODIMP CFavBand::RefreshFlags(long paramC, long param10, long param14) +/// Returns flags used to update the tree control. +STDMETHODIMP CFavBand::RefreshFlags( + _Out_ DWORD *pdwStyle, + _Out_ DWORD *pdwExStyle, + _Out_ DWORD *dwEnum) { UNIMPLEMENTED; return E_NOTIMPL; } -STDMETHODIMP CFavBand::CacheItem(long paramC) +STDMETHODIMP CFavBand::CacheItem( + _In_ PCIDLIST_ABSOLUTE pidl) { UNIMPLEMENTED; return E_NOTIMPL; diff --git a/dll/win32/shdocvw/CFavBand.h b/dll/win32/shdocvw/CFavBand.h index 05b860251c3..9386a309784 100644 --- a/dll/win32/shdocvw/CFavBand.h +++ b/dll/win32/shdocvw/CFavBand.h @@ -99,11 +99,17 @@ public: STDMETHODIMP Select(long paramC) override; // *** INamespaceProxy methods *** - STDMETHODIMP GetNavigateTarget(long paramC, long param10, long param14) override; - STDMETHODIMP Invoke(long paramC) override; - STDMETHODIMP OnSelectionChanged(long paramC) override; - STDMETHODIMP RefreshFlags(long paramC, long param10, long param14) override; - STDMETHODIMP CacheItem(long paramC) override; + STDMETHODIMP GetNavigateTarget( + _In_ PCIDLIST_ABSOLUTE pidl, + _Out_ PIDLIST_ABSOLUTE ppidlTarget, + _Out_ ULONG *pulAttrib) override; + STDMETHODIMP Invoke(_In_ PCIDLIST_ABSOLUTE pidl) override; + STDMETHODIMP OnSelectionChanged(_In_ PCIDLIST_ABSOLUTE pidl) override; + STDMETHODIMP RefreshFlags( + _Out_ DWORD *pdwStyle, + _Out_ DWORD *pdwExStyle, + _Out_ DWORD *dwEnum) override; + STDMETHODIMP CacheItem(_In_ PCIDLIST_ABSOLUTE pidl) override; // *** IDispatch methods *** STDMETHODIMP GetTypeInfoCount(UINT *pctinfo) override; diff --git a/sdk/include/reactos/shlobj_undoc.h b/sdk/include/reactos/shlobj_undoc.h index d97c0c9ece5..c572dc36930 100644 --- a/sdk/include/reactos/shlobj_undoc.h +++ b/sdk/include/reactos/shlobj_undoc.h @@ -528,11 +528,11 @@ DECLARE_INTERFACE_(INamespaceProxy, IUnknown) STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; /*** INamespaceProxy ***/ - STDMETHOD(GetNavigateTarget)(THIS_ long paramC, long param10, long param14) PURE; - STDMETHOD(Invoke)(THIS_ long paramC) PURE; - STDMETHOD(OnSelectionChanged)(THIS_ long paramC) PURE; - STDMETHOD(RefreshFlags)(THIS_ long paramC, long param10, long param14) PURE; - STDMETHOD(CacheItem)(THIS_ long paramC) PURE; + STDMETHOD(GetNavigateTarget)(THIS_ _In_ PCIDLIST_ABSOLUTE pidl, _Out_ PIDLIST_ABSOLUTE ppidlTarget, _Out_ ULONG *pulAttrib) PURE; + STDMETHOD(Invoke)(THIS_ _In_ PCIDLIST_ABSOLUTE pidl) PURE; + STDMETHOD(OnSelectionChanged)(THIS_ _In_ PCIDLIST_ABSOLUTE pidl) PURE; + STDMETHOD(RefreshFlags)(THIS_ _Out_ DWORD *pdwStyle, _Out_ DWORD *pdwExStyle, _Out_ DWORD *dwEnum) PURE; + STDMETHOD(CacheItem)(THIS_ _In_ PCIDLIST_ABSOLUTE pidl) PURE; }; #undef INTERFACE