ReactOS 0.4.17-dev-1190-g4c812f4
CControlPanelFolder Class Reference

#include <CControlPanelFolder.h>

Inheritance diagram for CControlPanelFolder:
Collaboration diagram for CControlPanelFolder:

Public Member Functions

 CControlPanelFolder ()
 
 ~CControlPanelFolder ()
 
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() GetClassID (CLSID *lpClassId) override
 
STDMETHOD() Initialize (PCIDLIST_ABSOLUTE pidl) override
 
STDMETHOD() GetCurFolder (PIDLIST_ABSOLUTE *pidl) override
 
STDMETHODIMP MessageSFVCB (UINT uMsg, WPARAM wParam, LPARAM lParam) 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)
 

Private Member Functions

HRESULT WINAPI ExecuteFromIdList (LPCITEMIDLIST pidl)
 

Private Attributes

LPITEMIDLIST pidlRoot
 
int dwAttributes
 
CComPtr< IShellFolder2 > m_regFolder
 

Additional Inherited Members

- Public Types inherited from IShellFolder2
typedef struct IShellFolder2::SHCOLUMNID * LPSHCOLUMNID
 
typedef const SHCOLUMNID * LPCSHCOLUMNID
 
- 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 IShellFolder * LPSHELLFOLDER
 
typedef enum IShellFolder::tagSHGDN SHGNO
 
typedef DWORD SHGDNF
 
typedef DWORD SHCONTF
 
typedef ULONG SFGAOF
 
- Public Types inherited from IUnknown
typedef IUnknown * LPUNKNOWN
 
- Public Types inherited from IPersistFolder2
typedef IPersistFolder2 * LPPERSISTFOLDER2
 
- Public Types inherited from IPersistFolder
typedef IPersistFolder * LPPERSISTFOLDER
 
- Public Types inherited from IPersist
typedef IPersist * LPPERSIST
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRY * GetCategoryMap ()
 
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 25 of file CControlPanelFolder.h.

Constructor & Destructor Documentation

◆ CControlPanelFolder()

CControlPanelFolder::CControlPanelFolder ( )

Definition at line 272 of file CControlPanelFolder.cpp.

273{
274 pidlRoot = NULL; /* absolute pidl */
275}
#define NULL
Definition: types.h:112

◆ ~CControlPanelFolder()

CControlPanelFolder::~CControlPanelFolder ( )

Definition at line 277 of file CControlPanelFolder.cpp.

278{
279 TRACE("-- destroying IShellFolder(%p)\n", this);
281}
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:370
#define TRACE(s)
Definition: solgame.cpp:4

Member Function Documentation

◆ BindToObject()

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

Definition at line 312 of file CControlPanelFolder.cpp.

317{
318 return m_regFolder->BindToObject(pidl, pbcReserved, riid, ppvOut);
319}
CComPtr< IShellFolder2 > m_regFolder
REFIID riid
Definition: atlbase.h:39

◆ BindToStorage()

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

Definition at line 324 of file CControlPanelFolder.cpp.

329{
330 FIXME("(%p)->(pidl=%p,%p,%s,%p) stub\n", this, pidl, pbcReserved, shdebugstr_guid(&riid), ppvOut);
331
332 *ppvOut = NULL;
333 return E_NOTIMPL;
334}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
const char * shdebugstr_guid(const struct _GUID *id)
Definition: debughlp.cpp:438

◆ CompareIDs()

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

Implements IShellFolder.

Definition at line 339 of file CControlPanelFolder.cpp.

