BOOL StrRetToStrN(LPTSTR szOut, UINT uszOut, LPSTRRET pStrRet, LPCITEMIDLIST pidl); HRESULT StrRetCatLeft(LPCTSTR pszLeft, LPSTRRET pStrRet, LPCITEMIDLIST pidl); LPITEMIDLIST _ILResize(LPITEMIDLIST pidl, UINT cbRequired, UINT cbExtra); typedef HRESULT (CALLBACK * LPFNENUMCALLBACK)(LPARAM lParam, LPVOID pvData, UINT ecid, UINT index); #define ECID_SETNEXTID 1 #define ECID_RESET 2 #define ECID_RELEASE 3 HRESULT SHCreateEnumObjects(HWND hwndOwner, LPVOID pvData, LPFNENUMCALLBACK lpfn, LPENUMIDLIST * ppeunk); void CDefEnum_SetReturn(LPARAM lParam, LPITEMIDLIST pidl); STDMETHODIMP CDefEnum_Skip(LPENUMIDLIST peunk, ULONG celt); STDMETHODIMP CDefEnum_Reset(LPENUMIDLIST peunk); STDMETHODIMP CDefEnum_Clone(LPENUMIDLIST peunk, LPENUMIDLIST * ppenm);