5 #define SWM_ADD_ITEM (WM_USER + 0)
6 #define SWM_UPDATE_STATUS (WM_USER + 1)
9 public CWindowImpl
<CFindFolder
>,
10 public CComCoClass
<CFindFolder
, &CLSID_FindFolder
>,
11 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
13 public IPersistFolder2
,
14 public IShellFolderViewCB
,
17 // *** IShellFolder2 methods ***
18 STDMETHODIMP
GetDefaultSearchGUID(GUID
*pguid
);
20 STDMETHODIMP
EnumSearches(IEnumExtraSearch
**ppenum
);
22 STDMETHODIMP
GetDefaultColumn(DWORD dwRes
, ULONG
*pSort
, ULONG
*pDisplay
);
24 STDMETHODIMP
GetDefaultColumnState(UINT iColumn
, DWORD
*pcsFlags
);
26 STDMETHODIMP
GetDetailsEx(PCUITEMID_CHILD pidl
, const SHCOLUMNID
*pscid
, VARIANT
*pv
);
28 STDMETHODIMP
GetDetailsOf(PCUITEMID_CHILD pidl
, UINT iColumn
, SHELLDETAILS
*pDetails
);
30 STDMETHODIMP
MapColumnToSCID(UINT iColumn
, SHCOLUMNID
*pscid
);
33 // *** IShellFolder methods ***
34 STDMETHODIMP
ParseDisplayName(HWND hwndOwner
, LPBC pbc
, LPOLESTR lpszDisplayName
, ULONG
*pchEaten
,
35 PIDLIST_RELATIVE
*ppidl
, ULONG
*pdwAttributes
);
37 STDMETHODIMP
EnumObjects(HWND hwndOwner
, DWORD dwFlags
, LPENUMIDLIST
*ppEnumIDList
);
39 STDMETHODIMP
BindToObject(PCUIDLIST_RELATIVE pidl
, LPBC pbcReserved
, REFIID riid
, LPVOID
*ppvOut
);
41 STDMETHODIMP
BindToStorage(PCUIDLIST_RELATIVE pidl
, LPBC pbcReserved
, REFIID riid
, LPVOID
*ppvOut
);
43 STDMETHODIMP
CompareIDs(LPARAM lParam
, PCUIDLIST_RELATIVE pidl1
, PCUIDLIST_RELATIVE pidl2
);
45 STDMETHODIMP
CreateViewObject(HWND hwndOwner
, REFIID riid
, LPVOID
*ppvOut
);
47 STDMETHODIMP
GetAttributesOf(UINT cidl
, PCUITEMID_CHILD_ARRAY apidl
, DWORD
*rgfInOut
);
49 STDMETHODIMP
GetUIObjectOf(HWND hwndOwner
, UINT cidl
, PCUITEMID_CHILD_ARRAY apidl
, REFIID riid
, UINT
*prgfInOut
,
53 STDMETHODIMP
GetDisplayNameOf(PCUITEMID_CHILD pidl
, DWORD dwFlags
, LPSTRRET pName
);
54 STDMETHODIMP
SetNameOf(HWND hwndOwner
, PCUITEMID_CHILD pidl
, LPCOLESTR lpName
, DWORD dwFlags
,
55 PITEMID_CHILD
*pPidlOut
);
57 //// *** IShellFolderViewCB methods ***
58 STDMETHODIMP
MessageSFVCB(UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
60 //// *** IContextMenuCB method ***
61 STDMETHODIMP
CallBack(IShellFolder
*psf
, HWND hwndOwner
, IDataObject
*pdtobj
, UINT uMsg
, WPARAM wParam
,
66 CComPtr
<IShellFolder2
> m_pisfInner
;
67 CComPtr
<IShellFolderView
> m_shellFolderView
;
68 CComPtr
<IShellBrowser
> m_shellBrowser
;
70 //// *** IPersistFolder2 methods ***
71 STDMETHODIMP
GetCurFolder(LPITEMIDLIST
*pidl
);
74 // *** IPersistFolder methods ***
75 STDMETHODIMP
Initialize(LPCITEMIDLIST pidl
);
78 // *** IPersist methods ***
79 STDMETHODIMP
GetClassID(CLSID
*pClassId
);
81 LRESULT
AddItem(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
&bHandled
);
83 LRESULT
UpdateStatus(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
&bHandled
);
86 DECLARE_REGISTRY_RESOURCEID(IDR_FINDFOLDER
)
88 DECLARE_NOT_AGGREGATABLE(CFindFolder
)
90 DECLARE_PROTECT_FINAL_CONSTRUCT()
92 BEGIN_MSG_MAP(CFindFolder
)
93 MESSAGE_HANDLER(SWM_ADD_ITEM
, AddItem
)
94 MESSAGE_HANDLER(SWM_UPDATE_STATUS
, UpdateStatus
)
97 BEGIN_COM_MAP(CFindFolder
)
98 COM_INTERFACE_ENTRY_IID(IID_IShellFolder2
, IShellFolder2
)
99 COM_INTERFACE_ENTRY_IID(IID_IShellFolder
, IShellFolder
)
100 COM_INTERFACE_ENTRY_IID(IID_IShellFolderViewCB
, IShellFolderViewCB
)
101 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder2
, IPersistFolder2
)
102 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder
, IPersistFolder
)
103 COM_INTERFACE_ENTRY_IID(IID_IPersist
, IPersist
)
104 COM_INTERFACE_ENTRY_IID(IID_IContextMenuCB
, IContextMenuCB
)