340{
341 /* Dont use SHELL32_CompareGuidItems because it would cause guid items to come first */
342 if (_ILIsSpecialFolder(pidl1) || _ILIsSpecialFolder(pidl2))
343 {
344 return SHELL32_CompareDetails(this, lParam, pidl1, pidl2);
345 }
346 PIDLCPanelStruct *pData1 = _ILGetCPanelPointer(pidl1);
347 PIDLCPanelStruct *pData2 = _ILGetCPanelPointer(pidl2);
348
349 if (!pData1 || !pData2 || LOWORD(lParam) >= CONTROLPANEL_COL_COUNT)
350 return E_INVALIDARG;
351
352 int result;
353 switch(LOWORD(lParam))
354 {
356 result = SHELL_StrCmpLogical(pData1->szName + pData1->offsDispName, pData2->szName + pData2->offsDispName);
357 break;
359 result = SHELL_StrCmpLogical(pData1->szName + pData1->offsComment, pData2->szName + pData2->offsComment);
360 break;
361 default:
362 ERR("Got wrong lParam!\n");
363 return E_INVALIDARG;
364 }
365
367}
@ CONTROLPANEL_COL_NAME
@ CONTROLPANEL_COL_COMMENT
@ CONTROLPANEL_COL_COUNT
static PIDLCPanelStruct * _ILGetCPanelPointer(LPCITEMIDLIST pidl)
#define ERR(fmt,...)
Definition: precomp.h:57
LPARAM lParam
Definition: combotst.c:139
#define E_INVALIDARG
Definition: ddrawi.h:101
GLuint64EXT * result
Definition: glext.h:11304
#define LOWORD(l)
Definition: pedump.c:82
BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
Definition: pidl.c:2128
#define MAKE_COMPARE_HRESULT(x)
Definition: shellutils.h:740
HRESULT SHELL32_CompareDetails(IShellFolder2 *isf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: shlfolder.cpp:404
WORD offsComment
Definition: pidl.h:163
WCHAR szName[1]
Definition: pidl.h:164
WORD offsDispName
Definition: pidl.h:162

◆ CreateViewObject()

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

Definition at line 372 of file CControlPanelFolder.cpp.

373{
374 CComPtr<IShellView> pShellView;
376
377 TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, hwndOwner, shdebugstr_guid(&riid), ppvOut);
378
379 if (ppvOut) {
380 *ppvOut = NULL;
381
382 if (IsEqualIID(riid, IID_IDropTarget)) {
383 WARN("IDropTarget not implemented\n");
384 hr = E_NOTIMPL;
385 } else if (IsEqualIID(riid, IID_IContextMenu)) {
386 WARN("IContextMenu not implemented\n");
387 hr = E_NOTIMPL;
388 } else if (IsEqualIID(riid, IID_IShellView)) {
389 SFV_CREATE sfvparams = { sizeof(SFV_CREATE), this , NULL, this };
390 hr = SHCreateShellFolderView(&sfvparams, (IShellView**)ppvOut);
391 }
392 }
393 TRACE("--(%p)->(interface=%p)\n", this, ppvOut);
394 return hr;
395}
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
Definition: CDefView.cpp:4806
#define WARN(fmt,...)
Definition: precomp.h:61
HRESULT hr
Definition: delayimp.cpp:582
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
struct _SFV_CREATE SFV_CREATE

◆ EnumObjects()

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

Definition at line 301 of file CControlPanelFolder.cpp.

302{
303 CComPtr<IEnumIDList> pRegEnumerator;
304 m_regFolder->EnumObjects(hwndOwner, dwFlags, &pRegEnumerator);
305
306 return ShellObjectCreatorInit<CControlPanelEnum>(dwFlags, pRegEnumerator, IID_PPV_ARG(IEnumIDList, ppEnumIDList));
307}
#define IID_PPV_ARG(Itype, ppType)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

◆ EnumSearches()

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

Implements IShellFolder2.

Definition at line 551 of file CControlPanelFolder.cpp.

552{
553 *ppenum = NULL;
554 return E_NOTIMPL;
555}

◆ ExecuteFromIdList()

HRESULT WINAPI CControlPanelFolder::ExecuteFromIdList ( LPCITEMIDLIST  pidl)
private

◆ GetAttributesOf()

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

Definition at line 400 of file CControlPanelFolder.cpp.

