2 * PROJECT: ReactOS system libraries
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll\win32\stobject\stobject.cpp
5 * PURPOSE: Systray shell service object
6 * PROGRAMMERS: Robert Naumann
7 David Quintana <gigaherz@gmail.com>
11 extern const GUID CLSID_RegistryFolder
;
13 class CRegistryPidlManager
;
15 class CRegistryFolder
:
16 public CComCoClass
<CRegistryFolder
, &CLSID_RegistryFolder
>,
17 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
19 public IPersistFolder2
,
20 public IShellFolderViewCB
22 CRegistryPidlManager
* m_PidlManager
;
25 WCHAR m_NtPath
[MAX_PATH
];
27 LPITEMIDLIST m_shellPidl
;
32 virtual ~CRegistryFolder();
34 CRegistryPidlManager
& GetManager() { return *m_PidlManager
; }
37 virtual HRESULT STDMETHODCALLTYPE
ParseDisplayName(
40 LPOLESTR lpszDisplayName
,
43 ULONG
*pdwAttributes
);
45 virtual HRESULT STDMETHODCALLTYPE
EnumObjects(
48 IEnumIDList
**ppenumIDList
);
50 virtual HRESULT STDMETHODCALLTYPE
BindToObject(
56 virtual HRESULT STDMETHODCALLTYPE
BindToStorage(
62 virtual HRESULT STDMETHODCALLTYPE
CompareIDs(
67 virtual HRESULT STDMETHODCALLTYPE
CreateViewObject(
72 virtual HRESULT STDMETHODCALLTYPE
GetAttributesOf(
74 PCUITEMID_CHILD_ARRAY apidl
,
77 virtual HRESULT STDMETHODCALLTYPE
GetUIObjectOf(
80 PCUITEMID_CHILD_ARRAY apidl
,
85 virtual HRESULT STDMETHODCALLTYPE
GetDisplayNameOf(
90 virtual HRESULT STDMETHODCALLTYPE
SetNameOf(
95 LPITEMIDLIST
*ppidlOut
);
98 virtual HRESULT STDMETHODCALLTYPE
GetDefaultSearchGUID(
101 virtual HRESULT STDMETHODCALLTYPE
EnumSearches(
102 IEnumExtraSearch
**ppenum
);
104 virtual HRESULT STDMETHODCALLTYPE
GetDefaultColumn(
109 virtual HRESULT STDMETHODCALLTYPE
GetDefaultColumnState(
111 SHCOLSTATEF
*pcsFlags
);
113 virtual HRESULT STDMETHODCALLTYPE
GetDetailsEx(
115 const SHCOLUMNID
*pscid
,
118 virtual HRESULT STDMETHODCALLTYPE
GetDetailsOf(
123 virtual HRESULT STDMETHODCALLTYPE
MapColumnToSCID(
128 virtual HRESULT STDMETHODCALLTYPE
GetClassID(CLSID
*lpClassId
);
131 virtual HRESULT STDMETHODCALLTYPE
Initialize(LPCITEMIDLIST pidl
);
134 virtual HRESULT STDMETHODCALLTYPE
GetCurFolder(LPITEMIDLIST
* pidl
);
136 // IShellFolderViewCB
137 virtual HRESULT STDMETHODCALLTYPE
MessageSFVCB(UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
140 HRESULT STDMETHODCALLTYPE
Initialize(LPCITEMIDLIST pidl
, PCWSTR ntPath
, HKEY hRoot
);
142 static HRESULT CALLBACK
DefCtxMenuCallback(IShellFolder
*, HWND
, IDataObject
*, UINT
, WPARAM
, LPARAM
);
144 DECLARE_REGISTRY_RESOURCEID(IDR_REGISTRYFOLDER
)
145 DECLARE_NOT_AGGREGATABLE(CRegistryFolder
)
146 DECLARE_PROTECT_FINAL_CONSTRUCT()
148 BEGIN_COM_MAP(CRegistryFolder
)
149 COM_INTERFACE_ENTRY_IID(IID_IShellFolder
, IShellFolder
)
150 COM_INTERFACE_ENTRY_IID(IID_IShellFolder2
, IShellFolder2
)
151 COM_INTERFACE_ENTRY_IID(IID_IPersist
, IPersist
)
152 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder
, IPersistFolder
)
153 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder2
, IPersistFolder2
)
154 COM_INTERFACE_ENTRY_IID(IID_IShellFolderViewCB
, IShellFolderViewCB
)