https://git.reactos.org/?p=reactos.git;a=commitdiff;h=909468c4dc6c21661b6b3a75c2ec120ed7a05e34
commit 909468c4dc6c21661b6b3a75c2ec120ed7a05e34 Author: Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> AuthorDate: Fri Jan 31 08:15:36 2025 +0900 Commit: GitHub <nore...@github.com> CommitDate: Fri Jan 31 08:15:36 2025 +0900 [SDK][SHELL32][SHLWAPI][SHLWAPI_APITEST] Split IShellFolder helpers hack (#7685) Splitting the hack will improve our code quality. JIRA issue: N/A - Add sdk/include/reactos/ishellfolder_helpers.h header file. - Split conflicting code. --- dll/win32/shell32/precomp.h | 2 +- dll/win32/shlwapi/utils.cpp | 9 +--- .../apitests/shlwapi/IShellFolderHelpers.cpp | 2 +- sdk/include/reactos/ishellfolder_helpers.h | 51 ++++++++++++++++++++++ sdk/include/reactos/shlobj_undoc.h | 1 - sdk/include/reactos/shlwapi_undoc.h | 35 --------------- 6 files changed, 54 insertions(+), 46 deletions(-) diff --git a/dll/win32/shell32/precomp.h b/dll/win32/shell32/precomp.h index 6d65aeac056..267ed1d44c9 100644 --- a/dll/win32/shell32/precomp.h +++ b/dll/win32/shell32/precomp.h @@ -42,8 +42,8 @@ #include <shlguid_undoc.h> #include <shlobj_undoc.h> -#define SHLWAPI_ISHELLFOLDER_HELPERS #include <shlwapi_undoc.h> +#include <ishellfolder_helpers.h> #include <shellapi.h> #undef ShellExecute diff --git a/dll/win32/shlwapi/utils.cpp b/dll/win32/shlwapi/utils.cpp index 8cfb8ab2d61..51a881363c7 100644 --- a/dll/win32/shlwapi/utils.cpp +++ b/dll/win32/shlwapi/utils.cpp @@ -21,15 +21,8 @@ #include <shlguid_undoc.h> #include <atlstr.h> -/* - * HACK! - */ -#undef IShellFolder_GetDisplayNameOf -#undef IShellFolder_ParseDisplayName -#undef IShellFolder_CompareIDs - -#define SHLWAPI_ISHELLFOLDER_HELPERS /* HACK! */ #include <shlwapi_undoc.h> +#include <ishellfolder_helpers.h> #include <strsafe.h> diff --git a/modules/rostests/apitests/shlwapi/IShellFolderHelpers.cpp b/modules/rostests/apitests/shlwapi/IShellFolderHelpers.cpp index 588ef3f329c..0a94af1c3e7 100644 --- a/modules/rostests/apitests/shlwapi/IShellFolderHelpers.cpp +++ b/modules/rostests/apitests/shlwapi/IShellFolderHelpers.cpp @@ -10,8 +10,8 @@ #include <shlwapi.h> #include <versionhelpers.h> -#define SHLWAPI_ISHELLFOLDER_HELPERS #include <shlwapi_undoc.h> +#include <ishellfolder_helpers.h> static INT s_nStep = 0; diff --git a/sdk/include/reactos/ishellfolder_helpers.h b/sdk/include/reactos/ishellfolder_helpers.h new file mode 100644 index 00000000000..28591f71589 --- /dev/null +++ b/sdk/include/reactos/ishellfolder_helpers.h @@ -0,0 +1,51 @@ +/* + * PROJECT: ReactOS header + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) + * PURPOSE: SHLWAPI IShellFolder helpers + * COPYRIGHT: Copyright 2009 Andrew Hill <ash77 at domain reactos.org> + * Copyright 2025 Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> + */ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* HACK! These function names are conflicting with <shobjidl.h> functions. */ +#undef IShellFolder_GetDisplayNameOf +#undef IShellFolder_ParseDisplayName +#undef IShellFolder_CompareIDs + +HRESULT WINAPI +IShellFolder_GetDisplayNameOf( + _In_ IShellFolder *psf, + _In_ LPCITEMIDLIST pidl, + _In_ SHGDNF uFlags, + _Out_ LPSTRRET lpName, + _In_ DWORD dwRetryFlags); + +/* Flags for IShellFolder_GetDisplayNameOf */ +#define SFGDNO_RETRYWITHFORPARSING 0x00000001 +#define SFGDNO_RETRYALWAYS 0x80000000 + +HRESULT WINAPI +IShellFolder_ParseDisplayName( + _In_ IShellFolder *psf, + _In_ HWND hwndOwner, + _In_ LPBC pbcReserved, + _In_ LPOLESTR lpszDisplayName, + _Out_ ULONG *pchEaten, + _Out_ PIDLIST_RELATIVE *ppidl, + _Out_ ULONG *pdwAttributes); + +EXTERN_C HRESULT WINAPI +IShellFolder_CompareIDs( + _In_ IShellFolder *psf, + _In_ LPARAM lParam, + _In_ PCUIDLIST_RELATIVE pidl1, + _In_ PCUIDLIST_RELATIVE pidl2); + +#ifdef __cplusplus +} /* extern "C" */ +#endif diff --git a/sdk/include/reactos/shlobj_undoc.h b/sdk/include/reactos/shlobj_undoc.h index b0392644ecd..c7f080ede36 100644 --- a/sdk/include/reactos/shlobj_undoc.h +++ b/sdk/include/reactos/shlobj_undoc.h @@ -9,7 +9,6 @@ #pragma once -#define SHLWAPI_ISHELLFOLDER_HELPERS #include <shlwapi_undoc.h> // For ASSOCQUERY #ifdef __cplusplus diff --git a/sdk/include/reactos/shlwapi_undoc.h b/sdk/include/reactos/shlwapi_undoc.h index d4b2cf3fd1d..2ca22001c21 100644 --- a/sdk/include/reactos/shlwapi_undoc.h +++ b/sdk/include/reactos/shlwapi_undoc.h @@ -376,41 +376,6 @@ DWORD WINAPI SHGetObjectCompatFlags(IUnknown *pUnk, const CLSID *clsid); #define SHACF_WIN95SHLEXEC 0x00000200 /* Geoff Chappell */ DWORD WINAPI SHGetAppCompatFlags(DWORD dwMask); -/* - * HACK! These functions are conflicting with <shobjidl.h> inline functions... - * We provide a macro option SHLWAPI_ISHELLFOLDER_HELPERS for using these functions. - */ -#ifdef SHLWAPI_ISHELLFOLDER_HELPERS -HRESULT WINAPI -IShellFolder_GetDisplayNameOf( - _In_ IShellFolder *psf, - _In_ LPCITEMIDLIST pidl, - _In_ SHGDNF uFlags, - _Out_ LPSTRRET lpName, - _In_ DWORD dwRetryFlags); - -/* Flags for IShellFolder_GetDisplayNameOf */ -#define SFGDNO_RETRYWITHFORPARSING 0x00000001 -#define SFGDNO_RETRYALWAYS 0x80000000 - -HRESULT WINAPI -IShellFolder_ParseDisplayName( - _In_ IShellFolder *psf, - _In_ HWND hwndOwner, - _In_ LPBC pbcReserved, - _In_ LPOLESTR lpszDisplayName, - _Out_ ULONG *pchEaten, - _Out_ PIDLIST_RELATIVE *ppidl, - _Out_ ULONG *pdwAttributes); - -EXTERN_C HRESULT WINAPI -IShellFolder_CompareIDs( - _In_ IShellFolder *psf, - _In_ LPARAM lParam, - _In_ PCUIDLIST_RELATIVE pidl1, - _In_ PCUIDLIST_RELATIVE pidl2); -#endif /* SHLWAPI_ISHELLFOLDER_HELPERS */ - /***************************************************************************** * IAssociationElementOld interface *