401{
402 HRESULT hr = S_OK;
403 static const DWORD dwControlPanelAttributes =
404 SFGAO_HASSUBFOLDER | SFGAO_FOLDER | SFGAO_CANLINK;
405
406 TRACE("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
407 this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
408
409 if (!rgfInOut)
410 return E_INVALIDARG;
411 if (cidl && !apidl)
412 return E_INVALIDARG;
413
414 if (*rgfInOut == 0)
415 *rgfInOut = ~0;
416
417 if (!cidl)
418 {
419 *rgfInOut &= dwControlPanelAttributes;
420 }
421 else
422 {
423 while(cidl > 0 && *apidl)
424 {
425 pdump(*apidl);
426 if (_ILIsCPanelStruct(*apidl))
427 *rgfInOut &= SFGAO_CANLINK;
428 else if (_ILIsSpecialFolder(*apidl))
429 m_regFolder->GetAttributesOf(1, apidl, rgfInOut);
430 else
431 ERR("Got unknown pidl\n");
432 apidl++;
433 cidl--;
434 }
435 }
436 /* make sure SFGAO_VALIDATE is cleared, some apps depend on that */
437 *rgfInOut &= ~SFGAO_VALIDATE;
438
439 TRACE("-- result=0x%08x\n", *rgfInOut);
440 return hr;
441}
static const DWORD dwControlPanelAttributes
void pdump(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:322
unsigned long DWORD
Definition: ntddk_ex.h:95
#define S_OK
Definition: intsafe.h:52
BOOL _ILIsCPanelStruct(LPCITEMIDLIST pidl)
Definition: pidl.c:2159

◆ GetClassID()

HRESULT WINAPI CControlPanelFolder::GetClassID ( CLSID *  lpClassId)
override

Implements IPersist.

Definition at line 630 of file CControlPanelFolder.cpp.

631{
632 TRACE("(%p)\n", this);
633
634 if (!lpClassId)
635 return E_POINTER;
636 *lpClassId = CLSID_ControlPanel;
637
638 return S_OK;
639}
#define E_POINTER
Definition: winerror.h:3480

◆ GetCurFolder()

HRESULT WINAPI CControlPanelFolder::GetCurFolder ( PIDLIST_ABSOLUTE *  pidl)
override

Implements IPersistFolder2.

Definition at line 668 of file CControlPanelFolder.cpp.

669{
670 TRACE("(%p)->(%p)\n", this, pidl);
671
672 if (!pidl)
673 return E_POINTER;
674 *pidl = ILClone(pidlRoot);
675 return S_OK;
676}
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:238

◆ GetDefaultColumn()

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

Implements IShellFolder2.

Definition at line 557 of file CControlPanelFolder.cpp.

558{
559 TRACE("(%p)\n", this);
560 return E_NOTIMPL; // Not required when column 0 is our default.
561}

◆ GetDefaultColumnState()

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

Implements IShellFolder2.

Definition at line 563 of file CControlPanelFolder.cpp.

564{
565 TRACE("(%p)\n", this);
566
567 if (LOBYTE(GetVersion()) < 6)
568 return E_NOTIMPL;
569
570 if (!pcsFlags || iColumn >= CONTROLPANEL_COL_COUNT)
571 return E_INVALIDARG;
572 *pcsFlags = ControlPanelSFHeader[iColumn].colstate;
573 return S_OK;
574}
static const shvheader ControlPanelSFHeader[]
DWORD WINAPI GetVersion(void)
Definition: version.c:1458
#define LOBYTE(W)
Definition: jmemdos.c:487
WORD colstate
Definition: shfldr.h:32

◆ GetDefaultSearchGUID()

HRESULT WINAPI CControlPanelFolder::GetDefaultSearchGUID ( GUID *  pguid)
override

Implements IShellFolder2.

Definition at line 543 of file CControlPanelFolder.cpp.

544{
545 if (LOBYTE(GetVersion()) >= 6)
546 return E_NOTIMPL;
547 *pguid = CLSID_ShellSearchExt;
548 return S_OK;
549}

◆ GetDetailsEx()

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

Implements IShellFolder2.

Definition at line 576 of file CControlPanelFolder.cpp.

577{
578 if (IsRegItem(pidl))
579 return m_regFolder->GetDetailsEx(pidl, pscid, pv);
580 return SH32_GetDetailsOfPKeyAsVariant(this, pidl, pscid, pv, FALSE);
581}
static const CLSID * IsRegItem(LPCITEMIDLIST pidl)
#define FALSE
Definition: types.h:117
HRESULT SH32_GetDetailsOfPKeyAsVariant(IShellFolder2 *pSF, PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pVar, BOOL UseFsColMap)
Definition: shlfolder.cpp:152

◆ GetDetailsOf()

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

Implements IShellFolder2.

Definition at line 583 of file CControlPanelFolder.cpp.

584{
585 if (!psd || iColumn >= CONTROLPANEL_COL_COUNT)
586 return E_INVALIDARG;
587
588 if (!pidl)
589 {
590 psd->fmt = ControlPanelSFHeader[iColumn].fmt;
591 psd->cxChar = ControlPanelSFHeader[iColumn].cxChar;
592 return SHSetStrRet(&psd->str, shell32_hInstance, ControlPanelSFHeader[iColumn].colnameid);
593 }
594 else if (_ILIsSpecialFolder(pidl))
595 {
596 return m_regFolder->GetDetailsOf(pidl, iColumn, psd);
597 }
598 else
599 {
600 PIDLCPanelStruct *pCPanel = _ILGetCPanelPointer(pidl);
601
602 if (!pCPanel)
603 return E_FAIL;
604
605 switch(iColumn)
606 {
608 return SHSetStrRet(&psd->str, pCPanel->szName + pCPanel->offsDispName);
610 return SHSetStrRet(&psd->str, pCPanel->szName + pCPanel->offsComment);
611 }
612 }
613
614 return E_FAIL;
615}
#define shell32_hInstance
#define E_FAIL
Definition: ddrawi.h:102
STRRET str
Definition: shtypes.idl:108

◆ GetDisplayNameOf()

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

Definition at line 505 of file CControlPanelFolder.cpp.

506{
507 if (!pidl)
508 return S_FALSE;
509
510 PIDLCPanelStruct *pCPanel = _ILGetCPanelPointer(pidl);
511
512 if (pCPanel)
513 {
514 return SHSetStrRet(strRet, pCPanel->szName + pCPanel->offsDispName);
515 }
516 else if (_ILIsSpecialFolder(pidl))
517 {
518 return m_regFolder->GetDisplayNameOf(pidl, dwFlags, strRet);
519 }
520
521 return E_FAIL;
522}
#define S_FALSE
Definition: winerror.h:3451

◆ GetUIObjectOf()

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

Definition at line 455 of file CControlPanelFolder.cpp.

457{
458 LPVOID pObj = NULL;
460
461 TRACE("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
462 this, hwndOwner, cidl, apidl, shdebugstr_guid(&riid), prgfInOut, ppvOut);
463
464 if (ppvOut) {
465 *ppvOut = NULL;
466
467 if (IsEqualIID(riid, IID_IContextMenu) && (cidl >= 1)) {
468 /* HACK: We should use callbacks from CDefaultContextMenu instead of creating one on our own */
469 BOOL bHasCpl = FALSE;
470 for (UINT i = 0; i < cidl; i++)
471 {
472 if(_ILIsCPanelStruct(apidl[i]))
473 {
474 bHasCpl = TRUE;
475 }
476 }
477
478 if (bHasCpl)
479 hr = ShellObjectCreatorInit<CCPLItemMenu>(cidl, apidl, riid, &pObj);
480 else
481 hr = m_regFolder->GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, &pObj);
482 } else if (IsEqualIID(riid, IID_IDataObject) && (cidl >= 1)) {
483 hr = IDataObject_Constructor(hwndOwner, pidlRoot, apidl, cidl, TRUE, (IDataObject **)&pObj);
484 } else if ((IsEqualIID(riid, IID_IExtractIconA) || IsEqualIID(riid, IID_IExtractIconW)) && (cidl == 1)) {
485 if (_ILGetCPanelPointer(apidl[0]))
486 hr = CCPLExtractIcon_CreateInstance(this, apidl[0], riid, &pObj);
487 else
488 hr = m_regFolder->GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, &pObj);
489 } else {
491 }
492
493 if (SUCCEEDED(hr) && !pObj)
495
496 *ppvOut = pObj;
497 }
498 TRACE("(%p)->hr=0x%08x\n", this, hr);
499 return hr;
500}
HRESULT CCPLExtractIcon_CreateInstance(IShellFolder *psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppvOut)
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define TRUE
Definition: types.h:120
unsigned int BOOL
Definition: ntddk_ex.h:94
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 SUCCEEDED(hr)
Definition: intsafe.h:50
const GUID IID_IDataObject
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ Initialize()

