ReactOS 0.4.15-dev-7201-g2de6e75
CDesktopFolder Class Reference

#include <CDesktopFolder.h>

Inheritance diagram for CDesktopFolder:
Collaboration diagram for CDesktopFolder:

Public Member Functions

 CDesktopFolder ()
 
 ~CDesktopFolder ()
 
HRESULT WINAPI FinalConstruct ()
 
virtual HRESULT WINAPI ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes)
 
virtual HRESULT WINAPI EnumObjects (HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
 
virtual HRESULT WINAPI BindToObject (PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
 
virtual HRESULT WINAPI BindToStorage (PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
 
virtual HRESULT WINAPI CompareIDs (LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
 
virtual HRESULT WINAPI CreateViewObject (HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
 
virtual HRESULT WINAPI GetAttributesOf (UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut)
 
virtual HRESULT WINAPI GetUIObjectOf (HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut)
 
virtual HRESULT WINAPI GetDisplayNameOf (PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
 
virtual HRESULT WINAPI SetNameOf (HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut)
 
virtual HRESULT WINAPI GetDefaultSearchGUID (GUID *pguid)
 
virtual HRESULT WINAPI EnumSearches (IEnumExtraSearch **ppenum)
 
virtual HRESULT WINAPI GetDefaultColumn (DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
 
virtual HRESULT WINAPI GetDefaultColumnState (UINT iColumn, DWORD *pcsFlags)
 
virtual HRESULT WINAPI GetDetailsEx (PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv)
 
virtual HRESULT WINAPI GetDetailsOf (PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd)
 
virtual HRESULT WINAPI MapColumnToSCID (UINT column, SHCOLUMNID *pscid)
 
virtual HRESULT WINAPI GetClassID (CLSID *lpClassId)
 
virtual HRESULT WINAPI Initialize (PCIDLIST_ABSOLUTE pidl)
 
virtual HRESULT WINAPI GetCurFolder (PIDLIST_ABSOLUTE *pidl)
 
virtual HRESULT WINAPI CallBack (IShellFolder *psf, HWND hwndOwner, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
STDMETHODIMP GetMaxLength (LPCWSTR pszName, int *piMaxNameLen)
 
STDMETHODIMP GetValidCharacters (LPWSTR *ppwszValidChars, LPWSTR *ppwszInvalidChars)
 
- 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 CallBack ([in] IShellFolder *psf, [in] HWND hwndOwner, [in] IDataObject *pdtobj, [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam)
 

Private Member Functions

HRESULT _GetSFFromPidl (LPCITEMIDLIST pidl, IShellFolder2 **psf)
 

Private Attributes

CComPtr< IShellFolder2m_DesktopFSFolder
 
CComPtr< IShellFolder2m_SharedDesktopFSFolder
 
CComPtr< IShellFolder2m_regFolder
 
LPWSTR sPathTarget
 
LPITEMIDLIST pidlRoot
 

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 26 of file CDesktopFolder.h.

Constructor & Destructor Documentation

◆ CDesktopFolder()

CDesktopFolder::CDesktopFolder ( )

Definition at line 196 of file CDesktopFolder.cpp.

196 :
199{
200}
LPITEMIDLIST pidlRoot
#define NULL
Definition: types.h:112

◆ ~CDesktopFolder()

CDesktopFolder::~CDesktopFolder ( )

Definition at line 202 of file CDesktopFolder.cpp.

203{
204}

Member Function Documentation

◆ _GetSFFromPidl()

HRESULT CDesktopFolder::_GetSFFromPidl ( LPCITEMIDLIST  pidl,
IShellFolder2 **  psf 
)
private

Definition at line 253 of file CDesktopFolder.cpp.

254{
255 WCHAR szFileName[MAX_PATH];
256
257 if (_ILIsSpecialFolder(pidl))
258 return m_regFolder->QueryInterface(IID_PPV_ARG(IShellFolder2, psf));
259
260 lstrcpynW(szFileName, sPathTarget, MAX_PATH - 1);
261 PathAddBackslashW(szFileName);
262 int cLen = wcslen(szFileName);
263
264 if (!_ILSimpleGetTextW(pidl, szFileName + cLen, MAX_PATH - cLen))
265 return E_FAIL;
266
268 return m_SharedDesktopFSFolder->QueryInterface(IID_PPV_ARG(IShellFolder2, psf));
269 else
270 return m_DesktopFSFolder->QueryInterface(IID_PPV_ARG(IShellFolder2, psf));
271}
CComPtr< IShellFolder2 > m_SharedDesktopFSFolder
CComPtr< IShellFolder2 > m_DesktopFSFolder
CComPtr< IShellFolder2 > m_regFolder
#define E_FAIL
Definition: ddrawi.h:102
#define MAX_PATH
Definition: compat.h:34
#define lstrcpynW
Definition: compat.h:738
static BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define PathAddBackslashW
Definition: pathcch.h:301
DWORD _ILSimpleGetTextW(LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
Definition: pidl.c:2122
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23
#define GetFileAttributes
Definition: winbase.h:3750
#define IID_PPV_ARG(Itype, ppType)
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by BindToObject(), GetAttributesOf(), GetDetailsOf(), GetDisplayNameOf(), GetUIObjectOf(), and SetNameOf().

◆ BindToObject()

HRESULT WINAPI CDesktopFolder::BindToObject ( PCUIDLIST_RELATIVE  pidl,
LPBC  pbcReserved,
REFIID  riid,
LPVOID ppvOut 
)
virtual

Definition at line 411 of file CDesktopFolder.cpp.

416{
417 if (!pidl)
418 return E_INVALIDARG;
419
420 CComPtr<IShellFolder2> psf;
421 HRESULT hr = _GetSFFromPidl(pidl, &psf);
423 return hr;
424
425 return psf->BindToObject(pidl, pbcReserved, riid, ppvOut);
426}
HRESULT _GetSFFromPidl(LPCITEMIDLIST pidl, IShellFolder2 **psf)
#define E_INVALIDARG
Definition: ddrawi.h:101
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
REFIID riid
Definition: atlbase.h:39
HRESULT hr
Definition: shlfolder.c:183

Referenced by GetUIObjectOf().

◆ BindToStorage()

HRESULT WINAPI CDesktopFolder::BindToStorage ( PCUIDLIST_RELATIVE  pidl,
LPBC  pbcReserved,
REFIID  riid,
LPVOID ppvOut 
)
virtual

Definition at line 431 of file CDesktopFolder.cpp.

436{
437 FIXME ("(%p)->(pidl=%p,%p,%s,%p) stub\n",
438 this, pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
439
440 *ppvOut = NULL;
441 return E_NOTIMPL;
442}
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99
const char * shdebugstr_guid(const struct _GUID *id)
Definition: debughlp.cpp:428

◆ CallBack()

HRESULT WINAPI CDesktopFolder::CallBack ( IShellFolder psf,
HWND  hwndOwner,
IDataObject pdtobj,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
virtual

Implements IContextMenuCB.

Definition at line 844 of file CDesktopFolder.cpp.

845{
846 if (uMsg != DFM_MERGECONTEXTMENU && uMsg != DFM_INVOKECOMMAND)
847 return S_OK;
848
849 /* no data object means no selection */
850 if (!pdtobj)
851 {
852 if (uMsg == DFM_INVOKECOMMAND && wParam == 0)
853 {
854 if (32 >= (UINT_PTR)ShellExecuteW(hwndOwner, L"open", L"rundll32.exe",
855 L"shell32.dll,Control_RunDLL desk.cpl", NULL, SW_SHOWNORMAL))
856 {
857 return E_FAIL;
858 }
859 return S_OK;
860 }
861 else if (uMsg == DFM_MERGECONTEXTMENU)
862 {
863 QCMINFO *pqcminfo = (QCMINFO *)lParam;
864 HMENU hpopup = CreatePopupMenu();
866 Shell_MergeMenus(pqcminfo->hmenu, hpopup, pqcminfo->indexMenu, pqcminfo->idCmdFirst++, pqcminfo->idCmdLast, MM_ADDSEPARATOR);
867 DestroyMenu(hpopup);
868 }
869
870 return S_OK;
871 }
872
874 return S_OK;
875
876 return Shell_DefaultContextMenuCallBack(this, pdtobj);
877}
#define IDS_PROPERTIES
Definition: resource.h:102
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
#define DFM_MERGECONTEXTMENU
Definition: precomp.h:44
#define DFM_INVOKECOMMAND
Definition: precomp.h:45
HRESULT WINAPI Shell_DefaultContextMenuCallBack(IShellFolder *psf, IDataObject *pdtobj)
Definition: shlfolder.cpp:463
#define S_OK
Definition: intsafe.h:52
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
#define L(x)
Definition: ntvdm.h:50
void WINAPI _InsertMenuItemW(HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2379
UINT WINAPI Shell_MergeMenus(HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags)
Definition: shlmenu.c:856
#define MM_ADDSEPARATOR
Definition: shlobj.h:2446
#define DFM_CMD_PROPERTIES
Definition: shlobj.h:2530
HMENU hmenu
Definition: shlobj.h:1381
UINT idCmdLast
Definition: shlobj.h:1384
UINT idCmdFirst
Definition: shlobj.h:1383
UINT indexMenu
Definition: shlobj.h:1382
#define SW_SHOWNORMAL
Definition: winuser.h:769
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:838
#define MFS_ENABLED
Definition: winuser.h:750
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define MFT_STRING
Definition: winuser.h:746
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582

◆ CompareIDs()

HRESULT WINAPI CDesktopFolder::CompareIDs ( LPARAM  lParam,
PCUIDLIST_RELATIVE  pidl1,
PCUIDLIST_RELATIVE  pidl2 
)
virtual

Implements IShellFolder.

Definition at line 447 of file CDesktopFolder.cpp.

448{
449 bool bIsDesktopFolder1, bIsDesktopFolder2;
450
451 if (!pidl1 || !pidl2)
452 {
453 ERR("Got null pidl pointer (%Ix %p %p)!\n", lParam, pidl1, pidl2);
454 return E_INVALIDARG;
455 }
456
457 bIsDesktopFolder1 = _ILIsDesktop(pidl1);
458 bIsDesktopFolder2 = _ILIsDesktop(pidl2);
459 if (bIsDesktopFolder1 || bIsDesktopFolder2)
460 return MAKE_COMPARE_HRESULT(bIsDesktopFolder1 - bIsDesktopFolder2);
461
462 if (_ILIsSpecialFolder(pidl1) || _ILIsSpecialFolder(pidl2))
463 return m_regFolder->CompareIDs(lParam, pidl1, pidl2);
464
465 return m_DesktopFSFolder->CompareIDs(lParam, pidl1, pidl2);
466}
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
Definition: CBandSite.h:24
#define ERR(fmt,...)
Definition: debug.h:110
#define MAKE_COMPARE_HRESULT(x)
Definition: shellutils.h:573

◆ CreateViewObject()

HRESULT WINAPI CDesktopFolder::CreateViewObject ( HWND  hwndOwner,
REFIID  riid,
LPVOID ppvOut 
)
virtual

Definition at line 471 of file CDesktopFolder.cpp.

475{
477
478 TRACE ("(%p)->(hwnd=%p,%s,%p)\n",
479 this, hwndOwner, shdebugstr_guid (&riid), ppvOut);
480
481 if (!ppvOut)
482 return hr;
483
484 *ppvOut = NULL;
485
486 if (IsEqualIID (riid, IID_IDropTarget))
487 {
488 hr = m_DesktopFSFolder->CreateViewObject(hwndOwner, riid, ppvOut);
489 }
490 else if (IsEqualIID (riid, IID_IContextMenu))
491 {
492 HKEY hKeys[16];
493 UINT cKeys = 0;
494 AddClassKeyToArray(L"Directory\\Background", hKeys, &cKeys);
495
496 DEFCONTEXTMENU dcm;
497 dcm.hwnd = hwndOwner;
498 dcm.pcmcb = this;
499 dcm.pidlFolder = pidlRoot;
500 dcm.psf = this;
501 dcm.cidl = 0;
502 dcm.apidl = NULL;
503 dcm.cKeys = cKeys;
504 dcm.aKeys = hKeys;
506 hr = SHCreateDefaultContextMenu (&dcm, riid, ppvOut);
507 }
508 else if (IsEqualIID (riid, IID_IShellView))
509 {
510 SFV_CREATE sfvparams = {sizeof(SFV_CREATE), this};
511 hr = SHCreateShellFolderView(&sfvparams, (IShellView**)ppvOut);
512 }
513 TRACE ("-- (%p)->(interface=%p)\n", this, ppvOut);
514 return hr;
515}
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
Definition: CDefView.cpp:4027
HRESULT WINAPI SHCreateDefaultContextMenu(const DEFCONTEXTMENU *pdcm, REFIID riid, void **ppv)
unsigned int UINT
Definition: ndis.h:50
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
void AddClassKeyToArray(const WCHAR *szClass, HKEY *array, UINT *cKeys)
Definition: shlfolder.cpp:269
struct _SFV_CREATE SFV_CREATE
#define TRACE(s)
Definition: solgame.cpp:4
IContextMenuCB * pcmcb
Definition: shlobj.h:2468
IShellFolder * psf
Definition: shlobj.h:2470
IUnknown * punkAssociationInfo
Definition: shlobj.h:2473
PCUITEMID_CHILD_ARRAY apidl
Definition: shlobj.h:2472
const HKEY * aKeys
Definition: shlobj.h:2475
PCIDLIST_ABSOLUTE pidlFolder
Definition: shlobj.h:2469

◆ EnumObjects()

HRESULT WINAPI CDesktopFolder::EnumObjects ( HWND  hwndOwner,
DWORD  dwFlags,
LPENUMIDLIST *  ppEnumIDList 
)
virtual

Definition at line 386 of file CDesktopFolder.cpp.

387{
388 CComPtr<IEnumIDList> pRegEnumerator;
389 CComPtr<IEnumIDList> pDesktopEnumerator;
390 CComPtr<IEnumIDList> pCommonDesktopEnumerator;
391 HRESULT hr;
392
393 hr = m_regFolder->EnumObjects(hwndOwner, dwFlags, &pRegEnumerator);
394 if (FAILED(hr))
395 ERR("EnumObjects for reg folder failed\n");
396
397 hr = m_DesktopFSFolder->EnumObjects(hwndOwner, dwFlags, &pDesktopEnumerator);
398 if (FAILED(hr))
399 ERR("EnumObjects for desktop fs folder failed\n");
400
401 hr = m_SharedDesktopFSFolder->EnumObjects(hwndOwner, dwFlags, &pCommonDesktopEnumerator);
402 if (FAILED(hr))
403 ERR("EnumObjects for shared desktop fs folder failed\n");
404
405 return ShellObjectCreatorInit<CDesktopFolderEnum>(dwFlags,pRegEnumerator, pDesktopEnumerator, pCommonDesktopEnumerator, IID_PPV_ARG(IEnumIDList, ppEnumIDList));
406}
#define FAILED(hr)
Definition: intsafe.h:51
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176

◆ EnumSearches()

HRESULT WINAPI CDesktopFolder::EnumSearches ( IEnumExtraSearch **  ppenum)
virtual

Implements IShellFolder2.

Definition at line 739 of file CDesktopFolder.cpp.

740{
741 FIXME ("(%p)\n", this);
742 return E_NOTIMPL;
743}

◆ FinalConstruct()

HRESULT WINAPI CDesktopFolder::FinalConstruct ( )

Definition at line 206 of file CDesktopFolder.cpp.

207{
208 WCHAR szMyPath[MAX_PATH];
209 HRESULT hr;
210
211 /* Create the root pidl */
213 if (!pidlRoot)
214 return E_OUTOFMEMORY;
215
216 /* Create the inner fs folder */
218 &CLSID_ShellFSFolder,
222 return hr;
223
224 /* Create the inner shared fs folder. Dont fail on failure. */
226 &CLSID_ShellFSFolder,
230 return hr;
231
232 /* Create the inner reg folder */
233 hr = CRegFolder_CreateInstance(&CLSID_ShellDesktop,
234 pidlRoot,
235 L"",
236 L"Desktop",
239 return hr;
240
241 /* Cache the path to the user desktop directory */
243 return E_UNEXPECTED;
244
245 sPathTarget = (LPWSTR)SHAlloc((wcslen(szMyPath) + 1) * sizeof(WCHAR));
246 if (!sPathTarget)
247 return E_OUTOFMEMORY;
248
249 wcscpy(sPathTarget, szMyPath);
250 return S_OK;
251}
static HRESULT SHELL32_CoCreateInitSF(LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidlChild, const GUID *clsid, REFIID riid, LPVOID *ppvOut)
Definition: CFindFolder.cpp:13
HRESULT CRegFolder_CreateInstance(const GUID *pGuid, LPCITEMIDLIST pidlRoot, LPCWSTR lpszPath, LPCWSTR lpszEnumKeyName, REFIID riid, void **ppv)
Definition: CRegFolder.cpp:792
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:304
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
Definition: shellpath.c:3061
LPITEMIDLIST _ILCreateDesktop(void)
Definition: pidl.c:1617
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define CSIDL_COMMON_DESKTOPDIRECTORY
Definition: shlobj.h:2115
#define CSIDL_DESKTOPDIRECTORY
Definition: shlobj.h:2106
#define E_UNEXPECTED
Definition: winerror.h:2456
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ GetAttributesOf()

HRESULT WINAPI CDesktopFolder::GetAttributesOf ( UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
DWORD rgfInOut 
)
virtual

Definition at line 520 of file CDesktopFolder.cpp.

524{
525 HRESULT hr = S_OK;
526
527 TRACE("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
528 this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
529
530 if (cidl && !apidl)
531 return E_INVALIDARG;
532
533 if (*rgfInOut == 0)
534 *rgfInOut = ~0;
535
536 if(cidl == 0)
537 *rgfInOut &= dwDesktopAttributes;
538 else
539 {
540 /* TODO: always add SFGAO_CANLINK */
541 for (UINT i = 0; i < cidl; ++i)
542 {
543 pdump(*apidl);
544 if (_ILIsDesktop(*apidl))
545 *rgfInOut &= dwDesktopAttributes;
546 else if (_ILIsMyComputer(apidl[i]))
547 *rgfInOut &= dwMyComputerAttributes;
548 else if (_ILIsNetHood(apidl[i]))
549 *rgfInOut &= dwMyNetPlacesAttributes;
550 else if (_ILIsFolder(apidl[i]) || _ILIsValue(apidl[i]) || _ILIsSpecialFolder(apidl[i]))
551 {
552 CComPtr<IShellFolder2> psf;
553 HRESULT hr = _GetSFFromPidl(apidl[i], &psf);
555 continue;
556
557 psf->GetAttributesOf(1, &apidl[i], rgfInOut);
558 }
559 else
560 ERR("Got an unknown pidl type!!!\n");
561 }
562 }
563 /* make sure SFGAO_VALIDATE is cleared, some apps depend on that */
564 *rgfInOut &= ~SFGAO_VALIDATE;
565
566 TRACE("-- result=0x%08x\n", *rgfInOut);
567
568 return hr;
569}
static const DWORD dwMyComputerAttributes
static const DWORD dwDesktopAttributes
static DWORD dwMyNetPlacesAttributes
void pdump(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:311
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
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
Definition: pidl.c:1991
BOOL _ILIsMyComputer(LPCITEMIDLIST pidl)
Definition: pidl.c:1946
BOOL _ILIsNetHood(LPCITEMIDLIST pidl)
Definition: pidl.c:1924
BOOL _ILIsValue(LPCITEMIDLIST pidl)
Definition: pidl.c:2000

Referenced by ParseDisplayName().

◆ GetClassID()

HRESULT WINAPI CDesktopFolder::GetClassID ( CLSID lpClassId)
virtual

Implements IPersist.

Definition at line 812 of file CDesktopFolder.cpp.

813{
814 TRACE ("(%p)\n", this);
815
816 if (!lpClassId)
817 return E_POINTER;
818
819 *lpClassId = CLSID_ShellDesktop;
820
821 return S_OK;
822}
#define E_POINTER
Definition: winerror.h:2365

◆ GetCurFolder()

HRESULT WINAPI CDesktopFolder::GetCurFolder ( PIDLIST_ABSOLUTE pidl)
virtual

Implements IPersistFolder2.

Definition at line 834 of file CDesktopFolder.cpp.

835{
836 TRACE ("(%p)->(%p)\n", this, pidl);
837
838 if (!pidl)
839 return E_INVALIDARG; /* xp doesn't have this check and crashes on NULL */
840 *pidl = ILClone (pidlRoot);
841 return S_OK;
842}
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:228

◆ GetDefaultColumn()

HRESULT WINAPI CDesktopFolder::GetDefaultColumn ( DWORD  dwRes,
ULONG pSort,
ULONG pDisplay 
)
virtual

Implements IShellFolder2.

Definition at line 745 of file CDesktopFolder.cpp.

746{
747 TRACE ("(%p)\n", this);
748
749 if (pSort)
750 *pSort = 0;
751 if (pDisplay)
752 *pDisplay = 0;
753
754 return S_OK;
755}

◆ GetDefaultColumnState()

HRESULT WINAPI CDesktopFolder::GetDefaultColumnState ( UINT  iColumn,
DWORD pcsFlags 
)
virtual

Implements IShellFolder2.

Definition at line 757 of file CDesktopFolder.cpp.

758{
759 TRACE ("(%p)\n", this);
760
761 if (!pcsFlags || iColumn >= DESKTOPSHELLVIEWCOLUMNS)
762 return E_INVALIDARG;
763
764 *pcsFlags = DesktopSFHeader[iColumn].pcsFlags;
765
766 return S_OK;
767}
#define DESKTOPSHELLVIEWCOLUMNS
static const shvheader DesktopSFHeader[]

◆ GetDefaultSearchGUID()

HRESULT WINAPI CDesktopFolder::GetDefaultSearchGUID ( GUID pguid)
virtual

Implements IShellFolder2.

Definition at line 733 of file CDesktopFolder.cpp.

734{
735 FIXME ("(%p)\n", this);
736 return E_NOTIMPL;
737}

◆ GetDetailsEx()

HRESULT WINAPI CDesktopFolder::GetDetailsEx ( PCUITEMID_CHILD  pidl,
const SHCOLUMNID pscid,
VARIANT pv 
)
virtual

Implements IShellFolder2.

Definition at line 769 of file CDesktopFolder.cpp.

773{
774 FIXME ("(%p)\n", this);
775
776 return E_NOTIMPL;
777}

◆ GetDetailsOf()

HRESULT WINAPI CDesktopFolder::GetDetailsOf ( PCUITEMID_CHILD  pidl,
UINT  iColumn,
SHELLDETAILS psd 
)
virtual

Implements IShellFolder2.

Definition at line 779 of file CDesktopFolder.cpp.

783{
784 if (!psd || iColumn >= DESKTOPSHELLVIEWCOLUMNS)
785 return E_INVALIDARG;
786
787 if (!pidl)
788 {
789 psd->fmt = DesktopSFHeader[iColumn].fmt;
790 psd->cxChar = DesktopSFHeader[iColumn].cxChar;
791 return SHSetStrRet(&psd->str, DesktopSFHeader[iColumn].colnameid);
792 }
793
794 CComPtr<IShellFolder2> psf;
795 HRESULT hr = _GetSFFromPidl(pidl, &psf);
797 return hr;
798
799 hr = psf->GetDetailsOf(pidl, iColumn, psd);
801 return hr;
802
803 return hr;
804}
STRRET str
Definition: shtypes.idl:108

◆ GetDisplayNameOf()

HRESULT WINAPI CDesktopFolder::GetDisplayNameOf ( PCUITEMID_CHILD  pidl,
DWORD  dwFlags,
LPSTRRET  strRet 
)
virtual

Definition at line 677 of file CDesktopFolder.cpp.

678{
679 TRACE ("(%p)->(pidl=%p,0x%08x,%p)\n", this, pidl, dwFlags, strRet);
680 pdump (pidl);
681
682 if (!strRet)
683 return E_INVALIDARG;
684
685 if (!_ILIsPidlSimple (pidl))
686 {
687 return SHELL32_GetDisplayNameOfChild(this, pidl, dwFlags, strRet);
688 }
689 else if (_ILIsDesktop(pidl))
690 {
692 return SHSetStrRet(strRet, sPathTarget);
693 else
694 return m_regFolder->GetDisplayNameOf(pidl, dwFlags, strRet);
695 }
696
697 /* file system folder or file rooted at the desktop */
698 CComPtr<IShellFolder2> psf;
699 HRESULT hr = _GetSFFromPidl(pidl, &psf);
701 return hr;
702
703 return psf->GetDisplayNameOf(pidl, dwFlags, strRet);
704}
#define GET_SHGDN_RELATION(dwFlags)
Definition: precomp.h:53
#define GET_SHGDN_FOR(dwFlags)
Definition: precomp.h:52
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
HRESULT SHELL32_GetDisplayNameOfChild(IShellFolder2 *psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet)
Definition: shlfolder.cpp:198

◆ GetMaxLength()

STDMETHODIMP CDesktopFolder::GetMaxLength ( LPCWSTR  pszName,
int piMaxNameLen 
)
inline

Definition at line 86 of file CDesktopFolder.h.

87 {
88 return E_NOTIMPL;
89 }

◆ GetUIObjectOf()

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

Definition at line 583 of file CDesktopFolder.cpp.

590{
591 LPVOID pObj = NULL;
593
594 TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
595 this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
596
597 if (!ppvOut)
598 return hr;
599
600 *ppvOut = NULL;
601
602 if (cidl == 1 && !_ILIsSpecialFolder(apidl[0]))
603 {
604 CComPtr<IShellFolder2> psf;
605 HRESULT hr = _GetSFFromPidl(apidl[0], &psf);
607 return hr;
608
609 return psf->GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, ppvOut);
610 }
611
612 if (IsEqualIID (riid, IID_IContextMenu))
613 {
614 if (cidl > 0 && _ILIsSpecialFolder(apidl[0]))
615 {
616 hr = m_regFolder->GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, &pObj);
617 }
618 else
619 {
620 /* Do not use the context menu of the CFSFolder here. */
621 /* We need to pass a pointer of the CDesktopFolder so as the data object that the context menu gets is rooted to the desktop */
622 /* Otherwise operations like that involve items from both user and shared desktop will not work */
623 HKEY hKeys[16];
624 UINT cKeys = 0;
625 if (cidl > 0)
626 {
627 AddFSClassKeysToArray(apidl[0], hKeys, &cKeys);
628 }
629
630 DEFCONTEXTMENU dcm;
631 dcm.hwnd = hwndOwner;
632 dcm.pcmcb = this;
633 dcm.pidlFolder = pidlRoot;
634 dcm.psf = this;
635 dcm.cidl = cidl;
636 dcm.apidl = apidl;
637 dcm.cKeys = cKeys;
638 dcm.aKeys = hKeys;
640 hr = SHCreateDefaultContextMenu (&dcm, riid, &pObj);
641 }
642 }
643 else if (IsEqualIID (riid, IID_IDataObject) && (cidl >= 1))
644 {
645 hr = IDataObject_Constructor( hwndOwner, pidlRoot, apidl, cidl, TRUE, (IDataObject **)&pObj);
646 }
647 else if ((IsEqualIID (riid, IID_IExtractIconA) || IsEqualIID (riid, IID_IExtractIconW)) && (cidl == 1))
648 {
649 hr = m_regFolder->GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, &pObj);
650 }
651 else if (IsEqualIID (riid, IID_IDropTarget) && (cidl == 1))
652 {
653 CComPtr<IShellFolder> psfChild;
654 hr = this->BindToObject(apidl[0], NULL, IID_PPV_ARG(IShellFolder, &psfChild));
656 return hr;
657
658 return psfChild->CreateViewObject(NULL, riid, ppvOut);
659 }
660 else
662
663 if (SUCCEEDED(hr) && !pObj)
665
666 *ppvOut = pObj;
667 TRACE ("(%p)->hr=0x%08x\n", this, hr);
668 return hr;
669}
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
virtual HRESULT WINAPI BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
#define SUCCEEDED(hr)
Definition: intsafe.h:50
const GUID IID_IDataObject
void AddFSClassKeysToArray(PCUITEMID_CHILD pidl, HKEY *array, UINT *cKeys)
Definition: shlfolder.cpp:283
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ GetValidCharacters()

STDMETHODIMP CDesktopFolder::GetValidCharacters ( LPWSTR ppwszValidChars,
LPWSTR ppwszInvalidChars 
)
inline

Definition at line 92 of file CDesktopFolder.h.

93 {
94 if (ppwszValidChars)
95 {
96 *ppwszValidChars = NULL;
97 }
98 if (ppwszInvalidChars)
99 {
100 SHStrDupW(INVALID_FILETITLE_CHARACTERSW, ppwszInvalidChars);
101 }
102 return S_OK;
103 }
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
Definition: string.c:2004
#define INVALID_FILETITLE_CHARACTERSW
Definition: undocshell.h:838

◆ Initialize()

HRESULT WINAPI CDesktopFolder::Initialize ( PCIDLIST_ABSOLUTE  pidl)
virtual

Implements IPersistFolder.

Definition at line 824 of file CDesktopFolder.cpp.

825{
826 TRACE ("(%p)->(%p)\n", this, pidl);
827
828 if (!pidl)
829 return S_OK;
830
831 return E_INVALIDARG;
832}

◆ MapColumnToSCID()

HRESULT WINAPI CDesktopFolder::MapColumnToSCID ( UINT  column,
SHCOLUMNID pscid 
)
virtual

Implements IShellFolder2.

Definition at line 806 of file CDesktopFolder.cpp.

807{
808 FIXME ("(%p)\n", this);
809 return E_NOTIMPL;
810}

◆ ParseDisplayName()

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

Definition at line 280 of file CDesktopFolder.cpp.

287{
288 LPCWSTR szNext = NULL;
289 LPITEMIDLIST pidlTemp = NULL;
290 PARSEDURLW urldata;
291 HRESULT hr = S_OK;
292
293 TRACE ("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
294 this, hwndOwner, pbc, lpszDisplayName, debugstr_w(lpszDisplayName),
295 pchEaten, ppidl, pdwAttributes);
296
297 if (!ppidl)
298 return E_INVALIDARG;
299
300 *ppidl = NULL;
301
302 if (!lpszDisplayName)
303 return E_INVALIDARG;
304
305 if (pchEaten)
306 *pchEaten = 0; /* strange but like the original */
307
308 urldata.cbSize = sizeof(urldata);
309
310 if (lpszDisplayName[0] == ':' && lpszDisplayName[1] == ':')
311 {
312 return m_regFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
313 }
314 else if (PathGetDriveNumberW (lpszDisplayName) >= 0)
315 {
316 /* it's a filesystem path with a drive. Let MyComputer/UnixDosFolder parse it */
317 pidlTemp = _ILCreateMyComputer ();
318 szNext = lpszDisplayName;
319 }
320 else if (PathIsUNCW(lpszDisplayName))
321 {
322 pidlTemp = _ILCreateNetwork();
323 szNext = lpszDisplayName;
324 }
325 else if( (pidlTemp = SHELL32_CreatePidlFromBindCtx(pbc, lpszDisplayName)) )
326 {
327 *ppidl = pidlTemp;
328 return S_OK;
329 }
330 else if (SUCCEEDED(ParseURLW(lpszDisplayName, &urldata)))
331 {
332 if (urldata.nScheme == URL_SCHEME_SHELL) /* handle shell: urls */
333 {
334 TRACE ("-- shell url: %s\n", debugstr_w(urldata.pszSuffix));
335 pidlTemp = _ILCreateGuidFromStrW(urldata.pszSuffix + 2);
336 }
337 else
338 return IEParseDisplayNameWithBCW(CP_ACP, lpszDisplayName, pbc, ppidl);
339 }
340 else
341 {
342 if (*lpszDisplayName)
343 {
344 /* it's a filesystem path on the desktop. Let a FSFolder parse it */
345 hr = m_DesktopFSFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
346 if (SUCCEEDED(hr))
347 return hr;
348
349 return m_SharedDesktopFSFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
350 }
351 else
352 pidlTemp = _ILCreateMyComputer();
353
354 szNext = NULL;
355 }
356
357 if (SUCCEEDED(hr) && pidlTemp)
358 {
359 if (szNext && *szNext)
360 {
361 hr = SHELL32_ParseNextElement(this, hwndOwner, pbc,
362 &pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
363 }
364 else
365 {
366 if (pdwAttributes && *pdwAttributes)
367 {
368 GetAttributesOf(1, &pidlTemp, pdwAttributes);
369 }
370 }
371 }
372
373 if (SUCCEEDED(hr))
374 *ppidl = pidlTemp;
375 else
376 *ppidl = NULL;
377
378 TRACE ("(%p)->(-- ret=0x%08x)\n", this, hr);
379
380 return hr;
381}
virtual HRESULT WINAPI GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut)
#define CP_ACP
Definition: compat.h:109
LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
Definition: CFSFolder.cpp:546
int WINAPI PathGetDriveNumberW(const WCHAR *path)
Definition: path.c:553
BOOL WINAPI PathIsUNCW(LPCWSTR lpszPath)
Definition: path.c:2266
HRESULT WINAPI ParseURLW(LPCWSTR x, PARSEDURLW *y)
Definition: url.c:197
#define debugstr_w
Definition: kernel32.h:32
static LPOLESTR
Definition: stg_prop.c:27
LPITEMIDLIST _ILCreateMyComputer(void)
Definition: pidl.c:1628
LPITEMIDLIST _ILCreateNetwork(void)
Definition: pidl.c:1684
LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID)
Definition: pidl.c:1740
HRESULT WINAPI IEParseDisplayNameWithBCW(DWORD codepage, LPCWSTR lpszDisplayName, LPBC pbc, LPITEMIDLIST *ppidl)
Definition: shdocvw_main.c:506
HRESULT SHELL32_ParseNextElement(IShellFolder2 *psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST *pidlInOut, LPOLESTR szNext, DWORD *pEaten, DWORD *pdwAttributes)
Definition: shlfolder.cpp:71
@ URL_SCHEME_SHELL
Definition: shlwapi.h:1158
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
LPCWSTR pszSuffix
Definition: shlwapi.h:1435
DWORD cbSize
Definition: shlwapi.h:1432
UINT nScheme
Definition: shlwapi.h:1437
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

◆ SetNameOf()

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

Implements IShellFolder.

Definition at line 718 of file CDesktopFolder.cpp.

724{
725 CComPtr<IShellFolder2> psf;
726 HRESULT hr = _GetSFFromPidl(pidl, &psf);
728 return hr;
729
730 return psf->SetNameOf(hwndOwner, pidl, lpName, dwFlags, pPidlOut);
731}
_In_ LPCSTR lpName
Definition: winbase.h:2789

Member Data Documentation

◆ m_DesktopFSFolder

CComPtr<IShellFolder2> CDesktopFolder::m_DesktopFSFolder
private

◆ m_regFolder

CComPtr<IShellFolder2> CDesktopFolder::m_regFolder
private

◆ m_SharedDesktopFSFolder

CComPtr<IShellFolder2> CDesktopFolder::m_SharedDesktopFSFolder
private

Definition at line 37 of file CDesktopFolder.h.

Referenced by _GetSFFromPidl(), EnumObjects(), FinalConstruct(), and ParseDisplayName().

◆ pidlRoot

LPITEMIDLIST CDesktopFolder::pidlRoot
private

Definition at line 41 of file CDesktopFolder.h.

Referenced by CreateViewObject(), FinalConstruct(), GetCurFolder(), and GetUIObjectOf().

◆ sPathTarget

LPWSTR CDesktopFolder::sPathTarget
private

Definition at line 40 of file CDesktopFolder.h.

Referenced by _GetSFFromPidl(), FinalConstruct(), and GetDisplayNameOf().


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