5 #define SWM_ADD_ITEM (WM_USER + 0)
6 #define SWM_UPDATE_STATUS (WM_USER + 1)
9 public CComCoClass
<CFindFolder
, &CLSID_FindFolder
>,
10 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
12 public IShellFolderViewCB
,
13 public IPersistFolder2
15 // *** IShellFolder2 methods ***
16 STDMETHODIMP
GetDefaultSearchGUID(GUID
*pguid
);
18 STDMETHODIMP
EnumSearches(IEnumExtraSearch
**ppenum
);
20 STDMETHODIMP
GetDefaultColumn(DWORD dwRes
, ULONG
*pSort
, ULONG
*pDisplay
);
22 STDMETHODIMP
GetDefaultColumnState(UINT iColumn
, DWORD
*pcsFlags
);
24 STDMETHODIMP
GetDetailsEx(PCUITEMID_CHILD pidl
, const SHCOLUMNID
*pscid
, VARIANT
*pv
);
26 STDMETHODIMP
GetDetailsOf(PCUITEMID_CHILD pidl
, UINT iColumn
, SHELLDETAILS
*pDetails
);
28 STDMETHODIMP
MapColumnToSCID(UINT iColumn
, SHCOLUMNID
*pscid
);
31 // *** IShellFolder methods ***
32 STDMETHODIMP
ParseDisplayName(HWND hwndOwner
, LPBC pbc
, LPOLESTR lpszDisplayName
, ULONG
*pchEaten
,
33 PIDLIST_RELATIVE
*ppidl
, ULONG
*pdwAttributes
);
35 STDMETHODIMP
EnumObjects(HWND hwndOwner
, DWORD dwFlags
, LPENUMIDLIST
*ppEnumIDList
);
37 STDMETHODIMP
BindToObject(PCUIDLIST_RELATIVE pidl
, LPBC pbcReserved
, REFIID riid
, LPVOID
*ppvOut
);
39 STDMETHODIMP
BindToStorage(PCUIDLIST_RELATIVE pidl
, LPBC pbcReserved
, REFIID riid
, LPVOID
*ppvOut
);
41 STDMETHODIMP
CompareIDs(LPARAM lParam
, PCUIDLIST_RELATIVE pidl1
, PCUIDLIST_RELATIVE pidl2
);
43 STDMETHODIMP
CreateViewObject(HWND hwndOwner
, REFIID riid
, LPVOID
*ppvOut
);
45 STDMETHODIMP
GetAttributesOf(UINT cidl
, PCUITEMID_CHILD_ARRAY apidl
, DWORD
*rgfInOut
);
47 STDMETHODIMP
GetUIObjectOf(HWND hwndOwner
, UINT cidl
, PCUITEMID_CHILD_ARRAY apidl
, REFIID riid
, UINT
*prgfInOut
,
50 STDMETHODIMP
GetDisplayNameOf(PCUITEMID_CHILD pidl
, DWORD dwFlags
, LPSTRRET pName
);
52 STDMETHODIMP
SetNameOf(HWND hwndOwner
, PCUITEMID_CHILD pidl
, LPCOLESTR lpName
, DWORD dwFlags
,
53 PITEMID_CHILD
*pPidlOut
);
55 //// *** IShellFolderViewCB methods ***
56 STDMETHODIMP
MessageSFVCB(UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
60 CComPtr
<IShellFolder2
> m_pisfInner
;
61 CComPtr
<IShellFolderView
> m_shellFolderView
;
63 //// *** IPersistFolder2 methods ***
64 STDMETHODIMP
GetCurFolder(LPITEMIDLIST
*pidl
);
67 // *** IPersistFolder methods ***
68 STDMETHODIMP
Initialize(LPCITEMIDLIST pidl
);
71 // *** IPersist methods ***
72 STDMETHODIMP
GetClassID(CLSID
*pClassId
);
74 LRESULT
AddItem(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
&bHandled
);
77 DECLARE_REGISTRY_RESOURCEID(IDR_FINDFOLDER
)
79 DECLARE_NOT_AGGREGATABLE(CFindFolder
)
81 DECLARE_PROTECT_FINAL_CONSTRUCT()
83 BEGIN_COM_MAP(CFindFolder
)
84 COM_INTERFACE_ENTRY_IID(IID_IShellFolder2
, IShellFolder2
)
85 COM_INTERFACE_ENTRY_IID(IID_IShellFolder
, IShellFolder
)
86 COM_INTERFACE_ENTRY_IID(IID_IShellFolderViewCB
, IShellFolderViewCB
)
87 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder2
, IPersistFolder2
)
88 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder
, IPersistFolder
)
89 COM_INTERFACE_ENTRY_IID(IID_IPersist
, IPersist
)