[SHELLFIND] Add CSearchBar

This commit is contained in:
Brock Mammen 2019-07-18 21:15:01 -05:00 committed by Giannis Adamopoulos
parent 957a604b36
commit 4212f4b175
12 changed files with 677 additions and 17 deletions

View file

@ -1,6 +1,7 @@
PROJECT(SHELL)
add_subdirectory(shellbars)
add_subdirectory(shellfind)
set_cpp(WITH_RUNTIME)
@ -46,7 +47,7 @@ add_library(browseui MODULE
${CMAKE_CURRENT_BINARY_DIR}/browseui.def)
set_module_type(browseui win32dll UNICODE)
target_link_libraries(browseui shellbars uuid wine)
target_link_libraries(browseui shellbars shellfind uuid wine)
add_importlibs(browseui uxtheme shlwapi shell32 comctl32 gdi32 ole32 oleaut32 user32 advapi32 mpr msvcrt kernel32 ntdll)
add_pch(browseui precomp.h SOURCE)
add_cd_file(TARGET browseui DESTINATION reactos/system32 FOR all)

View file

@ -57,6 +57,15 @@ HRESULT CBrandBand_CreateInstance(REFIID riid, void **ppv)
#endif
}
HRESULT CSearchBar_CreateInstance(REFIID riid, LPVOID *ppv)
{
#if USE_CUSTOM_SEARCHBAND
return ShellObjectCreator<CSearchBar>(riid, ppv);
#else
return CoCreateInstance(CLSID_FileSearchBand, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
#endif
}
HRESULT CExplorerBand_CreateInstance(REFIID riid, LPVOID *ppv)
{
#if USE_CUSTOM_EXPLORERBAND
@ -143,6 +152,7 @@ OBJECT_ENTRY(CLSID_InternetToolbar, CInternetToolbar)
OBJECT_ENTRY(CLSID_CRegTreeOptions, CRegTreeOptions)
OBJECT_ENTRY(CLSID_TaskbarList, CTaskbarList)
OBJECT_ENTRY(CLSID_ExplorerBand, CExplorerBand)
OBJECT_ENTRY(CLSID_FileSearchBand, CSearchBar)
OBJECT_ENTRY(CLSID_ProgressDialog, CProgressDialog)
OBJECT_ENTRY(CLSID_ISFBand, CISFBand)
END_OBJECT_MAP()

View file

@ -7,6 +7,7 @@
#define USE_CUSTOM_BANDPROXY 1
#define USE_CUSTOM_BRANDBAND 1
#define USE_CUSTOM_EXPLORERBAND 1
#define USE_CUSTOM_SEARCHBAND 1
#define USE_CUSTOM_INTERNETTOOLBAR 1
HRESULT CAddressBand_CreateInstance(REFIID riid, void **ppv);
@ -14,6 +15,7 @@ HRESULT CAddressEditBox_CreateInstance(REFIID riid, void **ppv);
HRESULT CBandProxy_CreateInstance(REFIID riid, void **ppv);
HRESULT CBrandBand_CreateInstance(REFIID riid, void **ppv);
HRESULT CExplorerBand_CreateInstance(REFIID riid, LPVOID *ppv);
HRESULT CSearchBar_CreateInstance(REFIID riid, LPVOID *ppv);
HRESULT CInternetToolbar_CreateInstance(REFIID riid, void **ppv);
HRESULT CMergedFolder_CreateInstance(REFIID riid, void **ppv);
HRESULT CMenuBand_CreateInstance(REFIID iid, LPVOID *ppv);

View file

@ -48,6 +48,7 @@ IDR_ACLISTISF REGISTRY "res/shellautocomplete.rgs"
IDR_ISFBAND REGISTRY "res/isfband.rgs"
IDR_ACLCUSTOMMRU REGISTRY "res/custommru.rgs"
IDR_TASKBARLIST REGISTRY "res/taskbarlist.rgs"
IDR_FILESEARCHBAND REGISTRY "res/filesearchband.rgs"
#include <reactos/manifest_dll.rc>

View file

@ -47,6 +47,7 @@
#include "shellbars/CBandSite.h"
#include "shellbars/CBandSiteMenu.h"
#include "shellbars/CISFBand.h"
#include "shellfind/CSearchBar.h"
#include "brandband.h"
#include "internettoolbar.h"
#include "commonbrowser.h"

View file

@ -0,0 +1,14 @@
HKCR
{
NoRemove CLSID
{
ForceRemove {C4EE31F3-4768-11D2-BE5C-00A0C9A83DA1} = s 'File Search Explorer Band'
{
DefaultIcon = e '%%SystemRoot%%\System32\shell32.dll,-135'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
}
}
}

View file

@ -105,6 +105,7 @@
#define IDR_ISFBAND 143
#define IDR_ACLCUSTOMMRU 144
#define IDR_TASKBARLIST 145
#define IDR_FILESEARCHBAND 146
#define IDS_SMALLICONS 12301
#define IDS_LARGEICONS 12302
@ -154,3 +155,18 @@
#define IDB_SHELL_BRANDBAND_SM_LO 245
#define IDB_SHELL_BRANDBAND_MD_LO 246
#define IDB_SHELL_BRANDBAND_LG_LO 247*/
#define IDD_SEARCH_DLG 1000
#define IDC_SEARCH_LABEL 1001
#define IDC_SEARCH_FILENAME 1002
#define IDC_SEARCH_QUERY 1003
#define IDC_SEARCH_BUTTON 1004
#define IDC_SEARCH_STOP_BUTTON 1005
#define IDC_SEARCH_COMBOBOX 1006
#define IDS_SEARCHINVALID 4518
#define IDS_COL_NAME 8976
#define IDS_COL_LOCATION 8977
#define IDS_COL_RELEVANCE 8989
#define IDS_SEARCH_FILES_FOUND 9232
#define IDS_SEARCH_FOLDER 9234
#define IDS_SEARCH_OPEN_FOLDER 40960

View file

@ -1234,6 +1234,13 @@ HRESULT CShellBrowser::ShowBand(const CLSID &classID, bool vertical)
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
}
else if (IsEqualCLSID(classID, CLSID_FileSearchBand))
{
TRACE("CLSID_FileSearchBand requested, building internal band.\n");
hResult = CSearchBar_CreateInstance(IID_PPV_ARG(IUnknown, &newBand));
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
}
else
{
TRACE("A different CLSID requested, using CoCreateInstance.\n");
@ -2010,25 +2017,12 @@ HRESULT STDMETHODCALLTYPE CShellBrowser::Exec(const GUID *pguidCmdGroup, DWORD n
switch (nCmdID)
{
case 0x1c: //Toggle Search
if (IsEqualCLSID(CLSID_SH_SearchBand, fCurrentVertBar) ||
IsEqualCLSID(CLSID_SearchBand, fCurrentVertBar) ||
IsEqualCLSID(CLSID_IE_SearchBand, fCurrentVertBar) ||
IsEqualCLSID(CLSID_FileSearchBand, fCurrentVertBar))
{
hResult = IUnknown_ShowDW(fClientBars[BIVerticalBaseBar].clientBar.p, FALSE);
memset(&fCurrentVertBar, 0, sizeof(fCurrentVertBar));
FireCommandStateChangeAll();
}
else
{
OnSearch();
}
return S_OK;
case 0x1d: //Toggle History
case 0x1e: //Toggle Favorites
case 0x23: //Toggle Folders
const GUID* pclsid;
if (nCmdID == 0x1d) pclsid = &CLSID_SH_HistBand;
if (nCmdID == 0x1c) pclsid = &CLSID_FileSearchBand;
else if (nCmdID == 0x1d) pclsid = &CLSID_SH_HistBand;
else if (nCmdID == 0x1e) pclsid = &CLSID_SH_FavBand;
else pclsid = &CLSID_ExplorerBand;
@ -3756,7 +3750,7 @@ LRESULT CShellBrowser::OnExplorerBar(WORD wNotifyCode, WORD wID, HWND hWndCtl, B
switch (wID)
{
case IDM_EXPLORERBAR_SEARCH:
Exec(&CLSID_CommonButtons, 0x123, 1, NULL, NULL);
ShowBand(CLSID_FileSearchBand, true);
break;
case IDM_EXPLORERBAR_FOLDERS:
ShowBand(CLSID_ExplorerBand, true);

View file

@ -0,0 +1,21 @@
PROJECT(SHELL)
set_cpp(WITH_RUNTIME)
add_definitions(-DUNICODE -D_UNICODE)
add_definitions(-D_ATL_NO_EXCEPTIONS)
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/atl)
list(APPEND SOURCE
CSearchBar.cpp
shellfind.h)
add_library(shellfind ${SOURCE})
if(NOT MSVC)
add_target_compile_flags(shellfind "-Wno-unused-but-set-variable")
endif()
add_pch(shellfind shellfind.h SOURCE)

View file

@ -0,0 +1,433 @@
/*
* ReactOS Explorer
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "CSearchBar.h"
#include <psdk/wingdi.h>
WINE_DEFAULT_DEBUG_CHANNEL(shellfind);
#if 1
#undef UNIMPLEMENTED
#define UNIMPLEMENTED DbgPrint("%s is UNIMPLEMENTED!\n", __FUNCTION__)
#endif
CSearchBar::CSearchBar() :
pSite(NULL),
fVisible(FALSE),
bFocused(FALSE)
{
}
CSearchBar::~CSearchBar()
{
}
void CSearchBar::InitializeSearchBar()
{
CreateWindowExW(0, WC_STATIC, L"Search by any or all of the criteria below.",
WS_CHILD | WS_VISIBLE,
10, 10, 200, 40,
m_hWnd, NULL,
_AtlBaseModule.GetModuleInstance(), NULL);
CreateWindowExW(0, WC_STATIC, L"A &word or phrase in the file:",
WS_CHILD | WS_VISIBLE,
10, 50, 500, 20,
m_hWnd, NULL,
_AtlBaseModule.GetModuleInstance(), NULL);
CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
WS_BORDER | WS_CHILD | WS_VISIBLE,
10, 70, 100, 20,
m_hWnd, NULL,
_AtlBaseModule.GetModuleInstance(), NULL);
CreateWindowExW(0, WC_STATIC, L"&Look in:",
WS_CHILD | WS_VISIBLE,
10, 100, 500, 20,
m_hWnd, NULL,
_AtlBaseModule.GetModuleInstance(), NULL);
CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
WS_BORDER | WS_CHILD | WS_VISIBLE,
10, 120, 100, 20,
m_hWnd, NULL,
_AtlBaseModule.GetModuleInstance(), NULL);
CreateWindowExW(0, WC_BUTTON, L"Sea&rch",
WS_BORDER | WS_CHILD | WS_VISIBLE,
10, 150, 100, 20,
m_hWnd, NULL,
_AtlBaseModule.GetModuleInstance(), NULL);
}
HRESULT CSearchBar::ExecuteCommand(CComPtr<IContextMenu>& menu, UINT nCmd)
{
CComPtr<IOleWindow> pBrowserOleWnd;
CMINVOKECOMMANDINFO cmi;
HWND browserWnd;
HRESULT hr;
hr = IUnknown_QueryService(pSite, SID_SShellBrowser, IID_PPV_ARG(IOleWindow, &pBrowserOleWnd));
if (FAILED_UNEXPECTEDLY(hr))
return hr;
hr = pBrowserOleWnd->GetWindow(&browserWnd);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
ZeroMemory(&cmi, sizeof(cmi));
cmi.cbSize = sizeof(cmi);
cmi.lpVerb = MAKEINTRESOURCEA(nCmd);
cmi.hwnd = browserWnd;
if (GetKeyState(VK_SHIFT) & 0x8000)
cmi.fMask |= CMIC_MASK_SHIFT_DOWN;
if (GetKeyState(VK_CONTROL) & 0x8000)
cmi.fMask |= CMIC_MASK_CONTROL_DOWN;
return menu->InvokeCommand(&cmi);
}
// *** ATL event handlers ***
LRESULT CSearchBar::OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
bFocused = TRUE;
IUnknown_OnFocusChangeIS(pSite, reinterpret_cast<IUnknown*>(this), TRUE);
bHandled = FALSE;
return TRUE;
}
// *** IOleWindow methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::GetWindow(HWND *lphwnd)
{
if (!lphwnd)
return E_INVALIDARG;
*lphwnd = m_hWnd;
return S_OK;
}
HRESULT STDMETHODCALLTYPE CSearchBar::ContextSensitiveHelp(BOOL fEnterMode)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
// *** IDockingWindow methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::CloseDW(DWORD dwReserved)
{
// We do nothing, we don't have anything to save yet
TRACE("CloseDW called\n");
return S_OK;
}
HRESULT STDMETHODCALLTYPE CSearchBar::ResizeBorderDW(const RECT *prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
{
/* Must return E_NOTIMPL according to MSDN */
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::ShowDW(BOOL fShow)
{
fVisible = fShow;
ShowWindow(fShow);
return S_OK;
}
// *** IDeskBand methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi)
{
if (!pdbi)
{
return E_INVALIDARG;
}
if (pdbi->dwMask & DBIM_MINSIZE)
{
pdbi->ptMinSize.x = 200;
pdbi->ptMinSize.y = 30;
}
if (pdbi->dwMask & DBIM_MAXSIZE)
{
pdbi->ptMaxSize.y = -1;
}
if (pdbi->dwMask & DBIM_INTEGRAL)
{
pdbi->ptIntegral.y = 1;
}
if (pdbi->dwMask & DBIM_ACTUAL)
{
pdbi->ptActual.x = 200;
pdbi->ptActual.y = 30;
}
if (pdbi->dwMask & DBIM_TITLE)
{
if (!LoadStringW(_AtlBaseModule.GetResourceInstance(), IDS_SEARCHLABEL, pdbi->wszTitle, _countof(pdbi->wszTitle)))
return HRESULT_FROM_WIN32(GetLastError());
}
if (pdbi->dwMask & DBIM_MODEFLAGS)
{
pdbi->dwModeFlags = DBIMF_NORMAL | DBIMF_VARIABLEHEIGHT;
}
if (pdbi->dwMask & DBIM_BKCOLOR)
{
pdbi->dwMask &= ~DBIM_BKCOLOR;
}
return S_OK;
}
LRESULT CALLBACK MyWindowProc(
_In_ HWND hwnd,
_In_ UINT uMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
)
{
return 0;
}
// *** IObjectWithSite methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::SetSite(IUnknown *pUnkSite)
{
HRESULT hr;
HWND parentWnd;
if (pUnkSite == pSite)
return S_OK;
TRACE("SetSite called \n");
if (!pUnkSite)
{
DestroyWindow();
m_hWnd = NULL;
}
if (pUnkSite != pSite)
{
pSite = NULL;
}
if(!pUnkSite)
return S_OK;
hr = IUnknown_GetWindow(pUnkSite, &parentWnd);
if (!SUCCEEDED(hr))
{
ERR("Could not get parent's window ! Status: %08lx\n", hr);
return E_INVALIDARG;
}
pSite = pUnkSite;
if (m_hWnd)
{
// Change its parent
SetParent(parentWnd);
}
else
{
CWindowImpl::Create(parentWnd);
InitializeSearchBar();
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE CSearchBar::GetSite(REFIID riid, void **ppvSite)
{
if (!ppvSite)
return E_POINTER;
*ppvSite = pSite;
return S_OK;
}
// *** IOleCommandTarget methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds [], OLECMDTEXT *pCmdText)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
// *** IServiceProvider methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
{
/* FIXME: we probably want to handle more services here */
return IUnknown_QueryService(pSite, SID_SShellBrowser, riid, ppvObject);
}
// *** IInputObject methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
if (fActivate)
{
//SetFocus();
SetActiveWindow();
}
// TODO: handle message
if(lpMsg)
{
TranslateMessage(lpMsg);
DispatchMessage(lpMsg);
}
return S_OK;
}
HRESULT STDMETHODCALLTYPE CSearchBar::HasFocusIO()
{
return bFocused ? S_OK : S_FALSE;
}
HRESULT STDMETHODCALLTYPE CSearchBar::TranslateAcceleratorIO(LPMSG lpMsg)
{
if (lpMsg->hwnd == m_hWnd)
{
TranslateMessage(lpMsg);
DispatchMessage(lpMsg);
return S_OK;
}
return S_FALSE;
}
// *** IPersist methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::GetClassID(CLSID *pClassID)
{
if (!pClassID)
return E_POINTER;
memcpy(pClassID, &CLSID_FileSearchBand, sizeof(CLSID));
return S_OK;
}
// *** IPersistStream methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::IsDirty()
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::Load(IStream *pStm)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::Save(IStream *pStm, BOOL fClearDirty)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::GetSizeMax(ULARGE_INTEGER *pcbSize)
{
// TODO: calculate max size
UNIMPLEMENTED;
return E_NOTIMPL;
}
// *** IWinEventHandler methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
{
return S_OK;
}
HRESULT STDMETHODCALLTYPE CSearchBar::IsWindowOwner(HWND hWnd)
{
return (hWnd == m_hWnd) ? S_OK : S_FALSE;
}
// *** IBandNavigate methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::Select(long paramC)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
// *** INamespaceProxy ***
HRESULT STDMETHODCALLTYPE CSearchBar::GetNavigateTarget(long paramC, long param10, long param14)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::Invoke(long paramC)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::OnSelectionChanged(long paramC)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::RefreshFlags(long paramC, long param10, long param14)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::CacheItem(long paramC)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
// *** IDispatch methods ***
HRESULT STDMETHODCALLTYPE CSearchBar::GetTypeInfoCount(UINT *pctinfo)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{
UNIMPLEMENTED;
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE CSearchBar::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
TRACE("Unknown dispid requested: %08x\n", dispIdMember);
return E_INVALIDARG;
}

View file

@ -0,0 +1,138 @@
/*
* ReactOS Explorer
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#pragma once
#include "shellfind.h"
class CSearchBar :
public CComCoClass<CSearchBar, &CLSID_FileSearchBand>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IDeskBand,
public IObjectWithSite,
public IInputObject,
public IPersistStream,
public IOleCommandTarget,
public IServiceProvider,
public IBandNavigate,
public IWinEventHandler,
public INamespaceProxy,
public IDispatch,
public CWindowImpl<CSearchBar>
{
private:
// *** BaseBarSite information ***
CComPtr<IUnknown> pSite;
BOOL fVisible;
BOOL bFocused;
void InitializeSearchBar();
HRESULT ExecuteCommand(CComPtr<IContextMenu>& menu, UINT nCmd);
// *** ATL event handlers ***
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
public:
CSearchBar();
virtual ~CSearchBar();
// *** IOleWindow methods ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IDockingWindow methods ***
virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(const RECT *prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
// *** IDeskBand methods ***
virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi);
// *** IObjectWithSite methods ***
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
// *** IOleCommandTarget methods ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds [], OLECMDTEXT *pCmdText);
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IServiceProvider methods ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
// *** IInputObject methods ***
virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
// *** IPersist methods ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistStream methods ***
virtual HRESULT STDMETHODCALLTYPE IsDirty();
virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
// *** IWinEventHandler methods ***
virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
// *** IBandNavigate methods ***
virtual HRESULT STDMETHODCALLTYPE Select(long paramC);
// *** INamespaceProxy ***
virtual HRESULT STDMETHODCALLTYPE GetNavigateTarget(long paramC, long param10, long param14);
virtual HRESULT STDMETHODCALLTYPE Invoke(long paramC);
virtual HRESULT STDMETHODCALLTYPE OnSelectionChanged(long paramC);
virtual HRESULT STDMETHODCALLTYPE RefreshFlags(long paramC, long param10, long param14);
virtual HRESULT STDMETHODCALLTYPE CacheItem(long paramC);
// *** IDispatch methods ***
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
DECLARE_REGISTRY_RESOURCEID(IDR_EXPLORERBAND)
DECLARE_NOT_AGGREGATABLE(CSearchBar)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CSearchBar)
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
COM_INTERFACE_ENTRY_IID(IID_IBandNavigate, IBandNavigate)
COM_INTERFACE_ENTRY_IID(IID_INamespaceProxy, INamespaceProxy)
COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand)
COM_INTERFACE_ENTRY2_IID(IID_IDockingWindow, IDockingWindow, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
COM_INTERFACE_ENTRY2_IID(IID_IPersist, IPersist, IPersistStream)
COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
END_COM_MAP()
DECLARE_WND_CLASS_EX(_T("SrchCompExplorerBar"), 0, COLOR_WINDOW)
BEGIN_MSG_MAP(CSearchBar)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
};

View file

@ -0,0 +1,29 @@
#ifndef _SHELLFIND_PCH_
#define _SHELLFIND_PCH_
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
#include <windef.h>
#include <winbase.h>
#include <shlobj.h>
#include <shlobj_undoc.h>
#include <shlguid_undoc.h>
#include <shdeprecated.h>
#include <tchar.h>
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <atlsimpcoll.h>
#include <atlstr.h>
#include <shlwapi.h>
#include <shlwapi_undoc.h>
#include <undocshell.h>
#include <shellutils.h>
#include <strsafe.h>
#include <wine/debug.h>
#include "../resource.h"
#endif /* _SHELLFIND_PCH_ */