/////////////////////////////////////////////////////////////////////////////// // Name: wx/msw/wrapshl.h // Purpose: wrapper class for stuff from shell32.dll // Author: Vadim Zeitlin // Modified by: // Created: 2004-10-19 // RCS-ID: $Id$ // Copyright: (c) 2004 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_MSW_WRAPSHL_H_ #define _WX_MSW_WRAPSHL_H_ #ifdef __WXWINCE__ #include #include #include #endif #include // ---------------------------------------------------------------------------- // wxItemIdList implements RAII on top of ITEMIDLIST // ---------------------------------------------------------------------------- class wxItemIdList { public: // ctor takes ownership of the item and will free it wxItemIdList(LPITEMIDLIST pidl) { m_pidl = pidl; } static void Free(LPITEMIDLIST pidl) { if ( pidl ) { LPMALLOC pMalloc; SHGetMalloc(&pMalloc); if ( pMalloc ) { pMalloc->Free(pidl); pMalloc->Release(); } else { wxLogLastError(wxT("SHGetMalloc")); } } } ~wxItemIdList() { Free(m_pidl); } // implicit conversion to LPITEMIDLIST operator LPITEMIDLIST() const { return m_pidl; } // get the corresponding path, returns empty string on error wxString GetPath() const { wxString path; if ( !SHGetPathFromIDList(m_pidl, wxStringBuffer(path, MAX_PATH)) ) { wxLogLastError(_T("SHGetPathFromIDList")); } return path; } private: LPITEMIDLIST m_pidl; DECLARE_NO_COPY_CLASS(wxItemIdList) }; #endif // _WX_MSW_WRAPSHL_H_