git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48905 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////////////
 | 
						|
// 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 <vadim@wxwindows.org>
 | 
						|
// Licence:     wxWindows licence
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef _WX_MSW_WRAPSHL_H_
 | 
						|
#define _WX_MSW_WRAPSHL_H_
 | 
						|
 | 
						|
#include "wx/msw/wrapwin.h"
 | 
						|
 | 
						|
#ifdef __WXWINCE__
 | 
						|
    #include <winreg.h>
 | 
						|
    #include <objbase.h>
 | 
						|
    #include <shlguid.h>
 | 
						|
    #include <shellapi.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#include <shlobj.h>
 | 
						|
 | 
						|
#include "wx/msw/winundef.h"
 | 
						|
 | 
						|
#include "wx/log.h"
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// 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)
 | 
						|
};
 | 
						|
 | 
						|
// enable autocompleting filenames in the text control with given HWND
 | 
						|
//
 | 
						|
// this only works on systems with shlwapi.dll 5.0 or later
 | 
						|
//
 | 
						|
// implemented in src/msw/utilsgui.cpp
 | 
						|
extern bool wxEnableFileNameAutoComplete(HWND hwnd);
 | 
						|
 | 
						|
#endif // _WX_MSW_WRAPSHL_H_
 | 
						|
 |