ReactOS 0.4.16-dev-2207-geb15453
CRecycleBin Class Reference

#include <CRecycleBin.h>

Inheritance diagram for CRecycleBin:
Collaboration diagram for CRecycleBin:

Public Member Functions

 CRecycleBin ()
 
 ~CRecycleBin ()
 
HRESULT ParseRecycleBinPath (LPCWSTR lpszPath, LPBC pbc, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes)
 
STDMETHOD() GetClassID (CLSID *pClassID) override
 
STDMETHOD() Initialize (PCIDLIST_ABSOLUTE pidl) override
 
STDMETHOD() GetCurFolder (PIDLIST_ABSOLUTE *pidl) override
 
STDMETHOD() ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes) override
 
STDMETHOD() EnumObjects (HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList) override
 
STDMETHOD() BindToObject (PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
 
STDMETHOD() BindToStorage (PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
 
STDMETHOD() CompareIDs (LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2) override
 
STDMETHOD() CreateViewObject (HWND hwndOwner, REFIID riid, LPVOID *ppvOut) override
 
STDMETHOD() GetAttributesOf (UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut) override
 
STDMETHOD() GetUIObjectOf (HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut) override
 
STDMETHOD() GetDisplayNameOf (PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet) override
 
STDMETHOD() SetNameOf (HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut) override
 
STDMETHOD() GetDefaultSearchGUID (GUID *pguid) override
 
STDMETHOD() EnumSearches (IEnumExtraSearch **ppenum) override
 
STDMETHOD() GetDefaultColumn (DWORD dwRes, ULONG *pSort, ULONG *pDisplay) override
 
STDMETHOD() GetDefaultColumnState (UINT iColumn, DWORD *pcsFlags) override
 
STDMETHOD() GetDetailsEx (PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv) override
 
STDMETHOD() GetDetailsOf (PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd) override
 
STDMETHOD() MapColumnToSCID (UINT column, SHCOLUMNID *pscid) override
 
STDMETHOD() QueryContextMenu (HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) override
 
STDMETHOD() InvokeCommand (LPCMINVOKECOMMANDINFO lpcmi) override
 
STDMETHOD() GetCommandString (UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen) override
 
STDMETHOD() AddPages (LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) override
 
STDMETHOD() ReplacePage (EXPPS uPageID, LPFNSVADDPROPSHEETPAGE pfnReplaceWith, LPARAM lParam) override
 
STDMETHOD() Initialize (PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
HRESULT GetDefaultSearchGUID ([out] GUID *lpguid)
 
HRESULT EnumSearches ([out] IEnumExtraSearch **ppenum)
 
HRESULT GetDefaultColumn ([in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay)
 
HRESULT GetDefaultColumnState ([in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags)
 
HRESULT GetDetailsEx ([in] PCUITEMID_CHILD pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv)
 
HRESULT GetDetailsOf ([in] PCUITEMID_CHILD pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd)
 
HRESULT MapColumnToSCID ([in] UINT iColumn, [in] SHCOLUMNID *pscid)
 
- Public Member Functions inherited from IShellFolder
HRESULT ParseDisplayName ([in] HWND hwndOwner, [in] LPBC pbcReserved, [in, string] LPOLESTR lpszDisplayName, [out] ULONG *pchEaten, [out] PIDLIST_RELATIVE *ppidl, [in, out, unique] ULONG *pdwAttributes)
 
HRESULT EnumObjects ([in] HWND hwndOwner, [in] SHCONTF grfFlags, [out] IEnumIDList **ppenumIDList)
 
HRESULT BindToObject ([in] PCUIDLIST_RELATIVE pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
 
HRESULT BindToStorage ([in] PCUIDLIST_RELATIVE pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvObj)
 
HRESULT CompareIDs ([in] LPARAM lParam, [in] PCUIDLIST_RELATIVE pidl1, [in] PCUIDLIST_RELATIVE pidl2)
 
HRESULT CreateViewObject ([in] HWND hwndOwner, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
 
HRESULT GetAttributesOf ([in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in, out] SFGAOF *rgfInOut)
 
HRESULT GetUIObjectOf ([in] HWND hwndOwner, [in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in] REFIID riid, [in, out, unique] UINT *prgfInOut, [out, iid_is(riid)] void **ppvOut)
 
HRESULT GetDisplayNameOf ([in] PCUITEMID_CHILD pidl, [in] SHGDNF uFlags, [out] STRRET *lpName)
 
HRESULT SetNameOf ([in] HWND hwnd, [in] PCUITEMID_CHILD pidl, [in, string] LPCOLESTR lpszName, [in] SHGDNF uFlags, [out] PITEMID_CHILD *ppidlOut)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
HRESULT GetCurFolder ([out] PIDLIST_ABSOLUTE *ppidl)
 
HRESULT Initialize ([in] PCIDLIST_ABSOLUTE pidl)
 
HRESULT GetClassID ([out] CLSID *pClassID)
 
HRESULT QueryContextMenu ([in] HMENU hmenu, [in] UINT indexMenu, [in] UINT idCmdFirst, [in] UINT idCmdLast, [in] UINT uFlags)
 
HRESULT InvokeCommand ([in] LPCMINVOKECOMMANDINFO lpici)
 
HRESULT GetCommandString ([in] UINT_PTR idCmd, [in] UINT uType, [out] UINT *pwReserved, [out, size_is(cchMax)] LPSTR pszName, [in] UINT cchMax)
 
HRESULT AddPages ([in] LPFNSVADDPROPSHEETPAGE pfnAddPage, [in] LPARAM lParam)
 
HRESULT ReplacePage ([in] EXPPS uPageID, [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith, [in] LPARAM lParam)
 
HRESULT Initialize ([in] PCIDLIST_ABSOLUTE pidlFolder, [in] IDataObject *pdtobj, [in] HKEY hkeyProgID)
 

Static Public Member Functions

static REFCLSID GetClassID ()
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 

Private Member Functions

IShellFolderGetFSFolderForItem (LPCITEMIDLIST pidl)
 

Private Attributes

LPITEMIDLIST pidl
 
IShellFolderm_pFSFolders [RECYCLEBINMAXDRIVECOUNT]
 
bool m_IsBackgroundMenu
 

Additional Inherited Members

- Public Types inherited from IShellFolder2
typedef struct IShellFolder2::SHCOLUMNIDLPSHCOLUMNID
 
typedef const SHCOLUMNIDLPCSHCOLUMNID
 
- Public Types inherited from IShellFolder
enum  tagSHGDN {
  SHGDN_NORMAL = 0 , SHGDN_INFOLDER = 1 , SHGDN_FOREDITING = 0x1000 , SHGDN_INCLUDE_NONFILESYS = 0x2000 ,
  SHGDN_FORADDRESSBAR = 0x4000 , SHGDN_FORPARSING = 0x8000
}
 
enum  tagSHCONTF {
  SHCONTF_FOLDERS = 32 , SHCONTF_NONFOLDERS = 64 , SHCONTF_INCLUDEHIDDEN = 128 , SHCONTF_INIT_ON_FIRST_NEXT = 256 ,
  SHCONTF_NETPRINTERSRCH = 512 , SHCONTF_SHAREABLE = 1024 , SHCONTF_STORAGE = 2048 , SHCONTF_NAVIGATION_ENUM = 0x01000 ,
  SHCONTF_FASTITEMS = 0x02000 , SHCONTF_FLATLIST = 0x04000 , SHCONTF_ENABLE_ASYNC = 0x08000 , SHCONTF_INCLUDESUPERHIDDEN = 0x10000
}
 
typedef IShellFolderLPSHELLFOLDER
 
typedef enum IShellFolder::tagSHGDN SHGNO
 
typedef DWORD SHGDNF
 
typedef DWORD SHCONTF
 
typedef ULONG SFGAOF
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IPersistFolder2
typedef IPersistFolder2LPPERSISTFOLDER2
 
- Public Types inherited from IPersistFolder
typedef IPersistFolderLPPERSISTFOLDER
 
- Public Types inherited from IPersist
typedef IPersistLPPERSIST
 
- Public Types inherited from IContextMenu
typedef IContextMenuLPCONTEXTMENU
 
typedef struct IContextMenu::tagCMINVOKECOMMANDINFO CMINVOKECOMMANDINFO
 
typedef struct IContextMenu::tagCMINVOKECOMMANDINFOLPCMINVOKECOMMANDINFO
 
typedef struct IContextMenu::tagCMInvokeCommandInfoEx CMINVOKECOMMANDINFOEX
 
typedef struct IContextMenu::tagCMInvokeCommandInfoExLPCMINVOKECOMMANDINFOEX
 
- Public Types inherited from IShellPropSheetExt
enum  tagSHELLPROPSHEETEXTPAGEID { EXPPS_FILETYPES = 0x1 }
 
typedef UINT EXPPS
 
- Public Types inherited from IShellExtInit
typedef IShellExtInitLPSHELLEXTINIT
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 
- Static Public Attributes inherited from IContextMenu
static const WCHAR CMDSTR_NEWFOLDERW [] = {'N','e','w','F','o','l','d','e','r',0}
 
static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0}
 
static const WCHAR CMDSTR_VIEWDETAILSW [] = {'V','i','e','w','D','e','t','a','i','l','s',0}
 

Detailed Description

Definition at line 29 of file CRecycleBin.h.

Constructor & Destructor Documentation

◆ CRecycleBin()

CRecycleBin::CRecycleBin ( )

Definition at line 625 of file CRecycleBin.cpp.

626{
627 pidl = NULL;
629}
LPITEMIDLIST pidl
Definition: CRecycleBin.h:39
IShellFolder * m_pFSFolders[RECYCLEBINMAXDRIVECOUNT]
Definition: CRecycleBin.h:40
#define NULL
Definition: types.h:112
#define ZeroMemory
Definition: minwinbase.h:31

◆ ~CRecycleBin()

CRecycleBin::~CRecycleBin ( )

Definition at line 631 of file CRecycleBin.cpp.

632{
633 SHFree(pidl);
634 for (SIZE_T i = 0; i < _countof(m_pFSFolders); ++i)
635 {
636 if (m_pFSFolders[i])
638 }
639}
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:370
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
ULONG Release()
#define _countof(array)
Definition: sndvol32.h:70
ULONG_PTR SIZE_T
Definition: typedefs.h:80

Member Function Documentation

◆ AddPages()

HRESULT WINAPI CRecycleBin::AddPages ( LPFNSVADDPROPSHEETPAGE  pfnAddPage,
LPARAM  lParam 
)
override

Implements IShellPropSheetExt.

Definition at line 1122 of file CRecycleBin.cpp.

1123{
1125 return RecycleBin_AddPropSheetPages(pfnAddPage, lParam);
1126}
LPARAM lParam
Definition: combotst.c:139
LONG_PTR LPARAM
Definition: minwindef.h:175
HRESULT RecycleBin_AddPropSheetPages(LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
LPARAM LPFNSVADDPROPSHEETPAGE
Definition: shobjidl.idl:117

◆ BindToObject()

HRESULT WINAPI CRecycleBin::BindToObject ( PCUIDLIST_RELATIVE  pidl,
LPBC  pbcReserved,
REFIID  riid,
LPVOID ppvOut 
)
override

Definition at line 718 of file CRecycleBin.cpp.

719{
720 FIXME("(%p, %p, %p, %s, %p) - stub\n", this, pidl, pbc, debugstr_guid(&riid), ppv);
721 return E_NOTIMPL;
722}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35

◆ BindToStorage()

HRESULT WINAPI CRecycleBin::BindToStorage ( PCUIDLIST_RELATIVE  pidl,
LPBC  pbcReserved,
REFIID  riid,
LPVOID ppvOut 
)
override

Definition at line 724 of file CRecycleBin.cpp.

725{
726 FIXME("(%p, %p, %p, %s, %p) - stub\n", this, pidl, pbc, debugstr_guid(&riid), ppv);
727 return E_NOTIMPL;
728}

◆ CompareIDs()

HRESULT WINAPI CRecycleBin::CompareIDs ( LPARAM  lParam,
PCUIDLIST_RELATIVE  pidl1,
PCUIDLIST_RELATIVE  pidl2 
)
override

Implements IShellFolder.

Definition at line 740 of file CRecycleBin.cpp.

741{
742 UINT column = UINT(lParam & SHCIDS_COLUMNMASK);
743 if (column >= COLUMNS_COUNT || !_ILGetFSType(pidl1) || !_ILGetFSType(pidl2))
744 return E_INVALIDARG;
745 BBITEMDATA *pData1 = ValidateItem(pidl1), *pData2 = ValidateItem(pidl2);
746 if ((!pData1 || !pData2) && column != COLUMN_NAME)
747 return E_INVALIDARG;
748
749 LPCWSTR pName1, pName2;
750 FILETIME ft1, ft2;
751 SHFILEINFOW shfi1, shfi2;
752 int result;
754 if (SUCCEEDED(hr))
755 return hr;
756 switch (column)
757 {
758 case COLUMN_NAME:
759 if (pData1 && pData2)
760 {
762 return CompareCanonical(*pData1, *pData2);
763 pName1 = GetItemOriginalFileName(*pData1);
764 pName2 = GetItemOriginalFileName(*pData2);
765 result = CFSFolder::CompareUiStrings(pName1, pName2, lParam);
766 }
767 else
768 {
769 // We support comparing names even for non-Recycle items because
770 // SHChangeNotify can broadcast regular FS items.
771 if (IShellFolder *pSF = GetFSFolderForItem(pidl1))
772 {
773 hr = pSF->CompareIDs(lParam, pidl1, pidl2);
774 pSF->Release();
775 return hr;
776 }
777 return E_INVALIDARG;
778 }
779 break;
780 case COLUMN_DELFROM:
781 if (SUCCEEDED(hr = GetItemOriginalFolder(*pData1, const_cast<LPWSTR&>(pName1))))
782 {
783 if (SUCCEEDED(hr = GetItemOriginalFolder(*pData2, const_cast<LPWSTR&>(pName2))))
784 {
785 result = CFSFolder::CompareUiStrings(pName1, pName2, lParam);
786 SHFree(const_cast<LPWSTR>(pName2));
787 }
788 SHFree(const_cast<LPWSTR>(pName1));
789 }
791 case COLUMN_DATEDEL:
792 result = CompareFileTime(&pData1->DeletionTime, &pData2->DeletionTime);
793 break;
794 case COLUMN_SIZE:
795 result = GetItemFileSize(pidl1) - GetItemFileSize(pidl2);
796 break;
797 case COLUMN_TYPE:
798 GetItemTypeName(pidl1, *pData1, shfi1);
799 GetItemTypeName(pidl2, *pData2, shfi2);
801 break;
802 case COLUMN_MTIME:
803 _ILGetFileDateTime(pidl1, &ft1);
804 _ILGetFileDateTime(pidl2, &ft2);
805 result = CompareFileTime(&ft1, &ft2);
806 break;
807 }
809}
#define COLUMN_SIZE
Definition: CRecycleBin.cpp:55
static HRESULT CompareCanonical(const BBITEMDATA &Data1, const BBITEMDATA &Data2)
static LPCWSTR GetItemOriginalFileName(const BBITEMDATA &Data)
static HRESULT GetItemTypeName(PCUITEMID_CHILD pidl, const BBITEMDATA &Data, SHFILEINFOW &shfi)
#define COLUMNS_COUNT
Definition: CRecycleBin.cpp:59
#define COLUMN_MTIME
Definition: CRecycleBin.cpp:57
static HRESULT GetItemOriginalFolder(const BBITEMDATA &Data, LPWSTR &Out)
static UINT GetItemFileSize(LPCITEMIDLIST pidl)
#define COLUMN_DATEDEL
Definition: CRecycleBin.cpp:54
#define COLUMN_DELFROM
Definition: CRecycleBin.cpp:53
static HRESULT CompareSortFoldersFirst(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: CFSFolder.cpp:1116
static int CompareUiStrings(LPCWSTR a, LPCWSTR b, LPARAM lParam=0)
Definition: CFSFolder.h:132
IShellFolder * GetFSFolderForItem(LPCITEMIDLIST pidl)
#define E_INVALIDARG
Definition: ddrawi.h:101
#define SHCIDS_CANONICALONLY
Definition: shobjidl.idl:226
LONG WINAPI CompareFileTime(IN CONST FILETIME *lpFileTime1, IN CONST FILETIME *lpFileTime2)
Definition: time.c:106
GLuint64EXT * result
Definition: glext.h:11304
#define SUCCEEDED(hr)
Definition: intsafe.h:50
unsigned int UINT
Definition: ndis.h:50
BOOL _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *pFt)
Definition: pidl.c:2492
static BYTE _ILGetFSType(LPCITEMIDLIST pidl)
Definition: pidl.h:149
#define MAKE_COMPARE_HRESULT(x)
Definition: shellutils.h:678
#define COLUMN_NAME
#define COLUMN_TYPE
HRESULT hr
Definition: shlfolder.c:183
static BOOL ValidateItem(int index, BOOL bNewState, BOOL bDisplayErrors)
Definition: srvpage.cpp:503
FILETIME DeletionTime
Definition: CRecycleBin.cpp:68
WCHAR szTypeName[80]
Definition: shellapi.h:388
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ CreateViewObject()

HRESULT WINAPI CRecycleBin::CreateViewObject ( HWND  hwndOwner,
REFIID  riid,
LPVOID ppvOut 
)
override

Definition at line 811 of file CRecycleBin.cpp.

812{
813 CComPtr<IShellView> pShellView;
815
816 TRACE("(%p, %p, %s, %p)\n", this, hwndOwner, debugstr_guid(&riid), ppv);
817
818 if (!ppv)
819 return hr;
820 *ppv = NULL;
821
822 if (IsEqualIID (riid, IID_IDropTarget))
823 {
825 }
826 else if (IsEqualIID (riid, IID_IContextMenu) || IsEqualIID (riid, IID_IContextMenu2))
827 {
828 m_IsBackgroundMenu = true;
829 hr = this->QueryInterface(riid, ppv);
830 }
831 else if (IsEqualIID (riid, IID_IShellView))
832 {
833 CComPtr<CRecycleBinFolderViewCB> sfviewcb;
834 hr = ShellObjectCreator(sfviewcb);
835 if (SUCCEEDED(hr))
836 {
837 SFV_CREATE create = { sizeof(create), this, NULL, sfviewcb };
839 if (SUCCEEDED(hr))
840 sfviewcb->Initialize(this, (IShellView*)*ppv, this->pidl);
841 }
842 }
843 else
844 return hr;
845
846 TRACE ("-- (%p)->(interface=%p)\n", this, ppv);
847 return hr;
848
849}
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
Definition: CDefView.cpp:4823
HRESULT CRecyclerDropTarget_CreateInstance(REFIID riid, LPVOID *ppvOut)
bool m_IsBackgroundMenu
Definition: CRecycleBin.h:41
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
static const struct access_res create[16]
Definition: package.c:7505
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define TRACE(s)
Definition: solgame.cpp:4
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ EnumObjects()

HRESULT WINAPI CRecycleBin::EnumObjects ( HWND  hwndOwner,
DWORD  dwFlags,
LPENUMIDLIST *  ppEnumIDList 
)
override

Definition at line 713 of file CRecycleBin.cpp.

714{
715 return ShellObjectCreatorInit<CRecycleBinEnum>(dwFlags, IID_PPV_ARG(IEnumIDList, ppEnumIDList));
716}
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
#define IID_PPV_ARG(Itype, ppType)

Referenced by ParseRecycleBinPath().

◆ EnumSearches()

HRESULT WINAPI CRecycleBin::EnumSearches ( IEnumExtraSearch **  ppenum)
override

Implements IShellFolder2.

Definition at line 962 of file CRecycleBin.cpp.

963{
964 FIXME("stub\n");
965 *ppEnum = NULL;
966 return E_NOTIMPL;
967}

◆ GetAttributesOf()

HRESULT WINAPI CRecycleBin::GetAttributesOf ( UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
DWORD rgfInOut 
)
override

Definition at line 851 of file CRecycleBin.cpp.

853{
854 TRACE("(%p, %d, {%p, ...}, {%x})\n", this, cidl, apidl ? apidl[0] : NULL, (unsigned int)*rgfInOut);
855 HRESULT hr = S_OK;
856 const SFGAOF ThisFolder = SFGAO_FOLDER | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET | SFGAO_CANRENAME | SFGAO_CANLINK;
857 if (!cidl)
858 {
859 *rgfInOut &= ThisFolder;
861 *rgfInOut &= ~SFGAO_HASPROPSHEET;
862 return hr;
863 }
864 SFGAOF remain = SFGAO_LINK & *rgfInOut;
865 *rgfInOut &= remain | SFGAO_HASPROPSHEET | SFGAO_CANDELETE | SFGAO_FILESYSTEM; // TODO: SFGAO_CANMOVE
866 for (UINT i = 0; (*rgfInOut & remain) && i < cidl && SUCCEEDED(hr); ++i)
867 {
868 if (IShellFolder* pSF = GetFSFolderForItem(apidl[i]))
869 {
870 hr = pSF->GetAttributesOf(1, &apidl[i], rgfInOut);
871 pSF->Release();
872 }
873 }
874 return hr;
875}
ULONG SFGAOF
Definition: shobjidl.idl:222
#define S_OK
Definition: intsafe.h:52
@ REST_BITBUCKNOPROP
Definition: shlobj.h:1815
DWORD WINAPI SHRestricted(RESTRICTIONS rest)
Definition: shpolicy.c:166

◆ GetClassID() [1/2]

static REFCLSID CRecycleBin::GetClassID ( )
inlinestatic

Definition at line 48 of file CRecycleBin.h.

48{ return CLSID_RecycleBin; }

Referenced by GetClassID().

◆ GetClassID() [2/2]

HRESULT WINAPI CRecycleBin::GetClassID ( CLSID pClassID)
override

Implements IPersist.

Definition at line 675 of file CRecycleBin.cpp.

676{
677 TRACE("(%p, %p)\n", this, pClassID);
678 if (pClassID == NULL)
679 return E_INVALIDARG;
680 *pClassID = GetClassID();
681 return S_OK;
682}
static REFCLSID GetClassID()
Definition: CRecycleBin.h:48

◆ GetCommandString()

HRESULT WINAPI CRecycleBin::GetCommandString ( UINT_PTR  idCommand,
UINT  uFlags,
UINT lpReserved,
LPSTR  lpszName,
UINT  uMaxNameLen 
)
override

Implements IContextMenu.

Definition at line 1112 of file CRecycleBin.cpp.

1113{
1114 TRACE("%p %lu %u %p %p %u\n", this, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen);
1115 return SHELL_GetCommandStringImpl(idCommand, uFlags, lpszName, uMaxNameLen, g_BBFolderVerbMap);
1116}
static const CMVERBMAP g_BBFolderVerbMap[]
UINT uFlags
Definition: api.c:59
HRESULT SHELL_GetCommandStringImpl(SIZE_T CmdId, UINT uFlags, LPSTR Buf, UINT cchBuf, const CMVERBMAP *pMap)
Definition: utils.cpp:1792
_In_ DWORD _In_ int _In_ int _In_opt_ LPNLSVERSIONINFO _In_opt_ LPVOID lpReserved
Definition: winnls.h:1268

◆ GetCurFolder()

HRESULT WINAPI CRecycleBin::GetCurFolder ( PIDLIST_ABSOLUTE pidl)
override

Implements IPersistFolder2.

Definition at line 695 of file CRecycleBin.cpp.

696{
697 TRACE("\n");
698 return SHILClone((LPCITEMIDLIST)pidl, ppidl);
699}
HRESULT SHILClone(_In_opt_ LPCITEMIDLIST pidl, _Outptr_ LPITEMIDLIST *ppidl)
Definition: utils.cpp:133
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42

◆ GetDefaultColumn()

HRESULT WINAPI CRecycleBin::GetDefaultColumn ( DWORD  dwRes,
ULONG pSort,
ULONG pDisplay 
)
override

Implements IShellFolder2.

Definition at line 969 of file CRecycleBin.cpp.

970{
971 TRACE("(%p, %x, %p, %p)\n", this, (unsigned int)dwReserved, pSort, pDisplay);
972 if (pSort)
973 *pSort = 0;
974 if (pDisplay)
975 *pDisplay = 0;
976 return S_OK;
977}
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95

◆ GetDefaultColumnState()

HRESULT WINAPI CRecycleBin::GetDefaultColumnState ( UINT  iColumn,
DWORD pcsFlags 
)
override

Implements IShellFolder2.

Definition at line 979 of file CRecycleBin.cpp.

980{
981 TRACE("(%p, %d, %p)\n", this, iColumn, pcsFlags);
982 if (iColumn >= COLUMNS_COUNT)
983 return E_INVALIDARG;
984 *pcsFlags = RecycleBinColumns[iColumn].pcsFlags;
985 return S_OK;
986}
static const columninfo RecycleBinColumns[]
Definition: CRecycleBin.cpp:40

◆ GetDefaultSearchGUID()

HRESULT WINAPI CRecycleBin::GetDefaultSearchGUID ( GUID pguid)
override

Implements IShellFolder2.

Definition at line 956 of file CRecycleBin.cpp.

957{
958 FIXME("stub\n");
959 return E_NOTIMPL;
960}

◆ GetDetailsEx()

HRESULT WINAPI CRecycleBin::GetDetailsEx ( PCUITEMID_CHILD  pidl,
const SHCOLUMNID pscid,
VARIANT pv 
)
override

Implements IShellFolder2.

Definition at line 988 of file CRecycleBin.cpp.

989{
990 FIXME("stub\n");
991 return E_NOTIMPL;
992}

◆ GetDetailsOf()

HRESULT WINAPI CRecycleBin::GetDetailsOf ( PCUITEMID_CHILD  pidl,
UINT  iColumn,
SHELLDETAILS psd 
)
override

Implements IShellFolder2.

Definition at line 994 of file CRecycleBin.cpp.

995{
996 HRESULT hr;
997 FILETIME ft;
998 SHFILEINFOW shfi;
1000
1001 TRACE("(%p, %p, %d, %p)\n", this, pidl, iColumn, pDetails);
1002 if (iColumn >= COLUMNS_COUNT)
1003 return E_FAIL;
1004
1005 if (pidl == NULL)
1006 {
1007 pDetails->fmt = RecycleBinColumns[iColumn].fmt;
1008 pDetails->cxChar = RecycleBinColumns[iColumn].cxChars;
1009 return SHSetStrRet(&pDetails->str, RecycleBinColumns[iColumn].column_name_id);
1010 }
1011
1012 if (iColumn == COLUMN_NAME)
1013 return GetDisplayNameOf(pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &pDetails->str);
1014
1017 return E_INVALIDARG;
1018
1019 switch (iColumn)
1020 {
1021 case COLUMN_DATEDEL:
1023 break;
1024 case COLUMN_DELFROM:
1025 if (SUCCEEDED(hr = GetItemOriginalFolder(*pData, pDetails->str.pOleStr)))
1026 pDetails->str.uType = STRRET_WSTR;
1027 return hr;
1028 case COLUMN_SIZE:
1030 if (!IsFolder(pidl))
1032 break;
1033 case COLUMN_MTIME:
1036 break;
1037 case COLUMN_TYPE:
1038 GetItemTypeName(pidl, *pData, shfi);
1039 return SHSetStrRet(&pDetails->str, shfi.szTypeName);
1040 default:
1041 return E_FAIL;
1042 }
1043 return SHSetStrRet(&pDetails->str, buffer);
1044}
static BOOL IsFolder(LPCITEMIDLIST pidl)
Definition: CRecycleBin.cpp:84
static HRESULT FormatSize(UINT64 size, LPWSTR Buf, UINT cchBuf)
Definition: CFSFolder.cpp:2171
static HRESULT FormatDateTime(const FILETIME &ft, LPWSTR Buf, UINT cchBuf)
Definition: CFSFolder.cpp:2155
STDMETHOD() GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet) override
#define E_FAIL
Definition: ddrawi.h:102
#define MAX_PATH
Definition: compat.h:34
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:30
GLuint buffer
Definition: glext.h:5915
#define UNICODE_NULL
@ STRRET_WSTR
Definition: shtypes.idl:85
int column_name_id
Definition: CRecycleBin.cpp:32
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ GetDisplayNameOf()

HRESULT WINAPI CRecycleBin::GetDisplayNameOf ( PCUITEMID_CHILD  pidl,
DWORD  dwFlags,
LPSTRRET  strRet 
)
override

Definition at line 915 of file CRecycleBin.cpp.

916{
917 TRACE("(%p, %p, %x, %p)\n", this, pidl, (unsigned int)uFlags, pName);
919 if (!pData)
920 return E_INVALIDARG;
921
923 {
926 pszName = PathFindFileNameW(pszName);
927 pName->pOleStr = SHStrDupW(pszName);
928 }
929 else
930 {
933 else
935 }
936
937 if (pName->pOleStr)
938 {
939 pName->uType = STRRET_WSTR;
940 if (!IsFolder(pidl))
942 return S_OK;
943 }
944 pName->uType = STRRET_CSTR;
945 pName->cStr[0] = '\0';
946 return E_OUTOFMEMORY;
947}
static LPCWSTR GetItemOriginalFullPath(const BBITEMDATA &Data)
static LPCWSTR GetItemRecycledFullPath(const BBITEMDATA &Data)
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
Definition: path.c:1701
void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags)
Definition: CFSFolder.cpp:1479
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
Definition: string.c:2148
static LPSTR pName
Definition: security.c:75
#define IS_SHGDN_FOR_PARSING(flags)
Definition: shfldr.h:78
@ STRRET_CSTR
Definition: shtypes.idl:87

Referenced by GetDetailsOf().

◆ GetFSFolderForItem()

IShellFolder * CRecycleBin::GetFSFolderForItem ( LPCITEMIDLIST  pidl)
private

Definition at line 641 of file CRecycleBin.cpp.

642{
644 if (drive < 0)
647 return NULL;
648
649 if (!m_pFSFolders[drive])
650 {
651 HRESULT hr;
652 PERSIST_FOLDER_TARGET_INFO pfti = {};
653 if (FAILED_UNEXPECTEDLY(hr = GetRecycleBinPathFromDriveNumber(drive, pfti.szTargetParsingName)))
654 return NULL;
655 pfti.dwAttributes = FILE_ATTRIBUTE_DIRECTORY;
656 pfti.csidl = -1;
657 CComHeapPtr<ITEMIDLIST> pidlRoot;
658 pidlRoot.Attach(SHELL32_CreateSimpleIDListFromPath(pfti.szTargetParsingName, pfti.dwAttributes));
659 if (!pidlRoot && FAILED_UNEXPECTEDLY(E_FAIL))
660 return NULL;
661 IShellFolder *psf;
662 hr = SHELL32_CoCreateInitSF(pidlRoot, &pfti, NULL, &CLSID_ShellFSFolder, IID_PPV_ARG(IShellFolder, &psf));
663 if (FAILED(hr))
664 return NULL;
665 m_pFSFolders[drive] = psf; // Reference count is 1 (for the m_pFSFolders cache)
666 }
667 m_pFSFolders[drive]->AddRef(); // AddRef for the caller
668 return m_pFSFolders[drive];
669}
static HRESULT SHELL32_CoCreateInitSF(LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidlChild, const GUID *clsid, REFIID riid, LPVOID *ppvOut)
Definition: CFindFolder.cpp:39
static int GetItemDriveNumber(LPCITEMIDLIST pidl)
static UINT GetDefaultRecycleDriveNumber()
EXTERN_C HRESULT GetRecycleBinPathFromDriveNumber(UINT Drive, LPWSTR Path)
Definition: recyclebin.c:352
ULONG AddRef()
#define FAILED(hr)
Definition: intsafe.h:51
#define FILE_ATTRIBUTE_DIRECTORY
Definition: nt_native.h:705
LPITEMIDLIST SHELL32_CreateSimpleIDListFromPath(LPCWSTR pszPath, DWORD dwAttributes)
Definition: pidl.c:1195

Referenced by CompareIDs(), GetAttributesOf(), and GetUIObjectOf().

◆ GetUIObjectOf()

HRESULT WINAPI CRecycleBin::GetUIObjectOf ( HWND  hwndOwner,
UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
REFIID  riid,
UINT prgfInOut,
LPVOID ppvOut 
)
override

Definition at line 877 of file CRecycleBin.cpp.

879{
880 LPVOID pObj = NULL;
882
883 TRACE ("(%p)->(%p,%u,apidl=%p, %p %p)\n", this,
884 hwndOwner, cidl, apidl, prgfInOut, ppv);
885
886 if (!ppv)
887 return hr;
888
889 *ppv = NULL;
890 assert(!cidl || (apidl && apidl[0]));
891
892 if ((IsEqualIID (riid, IID_IContextMenu) || IsEqualIID(riid, IID_IContextMenu2)) && (cidl >= 1))
893 {
894 hr = ShellObjectCreatorInit<CRecycleBinItemContextMenu>(cidl, apidl, riid, &pObj);
895 }
896 else if((IsEqualIID(riid, IID_IExtractIconA) || IsEqualIID(riid, IID_IExtractIconW)) && (cidl == 1))
897 {
898 if (IShellFolder *pSF = GetFSFolderForItem(apidl[0]))
899 {
900 hr = CRecyclerExtractIcon_CreateInstance(*pSF, apidl[0], riid, &pObj);
901 pSF->Release();
902 }
903 }
904 else
906
907 if (SUCCEEDED(hr) && !pObj)
909
910 *ppv = pObj;
911 TRACE ("(%p)->hr=0x%08x\n", this, hr);
912 return hr;
913}
static HRESULT CRecyclerExtractIcon_CreateInstance(IShellFolder &FSFolder, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppvOut)
#define assert(_expr)
Definition: assert.h:32

◆ Initialize() [1/2]

HRESULT WINAPI CRecycleBin::Initialize ( PCIDLIST_ABSOLUTE  pidl)
override

Implements IPersistFolder.

Definition at line 684 of file CRecycleBin.cpp.

685{
686 TRACE("(%p, %p)\n", this, pidl);
687
688 SHFree((LPVOID)this->pidl);
689 this->pidl = ILClone(pidl);
690 if (this->pidl == NULL)
691 return E_OUTOFMEMORY;
692 return S_OK;
693}
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:238

◆ Initialize() [2/2]

HRESULT WINAPI CRecycleBin::Initialize ( PCIDLIST_ABSOLUTE  pidlFolder,
IDataObject pdtobj,
HKEY  hkeyProgID 
)
override

Implements IShellExtInit.

Definition at line 1139 of file CRecycleBin.cpp.

1140{
1141 TRACE("%p %p %p %p\n", this, pidlFolder, pdtobj, hkeyProgID );
1142 m_IsBackgroundMenu = false;
1143 return S_OK;
1144}

◆ InvokeCommand()

HRESULT WINAPI CRecycleBin::InvokeCommand ( LPCMINVOKECOMMANDINFO  lpcmi)
override

Implements IContextMenu.

Definition at line 1095 of file CRecycleBin.cpp.

1096{
1097 TRACE("%p %p verb %p\n", this, lpcmi, lpcmi ? lpcmi->lpVerb : NULL);
1099 if (CmdId == IDC_EMPTYRECYCLEBIN)
1100 {
1101 HRESULT hr = SHEmptyRecycleBinW(lpcmi->hwnd, NULL, 0);
1102 TRACE("result %x\n", hr);
1103 return hr;
1104 }
1105 else if (CmdId == IDC_PROPERTIES)
1106 {
1108 }
1109 return E_INVALIDARG;
1110}
@ IDC_EMPTYRECYCLEBIN
HRESULT WINAPI SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags)
#define IDC_PROPERTIES
Definition: resource.h:32
HRESULT SHELL_MapContextMenuVerbToCmdId(LPCMINVOKECOMMANDINFO pICI, const CMVERBMAP *pMap)
Definition: utils.cpp:1758
HRESULT SHELL_ShowItemIDListProperties(LPCITEMIDLIST pidl)
Definition: item_prop.cpp:199
#define CSIDL_BITBUCKET
Definition: shlobj.h:2189
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

◆ MapColumnToSCID()

HRESULT WINAPI CRecycleBin::MapColumnToSCID ( UINT  column,
SHCOLUMNID pscid 
)
override

Implements IShellFolder2.

Definition at line 1046 of file CRecycleBin.cpp.

1047{
1048 TRACE("(%p, %d, %p)\n", this, iColumn, pscid);
1049 if (iColumn >= COLUMNS_COUNT)
1050 return E_INVALIDARG;
1051 pscid->fmtid = *RecycleBinColumns[iColumn].fmtId;
1052 pscid->pid = RecycleBinColumns[iColumn].pid;
1053 return S_OK;
1054}
const GUID * fmtId
Definition: CRecycleBin.cpp:33

◆ ParseDisplayName()

HRESULT WINAPI CRecycleBin::ParseDisplayName ( HWND  hwndOwner,
LPBC  pbc,
LPOLESTR  lpszDisplayName,
DWORD pchEaten,
PIDLIST_RELATIVE ppidl,
DWORD pdwAttributes 
)
override

Definition at line 705 of file CRecycleBin.cpp.

708{
709 FIXME("stub\n");
710 return E_NOTIMPL; // FIXME: Parse "D<Drive><UniqueId>.ext"
711}

◆ ParseRecycleBinPath()

HRESULT CRecycleBin::ParseRecycleBinPath ( LPCWSTR  lpszPath,
LPBC  pbc,
PIDLIST_RELATIVE ppidl,
DWORD pdwAttributes 
)

Definition at line 1513 of file CRecycleBin.cpp.

1518{
1519 TRACE("(%p, %s, %p, %p)\n", this, debugstr_w(lpszPath), ppidl, pdwAttributes);
1520
1522 UNREFERENCED_PARAMETER(pdwAttributes);
1523 if (!ppidl || !lpszPath)
1524 return E_INVALIDARG;
1525
1526 *ppidl = NULL;
1527
1528 if (!lpszPath[0] || lpszPath[1] != L':' || lpszPath[2] != L'\\')
1529 return E_INVALIDARG;
1530
1531 CComPtr<IEnumIDList> pList;
1534 return hr;
1535
1536 for (;;)
1537 {
1538 CComHeapPtr<ITEMIDLIST> pidl;
1539 ULONG cFetched;
1540 hr = pList->Next(1, &pidl, &cFetched);
1541 if (hr != S_OK)
1542 break;
1543
1545 if (!pData)
1546 continue;
1547
1548 LPCWSTR pszItemPath = GetItemRecycledFullPath(*pData);
1549 if (!_wcsicmp(lpszPath, pszItemPath))
1550 {
1551 *ppidl = pidl.Detach();
1552 return S_OK;
1553 }
1554 }
1555
1556 return E_FAIL;
1557}
STDMETHOD() EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList) override
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:159
#define L(x)
Definition: resources.c:13
FxChildList * pList
@ SHCONTF_INCLUDEHIDDEN
Definition: shobjidl.idl:175
@ SHCONTF_NONFOLDERS
Definition: shobjidl.idl:174
#define debugstr_w
Definition: kernel32.h:32
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
uint32_t ULONG
Definition: typedefs.h:59

Referenced by CRecycleBinFolderViewCB::TranslatePidl().

◆ QueryContextMenu()

HRESULT WINAPI CRecycleBin::QueryContextMenu ( HMENU  hMenu,
UINT  indexMenu,
UINT  idCmdFirst,
UINT  idCmdLast,
UINT  uFlags 
)
override

Implements IContextMenu.

Definition at line 1068 of file CRecycleBin.cpp.

1069{
1070 TRACE("QueryContextMenu %p %p %u %u %u %u\n", this, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags );
1071
1072 if (!hMenu)
1073 return E_INVALIDARG;
1074
1075 UINT idHigh = 0, id;
1076
1078 id = idCmdFirst + IDC_EMPTYRECYCLEBIN;
1080 {
1081 idHigh = max(idHigh, id);
1083 {
1084 id = idCmdFirst + IDC_PROPERTIES;
1085 if (_InsertMenuItemW(hMenu, ++indexMenu, TRUE, id, MFT_STRING, MAKEINTRESOURCEW(IDS_PROPERTIES), 0))
1086 {
1087 idHigh = max(idHigh, id);
1088 _InsertMenuItemW(hMenu, indexMenu++, TRUE, -1, MFT_SEPARATOR, NULL, 0);
1089 }
1090 }
1091 }
1092 return idHigh ? MAKE_HRESULT(SEVERITY_SUCCESS, 0, idHigh - idCmdFirst + 1) : S_OK;
1093}
static BOOL IsRecycleBinEmpty(IShellFolder *pSF)
static int state
Definition: maze.c:121
#define IDS_PROPERTIES
Definition: resource.h:108
#define TRUE
Definition: types.h:120
#define MAKE_HRESULT(sev, fac, code)
Definition: dmerror.h:29
unsigned short WORD
Definition: ntddk_ex.h:93
GLuint id
Definition: glext.h:5910
void WINAPI _InsertMenuItemW(HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
#define IDS_EMPTY_BITBUCKET
Definition: shresdef.h:186
#define max(a, b)
Definition: svc.c:63
#define SEVERITY_SUCCESS
Definition: winerror.h:177
#define MFS_DISABLED
Definition: winuser.h:760
#define MFT_SEPARATOR
Definition: winuser.h:755
#define MFS_ENABLED
Definition: winuser.h:761
#define MFT_STRING
Definition: winuser.h:757
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582

◆ ReplacePage()

HRESULT WINAPI CRecycleBin::ReplacePage ( EXPPS  uPageID,
LPFNSVADDPROPSHEETPAGE  pfnReplaceWith,
LPARAM  lParam 
)
override

Implements IShellPropSheetExt.

Definition at line 1128 of file CRecycleBin.cpp.

1129{
1130 FIXME("%p %lu %p %lu\n", this, uPageID, pfnReplaceWith, lParam);
1131
1132 return E_NOTIMPL;
1133}

◆ SetNameOf()

HRESULT WINAPI CRecycleBin::SetNameOf ( HWND  hwndOwner,
PCUITEMID_CHILD  pidl,
LPCOLESTR  lpName,
DWORD  dwFlags,
PITEMID_CHILD pPidlOut 
)
override

Implements IShellFolder.

Definition at line 949 of file CRecycleBin.cpp.

951{
952 TRACE("\n");
953 return E_FAIL; /* not supported */
954}

Member Data Documentation

◆ m_IsBackgroundMenu

bool CRecycleBin::m_IsBackgroundMenu
private

Definition at line 41 of file CRecycleBin.h.

Referenced by CreateViewObject(), Initialize(), and QueryContextMenu().

◆ m_pFSFolders

IShellFolder* CRecycleBin::m_pFSFolders[RECYCLEBINMAXDRIVECOUNT]
private

Definition at line 40 of file CRecycleBin.h.

Referenced by CRecycleBin(), GetFSFolderForItem(), and ~CRecycleBin().

◆ pidl


The documentation for this class was generated from the following files: