ReactOS 0.4.17-dev-470-gf9e3448
CCabFolder Class Reference

#include <cabview.h>

Inheritance diagram for CCabFolder:
Collaboration diagram for CCabFolder:

Public Member Functions

HRESULT ExtractFilesUI (HWND hWnd, IDataObject *pDO)
 
HRESULT GetItemDetails (PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd, VARIANT *pv)
 
int MapSCIDToColumn (const SHCOLUMNID &scid)
 
HRESULT CompareID (LPARAM lParam, PCUITEMID_CHILD pidl1, PCUITEMID_CHILD pidl2)
 
HRESULT CreateEnum (CEnumIDList **List)
 
IFACEMETHODIMP GetDefaultSearchGUID (GUID *pguid) override
 
IFACEMETHODIMP EnumSearches (IEnumExtraSearch **ppenum) override
 
IFACEMETHODIMP GetDefaultColumn (DWORD dwRes, ULONG *pSort, ULONG *pDisplay) override
 
IFACEMETHODIMP GetDefaultColumnState (UINT iColumn, SHCOLSTATEF *pcsFlags) override
 
IFACEMETHODIMP GetDetailsEx (PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv) override
 
IFACEMETHODIMP GetDetailsOf (PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd) override
 
IFACEMETHODIMP MapColumnToSCID (UINT column, SHCOLUMNID *pscid) override
 
IFACEMETHODIMP ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, ULONG *pchEaten, PIDLIST_RELATIVE *ppidl, ULONG *pdwAttributes) override
 
IFACEMETHODIMP EnumObjects (HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList) override
 
IFACEMETHODIMP BindToObject (PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
 
IFACEMETHODIMP BindToStorage (PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
 
IFACEMETHODIMP CompareIDs (LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2) override
 
IFACEMETHODIMP CreateViewObject (HWND hwndOwner, REFIID riid, LPVOID *ppvOut) override
 
IFACEMETHODIMP GetAttributesOf (UINT cidl, PCUITEMID_CHILD_ARRAY apidl, SFGAOF *rgfInOut) override
 
IFACEMETHODIMP GetUIObjectOf (HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut) override
 
IFACEMETHODIMP GetDisplayNameOf (PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET pName) override
 
IFACEMETHODIMP SetNameOf (HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut) override
 
IFACEMETHODIMP GetCurFolder (PIDLIST_ABSOLUTE *pidl) override
 
IFACEMETHODIMP Initialize (PCIDLIST_ABSOLUTE pidl) override
 
IFACEMETHODIMP GetClassID (CLSID *lpClassId) override
 
IFACEMETHODIMP MessageSFVCB (UINT uMsg, WPARAM wParam, LPARAM lParam) override
 
IFACEMETHODIMP GetIconOf (PCUITEMID_CHILD pidl, UINT flags, int *pIconIndex) 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 GetIconOf ([in] PCUITEMID_CHILD pidl, [in] UINT flags, [out] int *pIconIndex)
 

Protected Attributes

CComHeapPtr< ITEMIDLISTm_CurDir
 
HWND m_ShellViewWindow = NULL
 

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
 
- 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)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 117 of file cabview.h.

Member Function Documentation

◆ BindToObject()

IFACEMETHODIMP CCabFolder::BindToObject ( PCUIDLIST_RELATIVE  pidl,
LPBC  pbcReserved,
REFIID  riid,
LPVOID ppvOut 
)
override

Definition at line 501 of file folder.cpp.

502{
503 static_assert(FLATFOLDER, "Support Bind if we display the archive as a tree");
505 return E_NOTIMPL;
506}
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
#define FLATFOLDER
Definition: cabview.h:12
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ BindToStorage()

IFACEMETHODIMP CCabFolder::BindToStorage ( PCUIDLIST_RELATIVE  pidl,
LPBC  pbcReserved,
REFIID  riid,
LPVOID ppvOut 
)
inlineoverride

Definition at line 169 of file cabview.h.

170 {
172 return E_NOTIMPL;
173 }

◆ CompareID()

HRESULT CCabFolder::CompareID ( LPARAM  lParam,
PCUITEMID_CHILD  pidl1,
PCUITEMID_CHILD  pidl2 
)

Definition at line 508 of file folder.cpp.

509{
510 CABITEM *p1 = (CABITEM*)pidl1, *p2 = (CABITEM*)pidl2;
511 HRESULT hr = S_OK;
512 int ret = 0;
513
515 {
516 ret = lstrcmpiW(p1->Path, p2->Path);
517 if (ret && (lParam & SHCIDS_ALLFIELDS))
518 {
519 for (UINT i = 0; ret && SUCCEEDED(hr) && i < COLCOUNT; ++i)
520 {
521 hr = (i == COL_NAME) ? 0 : CompareID(i, pidl1, pidl2);
523 }
524 }
525 }
526 else
527 {
528 UINT col = lParam & SHCIDS_COLUMNMASK;
529 switch (col)
530 {
531 case COL_NAME:
532 ret = StrCmpLogicalW(p1->GetName(), p2->GetName());
533 break;
534
535 case COL_SIZE:
536 ret = p1->Size - p2->Size;
537 break;
538
539 case COL_MDATE:
540 ret = MAKELONG(p1->Time, p1->Date) - MAKELONG(p2->Time, p2->Date);
541 break;
542
543 default:
544 {
545 if (col < COLCOUNT)
546 {
547 PWSTR str1, str2;
548 if (SUCCEEDED(hr = ::GetDetailsOf(*this, pidl1, col, str1)))
549 {
550 if (SUCCEEDED(hr = ::GetDetailsOf(*this, pidl2, col, str2)))
551 {
553 SHFree(str2);
554 }
555 SHFree(str1);
556 }
557 }
558 else
559 {
561 }
562 }
563 }
564 }
566}
#define SHCIDS_ALLFIELDS
Definition: CFontExt.cpp:14
HRESULT CompareID(LPARAM lParam, PCUITEMID_CHILD pidl1, PCUITEMID_CHILD pidl2)
Definition: folder.cpp:508
IFACEMETHODIMP GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd) override
Definition: folder.cpp:404
LPARAM lParam
Definition: combotst.c:139
#define E_INVALIDARG
Definition: ddrawi.h:101
HRESULT hr
Definition: delayimp.cpp:582
#define SHCIDS_CANONICALONLY
Definition: shobjidl.idl:226
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4171
int WINAPI StrCmpLogicalW(const WCHAR *str, const WCHAR *comp)
Definition: string.c:1333
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:370
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
Definition: typeof.h:94
return ret
Definition: mutex.c:146
@ COL_NAME
Definition: folder.cpp:13
@ COLCOUNT
Definition: folder.cpp:19
@ COL_MDATE
Definition: folder.cpp:16
@ COL_SIZE
Definition: folder.cpp:14
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
unsigned int UINT
Definition: sysinfo.c:13
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
Definition: parser.h:35
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
Definition: parser.h:35
#define MAKE_COMPARE_HRESULT(x)
Definition: shellutils.h:686
LPCWSTR GetName() const
Definition: folder.cpp:59
UINT Size
Definition: folder.cpp:45
WORD Date
Definition: folder.cpp:46
WCHAR Path[ANYSIZE_ARRAY]
Definition: folder.cpp:49
WORD Time
Definition: folder.cpp:46
uint16_t * PWSTR
Definition: typedefs.h:56
#define MAKELONG(a, b)
Definition: typedefs.h:249
#define HRESULT_CODE(hr)
Definition: winerror.h:188

Referenced by CompareID(), and CompareIDs().

◆ CompareIDs()

IFACEMETHODIMP CCabFolder::CompareIDs ( LPARAM  lParam,
PCUIDLIST_RELATIVE  pidl1,
PCUIDLIST_RELATIVE  pidl2 
)
override

Implements IShellFolder.

Definition at line 568 of file folder.cpp.

569{
571 if (!pidl1 || !ILIsSingle(pidl1) || !pidl2 || !ILIsSingle(pidl2))
572 return E_UNEXPECTED;
573
574 return CompareID(lParam, pidl1, pidl2);
575}
#define C_ASSERT(e)
Definition: intsafe.h:73
static BOOL ILIsSingle(LPCITEMIDLIST pidl)
Definition: shellutils.h:711
#define E_UNEXPECTED
Definition: winerror.h:3528

◆ CreateEnum()

HRESULT CCabFolder::CreateEnum ( CEnumIDList **  List)
inline

Definition at line 135 of file cabview.h.

136 {
138 *List = pEIDL;
139 return pEIDL ? pEIDL->Fill(m_CurDir) : E_OUTOFMEMORY;
140 }
CComHeapPtr< ITEMIDLIST > m_CurDir
Definition: cabview.h:126
static CEnumIDList * CreateInstance()
Definition: cabview.h:103
HRESULT Fill(PCIDLIST_ABSOLUTE pidl, HWND hwnd=NULL, SHCONTF contf=0)
Definition: folder.cpp:223
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550

Referenced by GetAttributesOf().

◆ CreateViewObject()

IFACEMETHODIMP CCabFolder::CreateViewObject ( HWND  hwndOwner,
REFIID  riid,
LPVOID ppvOut 
)
override

Definition at line 577 of file folder.cpp.

578{
579 if (riid == IID_IShellView)
580 {
581 SFV_CREATE sfvc = { sizeof(SFV_CREATE), static_cast<IShellFolder*>(this) };
582 return SHCreateShellFolderView(&sfvc, (IShellView**)ppv);
583 }
584 if (riid == IID_IContextMenu)
585 {
587 IContextMenu **ppCM = (IContextMenu**)ppv;
588 return CDefFolderMenu_Create2(m_CurDir, hwndOwner, 0, NULL, this, func, 0, NULL, ppCM);
589 }
590 return E_NOINTERFACE;
591}
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
Definition: CDefView.cpp:4824
HRESULT WINAPI CDefFolderMenu_Create2(PCIDLIST_ABSOLUTE pidlFolder, HWND hwnd, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IShellFolder *psf, LPFNDFMCALLBACK lpfn, UINT nKeys, const HKEY *ahkeyClsKeys, IContextMenu **ppcm)
#define NULL
Definition: types.h:112
static HRESULT CALLBACK FolderBackgroundMenuCallback(IShellFolder *psf, HWND hwnd, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: folder.cpp:164
GLenum func
Definition: glext.h:6028
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
struct _SFV_CREATE SFV_CREATE
HRESULT(CALLBACK * LPFNDFMCALLBACK)(_In_opt_ IShellFolder *, _In_opt_ HWND, _In_opt_ IDataObject *, UINT, WPARAM, LPARAM)
Definition: shlobj.h:2585
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ EnumObjects()

IFACEMETHODIMP CCabFolder::EnumObjects ( HWND  hwndOwner,
DWORD  dwFlags,
LPENUMIDLIST *  ppEnumIDList 
)
override

Definition at line 494 of file folder.cpp.

495{
497 *ppEnumIDList = static_cast<LPENUMIDLIST>(p);
498 return p ? p->Fill(m_CurDir, hwndOwner, dwFlags) : E_OUTOFMEMORY;
499}
GLfloat GLfloat p
Definition: glext.h:8902
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

◆ EnumSearches()

IFACEMETHODIMP CCabFolder::EnumSearches ( IEnumExtraSearch **  ppenum)
inlineoverride

Implements IShellFolder2.

Definition at line 148 of file cabview.h.

149 {
150 return E_NOTIMPL;
151 }

◆ ExtractFilesUI()

HRESULT CCabFolder::ExtractFilesUI ( HWND  hWnd,
IDataObject pDO 
)

Definition at line 870 of file folder.cpp.

871{
874
876 if (!pData)
877 return E_OUTOFMEMORY;
878 ZeroMemory(pData, sizeof(*pData));
879 pData->hWndOwner = hWnd;
880 pData->pLifetimeCF = this;
881 pData->pLifetimeCF->AddRef();
882
884 if (SUCCEEDED(hr) && pDO)
885 {
887 }
888 if (SUCCEEDED(hr))
889 {
891 LPITEMIDLIST pidlInitial = ILClone(m_CurDir);
892 ILRemoveLastID(pidlInitial); // Remove the "name.cab" part (we can't extract into ourselves)
894 BROWSEINFO bi = { hWnd, NULL, NULL, pData->cab, bif, FolderBrowseCallback, (LPARAM)pidlInitial };
896 {
898 ILFree(folder);
899 if (SUCCEEDED(hr))
900 {
903 }
904 }
905 ILFree(pidlInitial);
906 }
907 if (hr != S_OK)
908 Free(*pData);
910}
HWND hWnd
Definition: settings.c:17
EXTERN_C LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi)
Definition: brfolder.cpp:1460
HWND m_ShellViewWindow
Definition: cabview.h:127
HRESULT WINAPI CoMarshalInterThreadInterfaceInStream(REFIID riid, IUnknown *unk, IStream **stream)
Definition: marshal.c:154
BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE thread_proc, void *data, DWORD flags, LPTHREAD_START_ROUTINE callback)
Definition: main.c:1628
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:348
static int CALLBACK FolderBrowseCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
Definition: folder.cpp:698
static HRESULT GetFsPathFromIDList(PCIDLIST_ABSOLUTE pidl, PWSTR pszPath)
Definition: folder.cpp:690
static DWORD CALLBACK ExtractFilesThread(LPVOID pParam)
Definition: folder.cpp:840
nsrefcnt AddRef()
#define ZeroMemory
Definition: minwinbase.h:31
LONG_PTR LPARAM
Definition: minwindef.h:175
const GUID IID_IDataObject
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:238
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:1051
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
Definition: pidl.c:222
@ CTF_PROCESS_REF
Definition: shlwapi.h:73
@ CTF_COINIT
Definition: shlwapi.h:75
@ CTF_THREAD_REF
Definition: shlwapi.h:72
@ CTF_FREELIBANDEXIT
Definition: shlwapi.h:77
#define BIF_RETURNONLYFSDIRS
Definition: shlobj.h:1233
#define BROWSEINFO
Definition: shlobj.h:1226
#define BIF_USENEWUI
Definition: shlobj.h:1240
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
Definition: fci.c:116
BSTR path
Definition: filesystem.c:114
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210
#define ERROR_CANCELLED
Definition: winerror.h:1055
BOOL WINAPI IsWindowVisible(_In_ HWND)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
Definition: exfuncs.h:815

Referenced by ItemMenuCallback().

◆ GetAttributesOf()

IFACEMETHODIMP CCabFolder::GetAttributesOf ( UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
SFGAOF rgfInOut 
)
override

Implements IShellFolder.

Definition at line 593 of file folder.cpp.

594{
595 if (!cidl)
596 {
597 const SFGAOF ThisFolder = (SFGAO_FOLDER | SFGAO_BROWSABLE | SFGAO_CANLINK);
598 *rgfInOut = *rgfInOut & ThisFolder;
599 return S_OK;
600 }
601 else if (!apidl)
602 {
603 return E_INVALIDARG;
604 }
605 HRESULT hr = S_OK;
606 const SFGAOF impliedmask = SFGAO_ISSLOW | SFGAO_CANCOPY;
607 const SFGAOF filemask = SFGAO_READONLY | SFGAO_HIDDEN | SFGAO_SYSTEM | impliedmask;
608 SFGAOF remain = *rgfInOut & filemask, validate = *rgfInOut & SFGAO_VALIDATE;
609 CComPtr<CEnumIDList> list;
610 for (UINT i = 0; i < cidl && (remain || validate); ++i)
611 {
612 CABITEM *item = CABITEM::Validate(apidl[i]);
613 if (!item)
614 {
616 break;
617 }
618 else if (validate)
619 {
621 return hr;
622 if (list->FindNamedItem((PCUITEMID_CHILD)item) == -1)
624 }
625 SFGAOF att = MapFSToSFAttributes(item->GetFSAttributes()) | impliedmask;
626 remain &= att & ~(FLATFOLDER ? SFGAO_FOLDER : 0);
627 }
628 *rgfInOut = remain;
629 return hr;
630}
HRESULT CreateEnum(CEnumIDList **List)
Definition: cabview.h:135
Definition: list.h:37
#define SFGAO_SYSTEM
Definition: shobjidl.idl:198
SFGAOF MapFSToSFAttributes(UINT att)
Definition: util.h:124
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
static FRESULT validate(void *obj)
Definition: ff.c:2372
ULONG SFGAOF
Definition: shobjidl.idl:222
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define list
Definition: rosglue.h:35
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
Definition: shtypes.idl:70
static CABITEM * Validate(PIDL pidl)
Definition: folder.cpp:61

Referenced by ParseDisplayName().

◆ GetClassID()

IFACEMETHODIMP CCabFolder::GetClassID ( CLSID lpClassId)
inlineoverride

Implements IPersist.

Definition at line 213 of file cabview.h.

214 {
215 *lpClassId = CLSID_CabFolder;
216 return S_OK;
217 }
EXTERN_C const GUID CLSID_CabFolder
Definition: cabview.h:14

◆ GetCurFolder()

IFACEMETHODIMP CCabFolder::GetCurFolder ( PIDLIST_ABSOLUTE pidl)
inlineoverride

Implements IPersistFolder2.

Definition at line 191 of file cabview.h.

192 {
194 return curdir ? SHILClone(curdir, pidl) : E_UNEXPECTED;
195 }
HRESULT SHILClone(_In_opt_ LPCITEMIDLIST pidl, _Outptr_ LPITEMIDLIST *ppidl)
Definition: utils.cpp:215

◆ GetDefaultColumn()

IFACEMETHODIMP CCabFolder::GetDefaultColumn ( DWORD  dwRes,
ULONG pSort,
ULONG pDisplay 
)
override

Implements IShellFolder2.

Definition at line 229 of file folder.cpp.

230{
231 if (pSort)
232 *pSort = COL_NAME;
233 if (pDisplay)
234 *pDisplay = COL_NAME;
235 return S_OK;
236}

◆ GetDefaultColumnState()

IFACEMETHODIMP CCabFolder::GetDefaultColumnState ( UINT  iColumn,
SHCOLSTATEF pcsFlags 
)
override

Implements IShellFolder2.

Definition at line 238 of file folder.cpp.

239{
240 if (!pcsFlags || iColumn >= _countof(g_Columns))
241 return E_INVALIDARG;
242 *pcsFlags = g_Columns[iColumn].ColFlags;
243 return S_OK;
244}
static const struct FOLDERCOLUMN g_Columns[]
#define _countof(array)
Definition: sndvol32.h:70

◆ GetDefaultSearchGUID()

IFACEMETHODIMP CCabFolder::GetDefaultSearchGUID ( GUID pguid)
inlineoverride

Implements IShellFolder2.

Definition at line 143 of file cabview.h.

144 {
145 return E_NOTIMPL;
146 }

◆ GetDetailsEx()

IFACEMETHODIMP CCabFolder::GetDetailsEx ( PCUITEMID_CHILD  pidl,
const SHCOLUMNID pscid,
VARIANT pv 
)
override

Implements IShellFolder2.

Definition at line 376 of file folder.cpp.

377{
378 if (!pscid || !pv)
379 return E_INVALIDARG;
380
381 CABITEM *item;
382 int col = MapSCIDToColumn(*pscid);
383 if (col >= 0)
384 {
385 return GetItemDetails(pidl, col, NULL, pv);
386 }
387 else if ((item = CABITEM::Validate(pidl)) == NULL)
388 {
389 return E_INVALIDARG;
390 }
391 else if (IsEqual(*pscid, FMTID_ShellDetails, PID_FINDDATA))
392 {
393 WIN32_FIND_DATA wfd;
394 ZeroMemory(&wfd, sizeof(wfd));
395 wfd.dwFileAttributes = item->GetFSAttributes();
396 wfd.nFileSizeLow = item->Size;
397 DosDateTimeToFileTime(item->Date, item->Time, &wfd.ftLastWriteTime);
398 lstrcpyn(wfd.cFileName, item->GetName(), MAX_PATH);
399 return InitVariantFromBuffer(&wfd, sizeof(wfd), pv);
400 }
401 return E_FAIL;
402}
int MapSCIDToColumn(const SHCOLUMNID &scid)
Definition: folder.cpp:422
HRESULT GetItemDetails(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd, VARIANT *pv)
Definition: folder.cpp:278
#define E_FAIL
Definition: ddrawi.h:102
HRESULT InitVariantFromBuffer(const void *buffer, UINT cb, VARIANT *pv)
Definition: util.h:26
#define MAX_PATH
Definition: compat.h:34
BOOL WINAPI DosDateTimeToFileTime(IN WORD wFatDate, IN WORD wFatTime, OUT LPFILETIME lpFileTime)
Definition: time.c:75
@ IsEqual
Definition: fatprocs.h:1887
#define PID_FINDDATA
Definition: shlguid.h:169
#define lstrcpyn
Definition: winbase.h:3596

◆ GetDetailsOf()

IFACEMETHODIMP CCabFolder::GetDetailsOf ( PCUITEMID_CHILD  pidl,
UINT  iColumn,
SHELLDETAILS psd 
)
override

Implements IShellFolder2.

Definition at line 404 of file folder.cpp.

405{
406 if (!psd || iColumn >= _countof(g_Columns))
407 {
408 return E_INVALIDARG;
409 }
410 else if (!pidl)
411 {
412 psd->fmt = g_Columns[iColumn].LvcFmt;
413 psd->cxChar = g_Columns[iColumn].LvcChars;
415 if (LoadStringW(_AtlBaseModule.GetResourceInstance(), g_Columns[iColumn].TextId, buf, _countof(buf)))
416 return StrTo(buf, psd->str);
417 return E_FAIL;
418 }
419 return GetItemDetails(pidl, iColumn, psd, NULL);
420}
HRESULT StrTo(LPCWSTR str, UINT len, STRRET &sr)
Definition: util.h:49
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
short WCHAR
Definition: pedump.c:58
#define LoadStringW
Definition: utils.h:64
STRRET str
Definition: shtypes.idl:108

Referenced by CompareID().

◆ GetDisplayNameOf()

IFACEMETHODIMP CCabFolder::GetDisplayNameOf ( PCUITEMID_CHILD  pidl,
DWORD  dwFlags,
LPSTRRET  pName 
)
override

Definition at line 246 of file folder.cpp.

247{
249 if (!item || !pName)
250 return E_INVALIDARG;
251
253 {
255 return StrTo(FLATFOLDER ? item->Path : item->GetName(), *pName);
256
259 return E_FAIL;
260 UINT cch = lstrlenW(parent) + 1 + lstrlenW(item->Path) + 1;
261 pName->uType = STRRET_WSTR;
262 pName->pOleStr = (LPWSTR)SHAlloc(cch * sizeof(WCHAR));
263 if (!pName->pOleStr)
264 return E_OUTOFMEMORY;
265 lstrcpyW(pName->pOleStr, parent);
266 PathAppendW(pName->pOleStr, item->Path);
267 return S_OK;
268 }
269
270 SHFILEINFO fi;
271 DWORD attr = item->IsFolder() ? FILE_ATTRIBUTE_DIRECTORY : 0;
273 if (SHGetFileInfo(item->GetName(), attr, &fi, sizeof(fi), flags))
274 return StrTo(fi.szDisplayName, *pName);
275 return StrTo(item->GetName(), *pName);
276}
#define lstrcpyW
Definition: compat.h:749
#define lstrlenW
Definition: compat.h:750
r parent
Definition: btrfs.c:3010
unsigned long DWORD
Definition: ntddk_ex.h:95
GLbitfield flags
Definition: glext.h:7161
static LPSTR pName
Definition: security.c:86
#define FILE_ATTRIBUTE_DIRECTORY
Definition: nt_native.h:705
#define PathAppendW
Definition: pathcch.h:310
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1496
#define SHGetFileInfo
Definition: shellapi.h:750
_In_ UINT _In_ UINT cch
Definition: shellapi.h:432
#define SHGFI_DISPLAYNAME
Definition: shellapi.h:166
#define SHGFI_USEFILEATTRIBUTES
Definition: shellapi.h:181
@ STRRET_WSTR
Definition: shtypes.idl:85
CHAR szDisplayName[MAX_PATH]
Definition: shellapi.h:380
Definition: cookie.c:202
uint16_t * LPWSTR
Definition: typedefs.h:56

Referenced by GetItemDetails().

◆ GetIconOf()

IFACEMETHODIMP CCabFolder::GetIconOf ( PCUITEMID_CHILD  pidl,
UINT  flags,
int pIconIndex 
)
override

Implements IShellIcon.

Definition at line 674 of file folder.cpp.

675{
676 if (CABITEM *item = CABITEM::Validate(pidl))
677 {
678 int index = MapPIDLToSystemImageListIndex(this, pidl, flags);
679 if (index == -1 && item->IsFolder())
680 index = (flags & GIL_OPENICON) ? SIID_FOLDEROPEN : SIID_FOLDER;
681 if (index != -1)
682 {
683 *pIconIndex = index;
684 return S_OK;
685 }
686 }
687 return S_FALSE;
688}
#define index(s, c)
Definition: various.h:29
#define SIID_FOLDEROPEN
Definition: precomp.h:31
#define SIID_FOLDER
Definition: precomp.h:30
int MapPIDLToSystemImageListIndex(IShellFolder *pSF, PCUITEMID_CHILD pidl, UINT GilFlags=0)
Definition: util.h:150
GLuint index
Definition: glext.h:6031
#define S_FALSE
Definition: winerror.h:3451

◆ GetItemDetails()

HRESULT CCabFolder::GetItemDetails ( PCUITEMID_CHILD  pidl,
UINT  iColumn,
SHELLDETAILS psd,
VARIANT pv 
)

Definition at line 278 of file folder.cpp.

279{
280 HRESULT hr = E_FAIL;
281 STRRET *psr = &psd->str, srvar;
283 if (!item)
284 return E_INVALIDARG;
285
286 switch (iColumn)
287 {
288 case COL_NAME:
289 {
290 hr = GetDisplayNameOf(pidl, SHGDN_NORMAL | SHGDN_INFOLDER, pv ? &srvar : psr);
291 return SUCCEEDED(hr) && pv ? StrRetToVariantBSTR(&srvar, *pv) : hr;
292 }
293
294 case COL_SIZE:
295 {
296 UINT data = item->Size;
297 if (pv)
298 {
299 V_VT(pv) = VT_UI4;
300 V_UI4(pv) = data;
301 }
302 else
303 {
304 psr->uType = STRRET_CSTR;
306 }
307 return S_OK;
308 }
309
310 case COL_TYPE:
311 {
312 SHFILEINFO fi;
314 DWORD attr = item->GetFSAttributes();
316 if (SHGetFileInfo(item->GetName(), attr, &fi, sizeof(fi), flags))
317 return pv ? StrTo(data, *pv) : StrTo(data, *psr);
318 break;
319 }
320
321 case COL_MDATE:
322 {
323 if (pv)
324 {
325 if (DosDateTimeToVariantTime(item->Date, item->Time, &V_DATE(pv)))
326 {
327 V_VT(pv) = VT_DATE;
328 return S_OK;
329 }
330 }
331 else
332 {
333 FILETIME utc, loc;
334 if (DosDateTimeToFileTime(item->Date, item->Time, &utc) && FileTimeToLocalFileTime(&utc, &loc))
335 {
336 psr->uType = STRRET_CSTR;
337 if (SHFormatDateTimeA(&loc, NULL, psr->cStr, _countof(psr->cStr)))
338 {
339 return S_OK;
340 }
341 }
342 }
343 break;
344 }
345
346 case COL_PATH:
347 {
348 UINT len = item->NameOffset ? item->NameOffset - 1 : 0;
349 return pv ? StrTo(item->Path, len, *pv) : StrTo(item->Path, len, *psr);
350 }
351
352 case COL_ATT:
353 {
354 UINT data = item->GetFSAttributes();
355 if (pv)
356 {
357 V_VT(pv) = VT_UI4;
358 V_UI4(pv) = data;
359 }
360 else
361 {
362 UINT i = 0;
363 psr->uType = STRRET_CSTR;
364 if (data & FILE_ATTRIBUTE_READONLY) psr->cStr[i++] = 'R';
365 if (data & FILE_ATTRIBUTE_HIDDEN) psr->cStr[i++] = 'H';
366 if (data & FILE_ATTRIBUTE_SYSTEM) psr->cStr[i++] = 'S';
367 if (data & FILE_ATTRIBUTE_ARCHIVE) psr->cStr[i++] = 'A';
368 psr->cStr[i++] = '\0';
369 }
370 return S_OK;
371 }
372 }
373 return hr;
374}
PRTL_UNICODE_STRING_BUFFER Path
IFACEMETHODIMP GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET pName) override
Definition: folder.cpp:246
EXTERN_C INT WINAPI SHFormatDateTimeA(const FILETIME UNALIGNED *fileTime, DWORD *flags, LPSTR buf, UINT size)
Definition: ordinal.c:4732
HRESULT StrRetToVariantBSTR(STRRET *psr, VARIANT &v)
Definition: util.h:80
@ VT_DATE
Definition: compat.h:2302
@ VT_UI4
Definition: compat.h:2313
static DOUBLE utc(DOUBLE time, DateInstance *date)
Definition: date.c:315
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
Definition: time.c:216
LPSTR WINAPI StrFormatByteSizeA(DWORD dwBytes, LPSTR lpszDest, UINT cchMax)
Definition: string.c:1025
@ COL_ATT
Definition: folder.cpp:18
@ COL_TYPE
Definition: folder.cpp:15
@ COL_PATH
Definition: folder.cpp:17
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLenum GLsizei len
Definition: glext.h:6722
#define FILE_ATTRIBUTE_READONLY
Definition: nt_native.h:702
#define FILE_ATTRIBUTE_HIDDEN
Definition: nt_native.h:703
#define FILE_ATTRIBUTE_SYSTEM
Definition: nt_native.h:704
#define FILE_ATTRIBUTE_ARCHIVE
Definition: nt_native.h:706
#define V_VT(A)
Definition: oleauto.h:211
#define V_UI4(A)
Definition: oleauto.h:270
#define V_DATE(A)
Definition: oleauto.h:231
#define SHGFI_TYPENAME
Definition: shellapi.h:167
@ STRRET_CSTR
Definition: shtypes.idl:87
CHAR szTypeName[80]
Definition: shellapi.h:381
char cStr[MAX_PATH]
Definition: shtypes.idl:98
UINT uType
Definition: shtypes.idl:93
const uint16_t * LPCWSTR
Definition: typedefs.h:57
INT WINAPI DosDateTimeToVariantTime(USHORT wDosDate, USHORT wDosTime, double *pDateOut)
Definition: variant.c:1211

Referenced by GetDetailsEx(), and GetDetailsOf().

◆ GetUIObjectOf()

IFACEMETHODIMP CCabFolder::GetUIObjectOf ( HWND  hwndOwner,
UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
REFIID  riid,
UINT prgfInOut,
LPVOID ppvOut 
)
override

Definition at line 632 of file folder.cpp.

