4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #include "shellfind.h"
24 public CComCoClass
<CSearchBar
, &CLSID_FileSearchBand
>,
25 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
27 public IObjectWithSite
,
29 public IPersistStream
,
30 public IOleCommandTarget
,
31 public IServiceProvider
,
33 public IWinEventHandler
,
34 public INamespaceProxy
,
36 public CDialogImpl
<CSearchBar
>
40 // *** BaseBarSite information ***
41 CComPtr
<IUnknown
> pSite
;
42 CComPtr
<IAddressEditBox
> fAddressEditBox
;
45 HRESULT
GetSearchResultsFolder(IShellBrowser
**ppShellBrowser
, HWND
*pHwnd
, IShellFolder
**ppShellFolder
);
46 BOOL
GetAddressEditBoxPath(WCHAR (&szPath
)[MAX_PATH
]);
47 void SetSearchInProgress(BOOL bInProgress
);
48 HRESULT
ExecuteCommand(CComPtr
<IContextMenu
>& menu
, UINT nCmd
);
50 // *** ATL event handlers ***
51 LRESULT
OnInitDialog(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
&bHandled
);
52 LRESULT
OnSetFocus(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
&bHandled
);
53 LRESULT
OnSearchButtonClicked(WORD wNotifyCode
, WORD wID
, HWND hWndCtl
, BOOL
&bHandled
);
54 LRESULT
OnStopButtonClicked(WORD wNotifyCode
, WORD wID
, HWND hWndCtl
, BOOL
&bHandled
);
55 LRESULT
OnSize(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
&bHandled
);
59 virtual ~CSearchBar();
61 // *** IOleWindow methods ***
62 virtual HRESULT STDMETHODCALLTYPE
GetWindow(HWND
*lphwnd
);
63 virtual HRESULT STDMETHODCALLTYPE
ContextSensitiveHelp(BOOL fEnterMode
);
65 // *** IDockingWindow methods ***
66 virtual HRESULT STDMETHODCALLTYPE
CloseDW(DWORD dwReserved
);
67 virtual HRESULT STDMETHODCALLTYPE
ResizeBorderDW(const RECT
*prcBorder
, IUnknown
*punkToolbarSite
, BOOL fReserved
);
68 virtual HRESULT STDMETHODCALLTYPE
ShowDW(BOOL fShow
);
70 // *** IDeskBand methods ***
71 virtual HRESULT STDMETHODCALLTYPE
GetBandInfo(DWORD dwBandID
, DWORD dwViewMode
, DESKBANDINFO
*pdbi
);
73 // *** IObjectWithSite methods ***
74 virtual HRESULT STDMETHODCALLTYPE
SetSite(IUnknown
*pUnkSite
);
75 virtual HRESULT STDMETHODCALLTYPE
GetSite(REFIID riid
, void **ppvSite
);
77 // *** IOleCommandTarget methods ***
78 virtual HRESULT STDMETHODCALLTYPE
QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[], OLECMDTEXT
*pCmdText
);
79 virtual HRESULT STDMETHODCALLTYPE
Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
);
81 // *** IServiceProvider methods ***
82 virtual HRESULT STDMETHODCALLTYPE
QueryService(REFGUID guidService
, REFIID riid
, void **ppvObject
);
84 // *** IInputObject methods ***
85 virtual HRESULT STDMETHODCALLTYPE
UIActivateIO(BOOL fActivate
, LPMSG lpMsg
);
86 virtual HRESULT STDMETHODCALLTYPE
HasFocusIO();
87 virtual HRESULT STDMETHODCALLTYPE
TranslateAcceleratorIO(LPMSG lpMsg
);
89 // *** IPersist methods ***
90 virtual HRESULT STDMETHODCALLTYPE
GetClassID(CLSID
*pClassID
);
92 // *** IPersistStream methods ***
93 virtual HRESULT STDMETHODCALLTYPE
IsDirty();
94 virtual HRESULT STDMETHODCALLTYPE
Load(IStream
*pStm
);
95 virtual HRESULT STDMETHODCALLTYPE
Save(IStream
*pStm
, BOOL fClearDirty
);
96 virtual HRESULT STDMETHODCALLTYPE
GetSizeMax(ULARGE_INTEGER
*pcbSize
);
98 // *** IWinEventHandler methods ***
99 virtual HRESULT STDMETHODCALLTYPE
OnWinEvent(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*theResult
);
100 virtual HRESULT STDMETHODCALLTYPE
IsWindowOwner(HWND hWnd
);
102 // *** IBandNavigate methods ***
103 virtual HRESULT STDMETHODCALLTYPE
Select(long paramC
);
105 // *** INamespaceProxy ***
106 virtual HRESULT STDMETHODCALLTYPE
GetNavigateTarget(long paramC
, long param10
, long param14
);
107 virtual HRESULT STDMETHODCALLTYPE
Invoke(long paramC
);
108 virtual HRESULT STDMETHODCALLTYPE
OnSelectionChanged(long paramC
);
109 virtual HRESULT STDMETHODCALLTYPE
RefreshFlags(long paramC
, long param10
, long param14
);
110 virtual HRESULT STDMETHODCALLTYPE
CacheItem(long paramC
);
112 // *** IDispatch methods ***
113 virtual HRESULT STDMETHODCALLTYPE
GetTypeInfoCount(UINT
*pctinfo
);
114 virtual HRESULT STDMETHODCALLTYPE
GetTypeInfo(UINT iTInfo
, LCID lcid
, ITypeInfo
**ppTInfo
);
115 virtual HRESULT STDMETHODCALLTYPE
GetIDsOfNames(REFIID riid
, LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
);
116 virtual HRESULT STDMETHODCALLTYPE
Invoke(DISPID dispIdMember
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
, VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
);
118 enum { IDD
= IDD_SEARCH_DLG
};
120 DECLARE_REGISTRY_RESOURCEID(IDR_EXPLORERBAND
)
121 DECLARE_NOT_AGGREGATABLE(CSearchBar
)
123 DECLARE_PROTECT_FINAL_CONSTRUCT()
125 BEGIN_COM_MAP(CSearchBar
)
126 COM_INTERFACE_ENTRY_IID(IID_IDispatch
, IDispatch
)
127 COM_INTERFACE_ENTRY_IID(DIID_DSearchCommandEvents
, IDispatch
)
128 COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler
, IWinEventHandler
)
129 COM_INTERFACE_ENTRY_IID(IID_IBandNavigate
, IBandNavigate
)
130 COM_INTERFACE_ENTRY_IID(IID_INamespaceProxy
, INamespaceProxy
)
131 COM_INTERFACE_ENTRY2_IID(IID_IOleWindow
, IOleWindow
, IDeskBand
)
132 COM_INTERFACE_ENTRY2_IID(IID_IDockingWindow
, IDockingWindow
, IDeskBand
)
133 COM_INTERFACE_ENTRY_IID(IID_IDeskBand
, IDeskBand
)
134 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite
, IObjectWithSite
)
135 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget
, IOleCommandTarget
)
136 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider
, IServiceProvider
)
137 COM_INTERFACE_ENTRY_IID(IID_IInputObject
, IInputObject
)
138 COM_INTERFACE_ENTRY2_IID(IID_IPersist
, IPersist
, IPersistStream
)
139 COM_INTERFACE_ENTRY_IID(IID_IPersistStream
, IPersistStream
)
142 BEGIN_MSG_MAP(CSearchBar
)
143 MESSAGE_HANDLER(WM_INITDIALOG
, OnInitDialog
)
144 MESSAGE_HANDLER(WM_SETFOCUS
, OnSetFocus
)
145 MESSAGE_HANDLER(WM_SIZE
, OnSize
)
146 COMMAND_HANDLER(IDC_SEARCH_BUTTON
, BN_CLICKED
, OnSearchButtonClicked
)
147 COMMAND_HANDLER(IDC_SEARCH_STOP_BUTTON
, BN_CLICKED
, OnStopButtonClicked
)