HRESULT WINAPI CControlPanelFolder::Initialize ( PCIDLIST_ABSOLUTE  pidl)
override

Implements IPersistFolder.

Definition at line 646 of file CControlPanelFolder.cpp.

647{
648 if (pidlRoot)
650
651 pidlRoot = ILClone(pidl);
652
653 /* Create the inner reg folder */
654 REGFOLDERINITDATA RegInit = { static_cast<IShellFolder*>(this), &g_RegFolderInfo };
655 HRESULT hr;
656 hr = CRegFolder_CreateInstance(&RegInit,
657 pidlRoot,
660 return hr;
661
662 return S_OK;
663}
static const REGFOLDERINFO g_RegFolderInfo
HRESULT CRegFolder_CreateInstance(PREGFOLDERINITDATA pInit, LPCITEMIDLIST pidlRoot, REFIID riid, void **ppv)
Definition: CRegFolder.cpp:995
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33

◆ MapColumnToSCID()

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

Implements IShellFolder2.

Definition at line 617 of file CControlPanelFolder.cpp.

618{
619 switch (column)
620 {
621 case CONTROLPANEL_COL_NAME: return MakeSCID(*pscid, FMTID_Storage, PID_STG_NAME);
622 case CONTROLPANEL_COL_COMMENT: return MakeSCID(*pscid, FMTID_SummaryInformation, PIDSI_COMMENTS);
623 }
624 return E_INVALIDARG;
625}
#define PID_STG_NAME
Definition: ntquery.h:56
const FMTID FMTID_SummaryInformation
static HRESULT MakeSCID(SHCOLUMNID &scid, REFCLSID fmtid, UINT pid)
Definition: shfldr.h:99

◆ MessageSFVCB()

HRESULT WINAPI CControlPanelFolder::MessageSFVCB ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
override

Definition at line 678 of file CControlPanelFolder.cpp.

679{
680 switch (uMsg)
681 {
682 case SFVM_DEFVIEWMODE:
683 {
684 #if ROSPOLICY_CONTROLSFOLDER_DEFLARGEICONS
686 #else
688 #endif
689 return S_OK;
690 }
691 }
692 return E_NOTIMPL;
693}
BOOL WINAPI IsOS(DWORD feature)
Definition: main.c:2392
#define OS_SERVERADMINUI
Definition: shlwapi.h:260
#define SFVM_DEFVIEWMODE
Definition: shlobj.h:1363
FOLDERVIEWMODE
Definition: shobjidl.idl:722
@ FVM_LIST
Definition: shobjidl.idl:727
@ FVM_ICON
Definition: shobjidl.idl:724

◆ ParseDisplayName()

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

Definition at line 286 of file CControlPanelFolder.cpp.

293{
294 /* We only support parsing guid names */
295 return m_regFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
296}

◆ SetNameOf()

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

Implements IShellFolder.

Definition at line 536 of file CControlPanelFolder.cpp.

538{
539 FIXME("(%p)->(%p,pidl=%p,%s,%u,%p)\n", this, hwndOwner, pidl, debugstr_w(lpName), dwFlags, pPidlOut);
540 return E_FAIL;
541}
#define debugstr_w
Definition: kernel32.h:32
_In_ LPCSTR lpName
Definition: winbase.h:2519

Member Data Documentation

◆ dwAttributes

int CControlPanelFolder::dwAttributes
private

Definition at line 35 of file CControlPanelFolder.h.

◆ m_regFolder

CComPtr<IShellFolder2> CControlPanelFolder::m_regFolder
private

◆ pidlRoot

LPITEMIDLIST CControlPanelFolder::pidlRoot
private

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