#ifndef DPASTUFF_H_ #define DPASTUFF_H_ typedef struct { DWORD dwSortBy; // the sort by flag. IShellFolder *psf; // shell folder to be ordered. // Caller of OrderList_Merge does *not* fill in this field. // This field is used internally by OrderList_Merge. IShellFolder2 *psf2; // IShellFolder2 version of psf LPARAM lParam; // Other user data... } ORDERINFO, * PORDERINFO; // see shellp.h for ORDERITEM definition typedef void (*LPFNORDERMERGENOMATCH)(LPVOID pvParam, LPCITEMIDLIST pidl); int CALLBACK OrderItem_Compare(LPVOID pv1, LPVOID pv2, LPARAM lParam); LPVOID CALLBACK OrderItem_Merge(UINT uMsg, LPVOID pvDest, LPVOID pvSrc, LPARAM lParam); void OrderList_Merge(HDPA hdpaNew, HDPA hdpaOld, int iInsertPos, LPARAM lParam, LPFNORDERMERGENOMATCH pfn, LPVOID pvParam); void OrderList_Reorder(HDPA hdpa); HDPA OrderList_Clone(HDPA hdpa); PORDERITEM OrderItem_Create(LPITEMIDLIST pidl, int nOrder); void OrderList_Destroy(HDPA *hdpa, BOOL fKillPidls = TRUE); int OrderItem_GetSystemImageListIndex(PORDERITEM poi, IShellFolder *psf, BOOL fUseCache); DWORD OrderItem_GetFlags(PORDERITEM poi); void OrderItem_SetFlags(PORDERITEM poi, DWORD dwFlags); HRESULT OrderList_SaveToStream(IStream* pstm, HDPA hdpa, IShellFolder * psf); HRESULT OrderList_LoadFromStream(IStream* pstm, HDPA * phdpa, IShellFolder * psfParent); void OrderItem_Free(PORDERITEM poi, BOOL fKillPidls = TRUE); BOOL OrderList_Append(HDPA hdpa, LPITEMIDLIST pidl, int nOrder); HRESULT COrderList_GetOrderList(HDPA * phdpa, LPCITEMIDLIST pidl, IShellFolder * psf); HRESULT COrderList_SetOrderList(HDPA hdpa, LPCITEMIDLIST pidl, IShellFolder *psf); #endif