10#include <commoncontrols.h>
11#include <../browseui.h>
20#define UNIMPLEMENTED DbgPrint("%s is UNIMPLEMENTED!\n", __FUNCTION__)
27 for (
HWND hParent = hNeedle; hParent;)
41 if (pFV &&
SUCCEEDED(pFV->ItemCount(SVGIO_ALLVIEW, &signedCount)))
45 if (pSFV &&
SUCCEEDED(pSFV->GetObjectCount(&unsignedCount)))
126 pPrev->
pNext = pItem;
143 rgszLocations[nCount] = szUser;
145 rgszLocations[nCount] = szCommon;
157 if (fDrives & (1 <<
i))
159 rgszDrives[nCount][0] =
'A' +
i;
160 rgszDrives[nCount][1] =
':';
161 rgszDrives[nCount][2] =
'\\';
166 rgszLocations[nCount] = rgszDrives[nCount];
191 DWORD SearchHiddenValue = 0;
200 ERR(
"RegQueryKey for \"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\SearchHidden\" returned error(s).\n");
201 SearchHiddenValue = 1;
205 TRACE(
"SearchHidden is '%d'.\n", SearchHiddenValue);
210 ERR(
"RegQueryKey for \"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\SearchHidden\" Failed.\n");
215 ERR(
"RegOpenKey for \"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\" Failed.\n");
217 if (SearchHiddenValue != 0)
243 DWORD dwAdviseCookie;
245 AtlAdvise(pShellBrowser,
static_cast<IDispatch *
>(
this), DIID_DWebBrowserEvents, &dwAdviseCookie);
268 ppShellBrowser = &pShellBrowser;
269 if (!*ppShellBrowser)
277 hr = (*ppShellBrowser)->QueryActiveShellView(&pShellView);
288 ppShellFolder = &pShellFolder;
297 if (
clsid != CLSID_FindFolder)
302 hr = pShellView->GetWindow(pHwnd);
324 if (!pSearchStart->pPaths)
336 if ((
len > 0) && !
wcspbrk(pSearchStart->szFileName,
L"*?"))
338 endchar = pSearchStart->szFileName[
len - 1];
339 startchar = pSearchStart->szFileName[0];
342 memmove(&pSearchStart->szFileName[1], &pSearchStart->szFileName[0],
345 pSearchStart->szFileName[0] =
L'*';
354 TRACE(
"Searched szFileName is '%S'.\n", pSearchStart->szFileName);
366 const WCHAR shellGuidPrefix[] =
L"shell:::";
367 memcpy(szShellGuid, shellGuidPrefix,
sizeof(shellGuidPrefix));
378 hr = pShellBrowser->BrowseObject(findFolderPidl, 0);
387 FreeLocationsHelper.
Detach();
407 HWND hComboboxEx = hWndCtl;
457 if (iSelectedIndex !=
CB_ERR)
461 item.iItem = iSelectedIndex;
462 item.pszText = szItemText;
473 if (!pidl || !pidl->mkid.cb)
477 pszPath = szItemText;
510 iWidth - iPadding * 2,
540 TRACE(
"CloseDW called\n");
568 if (pdbi->
dwMask & DBIM_MINSIZE)
574 if (pdbi->
dwMask & DBIM_MAXSIZE)
579 if (pdbi->
dwMask & DBIM_INTEGRAL)
584 if (pdbi->
dwMask & DBIM_ACTUAL)
590 if (pdbi->
dwMask & DBIM_TITLE)
596 if (pdbi->
dwMask & DBIM_MODEFLAGS)
598 pdbi->
dwModeFlags = DBIMF_NORMAL | DBIMF_VARIABLEHEIGHT;
601 if (pdbi->
dwMask & DBIM_BKCOLOR)
603 pdbi->
dwMask &= ~DBIM_BKCOLOR;
618 TRACE(
"SetSite called \n");
629 ERR(
"Could not get parent's window ! Status: %08lx\n",
hr);
699 *pClassID = CLSID_FileSearchBand;
767 hr =
AtlAdvise(pShellFolder,
static_cast<IDispatch *
>(
this), DIID_DSearchCommandEvents, &fAdviseCookie);
776 switch (dispIdMember)
789 pDispatch->Invoke(dispIdMember,
riid, lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
794 hResult = pShellService->SetOwner(
NULL);
833 const UINT fQuery = SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR;
855 #define IDS_SEARCH_BROWSEITEM 10244
879 pBrowser->QueryActiveShellView(&pResultsSV);
884 if (!hWndFocus || !pResultsSV || cItems == 0)
static const SPECIALFINDITEMID g_pidlBrowseDir
static BYTE GetSpecial(PCIDLIST_ABSOLUTE pidl)
static UINT GetShellViewItemCount(IShellView *pSV)
static LOCATIONITEM * GetDesktopLocations()
static LOCATIONITEM * CreateLocationListItem(PCWSTR szPath)
void FreeList(LOCATIONITEM *pItems)
static BOOL IsWindowChildOf(const HWND hNeedle, const HWND hRoot)
static LOCATIONITEM * GetLocalDisksLocations()
static HRESULT GetClassOfItem(PCIDLIST_ABSOLUTE pidl, CLSID *pCLSID)
static HRESULT BindToObject(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv)
static LOCATIONITEM * BuildLocationList(T **rgszPaths, SIZE_T nCount)
#define IDS_SEARCH_BROWSEITEM
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define STDMETHODCALLTYPE
#define RegCloseKey(hKey)
EXTERN_C LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi)
HRESULT CAddressEditBox_CreateInstance(REFIID riid, void **ppv)
HWND Create(HWND hWndParent, LPARAM dwInitParam=0)
HWND SetParent(HWND hWndNewParent)
UINT IsDlgButtonChecked(int nIDButton) const
BOOL CheckDlgButton(int nIDButton, UINT nCheck)
BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
HWND GetDlgItem(_In_ int nID) const
BOOL ScreenToClient(LPPOINT lpPoint) const
HDWP DeferWindowPos(HDWP hWinPosInfo, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
BOOL GetWindowRect(LPRECT lpRect) const
BOOL ShowWindow(int nCmdShow)
BOOL IsChild(const HWND hWnd) const
STDMETHOD() HasFocusIO() override
STDMETHOD() CloseDW(DWORD dwReserved) override
STDMETHOD() ContextSensitiveHelp(BOOL fEnterMode) override
STDMETHOD() Save(IStream *pStm, BOOL fClearDirty) override
CComPtr< IUnknown > m_pSite
STDMETHOD() GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) override
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() IsDirty() override
LRESULT OnSearchButtonClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
STDMETHOD() GetClassID(CLSID *pClassID) override
STDMETHOD() GetWindow(HWND *lphwnd) override
HRESULT GetSearchResultsFolder(IShellBrowser **ppShellBrowser, HWND *pHwnd, IShellFolder **ppShellFolder)
STDMETHOD() Load(IStream *pStm) override
LRESULT OnStopButtonClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
STDMETHOD() ResizeBorderDW(const RECT *prcBorder, IUnknown *punkToolbarSite, BOOL fReserved) override
STDMETHOD() SetSite(IUnknown *pUnkSite) override
HRESULT TrySubscribeToSearchEvents()
STDMETHOD() GetSizeMax(ULARGE_INTEGER *pcbSize) override
STDMETHOD() GetSite(REFIID riid, void **ppvSite) override
STDMETHOD() Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) override
STDMETHOD() ShowDW(BOOL fShow) override
STDMETHOD() GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) override
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() GetTypeInfoCount(UINT *pctinfo) override
void SetSearchInProgress(BOOL bInProgress)
STDMETHOD() TranslateAcceleratorIO(LPMSG lpMsg) override
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi) override
LOCATIONITEM * GetAddressEditBoxLocations(WCHAR *szPath)
LRESULT OnLocationEditChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled)
STDMETHOD() UIActivateIO(BOOL fActivate, LPMSG lpMsg) override
void TrySetFocus(UINT Source)
CComPtr< IAddressEditBox > m_AddressEditBox
HRESULT WINAPI AtlAdvise(IUnknown *pUnkCP, IUnknown *pUnk, const IID *iid, DWORD *pdw)
#define IDC_SEARCH_BUTTON
#define IDC_SEARCH_COMBOBOX
#define IDC_SEARCH_HIDDEN
#define IDS_SEARCHINVALID
#define IDC_SEARCH_STOP_BUTTON
#define IDC_SEARCH_FILENAME
#define FAILED_UNEXPECTEDLY(hr)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
void WINAPI SHFree(LPVOID pv)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
HRESULT WINAPI IUnknown_QueryService(IUnknown *, REFGUID, REFIID, LPVOID *)
HRESULT WINAPI IUnknown_GetClassID(IUnknown *lpUnknown, CLSID *clsid)
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
HRESULT WINAPI IUnknown_OnFocusChangeIS(LPUNKNOWN lpUnknown, LPUNKNOWN pFocusObject, BOOL bFocus)
#define DISPID_SEARCHABORT
#define DISPID_WINDOWSTATECHANGED
#define DISPID_SEARCHCOMPLETE
GLuint GLuint GLsizei count
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static DWORD DWORD void LPSTR DWORD cch
static VARIANTARG static DISPID
static int int const SCRIPT_CONTROL const SCRIPT_STATE SCRIPT_ITEM * pItems
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
#define FILE_ATTRIBUTE_DIRECTORY
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
HRESULT WINAPI SHParseDisplayName(LPCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
#define CBEIF_SELECTEDIMAGE
#define CBEM_SETEXTENDEDSTYLE
#define CBEM_SETIMAGELIST
#define CBES_EX_NOSIZELIMIT
#define CBES_EX_CASESENSITIVE
#define CBEM_GETEDITCONTROL
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcspbrk(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags)
#define SHGFI_ATTR_SPECIFIED
#define SHGFI_SYSICONINDEX
#define SHGFI_DISPLAYNAME
static bool PathIsAbsolute(PCWSTR Path)
static INT_PTR FindItemInComboEx(HWND hCombo, T &FindItem, F CompareFunc, R RetMatch)
HRESULT WINAPI SHGetImageList(int iImageList, REFIID riid, void **ppv)
#define SID_SShellBrowser
#define CSIDL_COMMON_DESKTOPDIRECTORY
#define CSIDL_DESKTOPDIRECTORY
#define BIF_RETURNONLYFSDIRS
static BOOL ILIsEmpty(_In_opt_ PCUIDLIST_RELATIVE pidl)
#define BIF_NEWDIALOGSTYLE
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz, size_t cchMax, size_t *pcchLength)
CHAR szDisplayName[MAX_PATH]
struct tagLOCATIONITEM * pNext
#define FIELD_OFFSET(t, f)
#define INVALID_FILE_ATTRIBUTES
#define DISPID_NAVIGATECOMPLETE2
#define DISPID_DOCUMENTCOMPLETE
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetLogicalDrives(void)
_In_ DWORD _Out_ _In_ WORD wFlags
#define HRESULT_FROM_WIN32(x)
#define HKEY_CURRENT_USER
HWND WINAPI GetFocus(void)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
HWND WINAPI GetParent(_In_ HWND)
#define SWP_NOOWNERZORDER
#define MAKEINTRESOURCEW(i)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
#define IID_PPV_ARG(Itype, ppType)