- Add missing shlobj.h changes from the previous commit
- Correctly define ITEMIDLIST types, and add initial support for STRICT_TYPED_ITEMIDS
CORE-8441 #resolve

svn path=/trunk/; revision=69621
This commit is contained in:
Thomas Faber 2015-10-19 15:28:24 +00:00
parent da8f249696
commit 66503f6e3f
2 changed files with 46 additions and 18 deletions

View file

@ -2139,10 +2139,10 @@ typedef struct
{ {
HWND hwnd; HWND hwnd;
IContextMenuCB *pcmcb; IContextMenuCB *pcmcb;
LPCITEMIDLIST pidlFolder; PCIDLIST_ABSOLUTE pidlFolder;
IShellFolder *psf; IShellFolder *psf;
UINT cidl; UINT cidl;
LPCITEMIDLIST* apidl; PCUITEMID_CHILD_ARRAY apidl;
IUnknown *punkAssociationInfo; IUnknown *punkAssociationInfo;
UINT cKeys; UINT cKeys;
const HKEY *aKeys; const HKEY *aKeys;
@ -2167,10 +2167,10 @@ typedef HRESULT
HRESULT HRESULT
WINAPI WINAPI
CDefFolderMenu_Create2( CDefFolderMenu_Create2(
_In_opt_ LPCITEMIDLIST, _In_opt_ PCIDLIST_ABSOLUTE,
_In_opt_ HWND, _In_opt_ HWND,
UINT cidl, UINT cidl,
_In_reads_opt_(cidl) LPCITEMIDLIST*, _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY,
_In_opt_ IShellFolder*, _In_opt_ IShellFolder*,
_In_opt_ LPFNDFMCALLBACK, _In_opt_ LPFNDFMCALLBACK,
UINT nKeys, UINT nKeys,
@ -2190,9 +2190,9 @@ SHCreateDefaultExtractIcon(
*/ */
HRESULT WINAPI SHCreateDataObject( HRESULT WINAPI SHCreateDataObject(
_In_opt_ LPCITEMIDLIST pidlFolder, _In_opt_ PCIDLIST_ABSOLUTE pidlFolder,
_In_ UINT cidl, _In_ UINT cidl,
_In_reads_opt_(cidl) LPCITEMIDLIST* apidl, _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY apidl,
_In_opt_ IDataObject *pdtInner, _In_opt_ IDataObject *pdtInner,
_In_ REFIID riid, _In_ REFIID riid,
_Outptr_ void **ppv); _Outptr_ void **ppv);
@ -2202,9 +2202,9 @@ HRESULT WINAPI SHCreateDataObject(
*/ */
HRESULT WINAPI CIDLData_CreateFromIDArray( HRESULT WINAPI CIDLData_CreateFromIDArray(
_In_ LPCITEMIDLIST pidlFolder, _In_ PCIDLIST_ABSOLUTE pidlFolder,
_In_ UINT cidl, _In_ UINT cidl,
_In_reads_opt_(cidl) LPCITEMIDLIST* apidl, _In_reads_opt_(cidl) PCUIDLIST_RELATIVE_ARRAY apidl,
_Outptr_ IDataObject **ppdtobj); _Outptr_ IDataObject **ppdtobj);
/**************************************************************************** /****************************************************************************

View file

@ -32,16 +32,44 @@ typedef const SHITEMID *LPCSHITEMID;
typedef struct _ITEMIDLIST typedef struct _ITEMIDLIST
{ {
SHITEMID mkid; /* first itemid in list */ SHITEMID mkid; /* first itemid in list */
} ITEMIDLIST,*LPITEMIDLIST; } ITEMIDLIST;
typedef const ITEMIDLIST *LPCITEMIDLIST;
typedef LPITEMIDLIST PITEMID_CHILD; #ifndef UNALIGNED
typedef LPCITEMIDLIST PCITEMID_CHILD; #define UNALIGNED
typedef LPCITEMIDLIST PCUITEMID_CHILD; #endif
typedef LPCITEMIDLIST *PCUITEMID_CHILD_ARRAY;
typedef LPITEMIDLIST PIDLIST_RELATIVE; typedef ITEMIDLIST UNALIGNED *LPITEMIDLIST;
typedef LPCITEMIDLIST PCUIDLIST_RELATIVE; typedef const ITEMIDLIST UNALIGNED *LPCITEMIDLIST;
typedef LPITEMIDLIST PIDLIST_ABSOLUTE;
typedef LPCITEMIDLIST PCIDLIST_ABSOLUTE; cpp_quote("#if defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus)")
cpp_quote("typedef struct _ITEMIDLIST_RELATIVE : public ITEMIDLIST { } ITEMIDLIST_RELATIVE;")
cpp_quote("typedef struct _ITEMIDLIST_ABSOLUTE : public ITEMIDLIST_RELATIVE { } ITEMIDLIST_ABSOLUTE;")
cpp_quote("typedef struct _ITEMID_CHILD : public ITEMIDLIST_RELATIVE { } ITEMID_CHILD;")
cpp_quote("#else")
typedef ITEMIDLIST ITEMIDLIST_RELATIVE;
typedef ITEMIDLIST ITEMIDLIST_ABSOLUTE;
typedef ITEMIDLIST ITEMID_CHILD;
cpp_quote("#endif")
typedef ITEMIDLIST_RELATIVE *PIDLIST_RELATIVE;
typedef ITEMIDLIST_RELATIVE UNALIGNED *PUIDLIST_RELATIVE;
typedef const ITEMIDLIST_RELATIVE *PCIDLIST_RELATIVE;
typedef const ITEMIDLIST_RELATIVE UNALIGNED *PCUIDLIST_RELATIVE;
typedef const PCUIDLIST_RELATIVE *PCUIDLIST_RELATIVE_ARRAY;
typedef ITEMIDLIST_ABSOLUTE *PIDLIST_ABSOLUTE;
typedef ITEMIDLIST_ABSOLUTE UNALIGNED *PUIDLIST_ABSOLUTE;
typedef const ITEMIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE;
typedef const ITEMIDLIST_ABSOLUTE UNALIGNED *PCUIDLIST_ABSOLUTE;
typedef const PCIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE_ARRAY;
typedef const PCUIDLIST_ABSOLUTE *PCUIDLIST_ABSOLUTE_ARRAY;
typedef ITEMID_CHILD *PITEMID_CHILD;
typedef ITEMID_CHILD UNALIGNED *PUITEMID_CHILD;
typedef const ITEMID_CHILD *PCITEMID_CHILD;
typedef const ITEMID_CHILD UNALIGNED *PCUITEMID_CHILD;
typedef const PCUITEMID_CHILD *PCUITEMID_CHILD_ARRAY;
cpp_quote("#include <poppack.h>") cpp_quote("#include <poppack.h>")
#ifndef MAX_PATH #ifndef MAX_PATH