This commit is contained in:
Katayama Hirofumi MZ 2024-05-16 07:07:49 +09:00
parent 4d77750005
commit d65ef95ae6
3 changed files with 17 additions and 14 deletions

View file

@ -8,7 +8,7 @@
#define _ATL_NO_EXCEPTIONS
/*
* HACK! These functions are conflicting with <shobjidl.h> inline functions...
* HACK! These functions are conflicting with <shobjidl.h> inline functions...
*/
#define IShellFolder_GetDisplayNameOf _disabled_IShellFolder_GetDisplayNameOf_
#define IShellFolder_ParseDisplayName _disabled_IShellFolder_ParseDisplayName_
@ -22,7 +22,7 @@
#include <atlstr.h>
/*
* HACK! These functions are conflicting with <shobjidl.h> inline functions...
* HACK! These functions are conflicting with <shobjidl.h> inline functions...
*/
#undef IShellFolder_GetDisplayNameOf
#undef IShellFolder_ParseDisplayName
@ -188,14 +188,17 @@ IShellFolder_ParseDisplayName(
TRACE("(%p, %p, %s, %p, %p, %p)\n", hwndOwner, pbcReserved, lpszDisplayName,
pchEaten, ppidl, pdwAttributes);
/* Improve safety */
dummy1 = dummy2 = 0;
if (!pdwAttributes)
{
dummy1 = 0;
pdwAttributes = &dummy1;
}
if (!pchEaten)
{
dummy2 = 0;
pchEaten = &dummy2;
}
if (ppidl)
*ppidl = NULL;
@ -214,15 +217,14 @@ IShellFolder_CompareIDs(
_In_ PCUIDLIST_RELATIVE pidl1,
_In_ PCUIDLIST_RELATIVE pidl2)
{
HRESULT hr;
TRACE("(%p, %p, %p, %p)\n", psf, lParam, pidl1, pidl2);
if (lParam & ~(SIZE_T)SHCIDS_COLUMNMASK)
{
/* Try as IShellFolder2 if possible */
hr = psf->QueryInterface(IID_IShellFolder2, (void **)&psf);
HRESULT hr = psf->QueryInterface(IID_IShellFolder2, (void **)&psf);
if (FAILED(hr))
lParam = LOWORD(lParam);
lParam &= SHCIDS_COLUMNMASK;
else
psf->Release();
}

View file

@ -218,6 +218,12 @@ interface IShellFolder : IUnknown
cpp_quote("#define SFGAO_STORAGEANCESTOR 0x00800000L")
cpp_quote("#define SFGAO_STORAGECAPMASK 0x70C50008L")
cpp_quote("#define SFGAO_PKEYSFGAOMASK 0x81044000L")
typedef ULONG SFGAOF;
cpp_quote("#define SHCIDS_COLUMNMASK 0x0000FFFFL")
cpp_quote("#define SHCIDS_BITMASK 0xFFFF0000L")
cpp_quote("#define SHCIDS_CANONICALONLY 0x10000000L")
cpp_quote("#define SHCIDS_ALLFIELDS 0x80000000L")
cpp_quote("#define STR_PARSE_SHELL_PROTOCOL_TO_FILE_OBJECTS L\"Parse Shell Protocol To File Objects\"")
cpp_quote("#define STR_FILE_SYS_BIND_DATA L\"File System Bind Data\"")
@ -225,11 +231,6 @@ interface IShellFolder : IUnknown
cpp_quote("#define STR_PARSE_TRANSLATE_ALIASES L\"Parse Translate Aliases\"")
cpp_quote("#define STR_DONT_PARSE_RELATIVE L\"Don't Parse Relative\"")
cpp_quote("#define SHCIDS_COLUMNMASK 0x0000FFFFL")
cpp_quote("#define SHCIDS_BITMASK 0xFFFF0000L")
typedef ULONG SFGAOF;
HRESULT ParseDisplayName(
[in] HWND hwndOwner,
[in] LPBC pbcReserved,

View file

@ -333,7 +333,7 @@ IContextMenu_Invoke(
DWORD WINAPI SHGetObjectCompatFlags(IUnknown *pUnk, const CLSID *clsid);
/*
* HACK! These functions are conflicting with <shobjidl.h> inline functions...
* 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