633{
635 if (riid == IID_IExtractIconA || riid == IID_IExtractIconW)
636 {
637 if (cidl != 1)
638 return E_INVALIDARG;
639 CABITEM *item = CABITEM::Validate(apidl[0]);
640 if (!item)
641 return E_INVALIDARG;
642
643 DWORD attr = item->GetFSAttributes();
644 return SHCreateFileExtractIconW(item->GetName(), attr, riid, ppvOut);
645 }
646 else if (riid == IID_IContextMenu && cidl)
647 {
649 IContextMenu **ppCM = (IContextMenu**)ppvOut;
650 return CDefFolderMenu_Create2(NULL, hwndOwner, cidl, apidl, this, func, 0, NULL, ppCM);
651 }
652 else if (riid == IID_IDataObject && cidl)
653 {
654 // Note: This IDataObject is only compatible with IContextMenu, it cannot handle drag&drop of virtual items!
655 return CIDLData_CreateFromIDArray(m_CurDir, cidl, apidl, (IDataObject**)ppvOut);
656 }
657 return hr;
658}
EXTERN_C HRESULT WINAPI SHCreateFileExtractIconW(_In_ LPCWSTR pszFile, _In_ DWORD dwFileAttributes, _In_ REFIID riid, _Outptr_ void **ppv)
static HRESULT CALLBACK ItemMenuCallback(IShellFolder *psf, HWND hwnd, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: folder.cpp:111
HRESULT WINAPI CIDLData_CreateFromIDArray(PCIDLIST_ABSOLUTE pidlFolder, UINT cpidlFiles, PCUIDLIST_RELATIVE_ARRAY lppidlFiles, LPDATAOBJECT *ppdataObject)
Definition: shellord.c:2436

◆ Initialize()

IFACEMETHODIMP CCabFolder::Initialize ( PCIDLIST_ABSOLUTE  pidl)
inlineoverride

Implements IPersistFolder.

Definition at line 197 of file cabview.h.

198 {
200 if (SHGetPathFromIDListW(pidl, path))
201 {
202 PIDLIST_ABSOLUTE curdir = ILClone(pidl);
203 if (curdir)
204 {
205 m_CurDir.Attach(curdir);
206 return S_OK;
207 }
208 return E_OUTOFMEMORY;
209 }
210 return E_INVALIDARG;
211 }

◆ MapColumnToSCID()

IFACEMETHODIMP CCabFolder::MapColumnToSCID ( UINT  column,
SHCOLUMNID pscid 
)
override

Implements IShellFolder2.

Definition at line 432 of file folder.cpp.

433{
435 {
436 pscid->fmtid = *g_Columns[column].pkg;
437 pscid->pid = g_Columns[column].pki;
438 return S_OK;
439 }
440 return E_FAIL;
441}

◆ MapSCIDToColumn()

int CCabFolder::MapSCIDToColumn ( const SHCOLUMNID scid)

Definition at line 422 of file folder.cpp.

423{
424 for (UINT i = 0; i < _countof(g_Columns); ++i)
425 {
426 if (g_Columns[i].pkg && IsEqual(scid, *g_Columns[i].pkg, g_Columns[i].pki))
427 return i;
428 }
429 return -1;
430}

Referenced by GetDetailsEx().

◆ MessageSFVCB()

IFACEMETHODIMP CCabFolder::MessageSFVCB ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
override

Definition at line 660 of file folder.cpp.

661{
662 switch (uMsg)
663 {
666 return S_OK;
669 return S_OK;
670 }
671 return E_NOTIMPL;
672}
#define SFVM_WINDOWCLOSING
WPARAM wParam
Definition: combotst.c:138
HANDLE HWND
Definition: compat.h:19
#define SFVM_WINDOWCREATED
Definition: shlobj.h:1324

◆ ParseDisplayName()

IFACEMETHODIMP CCabFolder::ParseDisplayName ( HWND  hwndOwner,
LPBC  pbc,
LPOLESTR  lpszDisplayName,
ULONG pchEaten,
PIDLIST_RELATIVE ppidl,
ULONG pdwAttributes 
)
override

Implements IShellFolder.

Definition at line 473 of file folder.cpp.

474{
475 *ppidl = NULL;
476 if (pchEaten)
477 *pchEaten = 0;
478
479 HRESULT hr;
480 PDNCALLBACKDATA data = { lpszDisplayName, NULL };
482 return hr;
483 if (!data.pItem)
485
486 *ppidl = (PIDLIST_RELATIVE)data.pItem;
487 if (pchEaten)
488 *pchEaten = lstrlenW(lpszDisplayName);
489 if (pdwAttributes)
490 GetAttributesOf(1, ppidl, (SFGAOF*)pdwAttributes);
491 return S_OK;
492}
IFACEMETHODIMP GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, SFGAOF *rgfInOut) override
Definition: folder.cpp:593
static HRESULT Enumerate(PCIDLIST_ABSOLUTE pidl, HWND hwnd, EXTRACTCALLBACK Callback, LPVOID cookie)
Definition: folder.cpp:215
static HRESULT CALLBACK ParseDisplayNameCallback(EXTRACTCALLBACKMSG msg, const EXTRACTCALLBACKDATA &ecd, LPVOID cookie)
Definition: folder.cpp:449
#define FAILED(hr)
Definition: intsafe.h:51
if(dx< 0)
Definition: linetemp.h:194
ITEMIDLIST_RELATIVE * PIDLIST_RELATIVE
Definition: shtypes.idl:54

◆ SetNameOf()

IFACEMETHODIMP CCabFolder::SetNameOf ( HWND  hwndOwner,
PCUITEMID_CHILD  pidl,
LPCOLESTR  lpName,
DWORD  dwFlags,
PITEMID_CHILD pPidlOut 
)
inlineoverride

Implements IShellFolder.

Definition at line 185 of file cabview.h.

186 {
187 return E_NOTIMPL;
188 }

Member Data Documentation

◆ m_CurDir

CComHeapPtr<ITEMIDLIST> CCabFolder::m_CurDir
protected

◆ m_ShellViewWindow

HWND CCabFolder::m_ShellViewWindow = NULL
protected

Definition at line 127 of file cabview.h.

Referenced by ExtractFilesUI(), and MessageSFVCB().


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