27#define NONAMELESSUNION
36#define NO_SHLWAPI_STREAM
87#define add_flag(a) if (flags & a) {strcat(str, #a );strcat(str," ");}
104 FE(SBSP_EXPLOREMODE),
106 FE(SBSP_NOTRANSFERHIST),
111 FE(SBSP_NAVIGATEBACK),
112 FE(SBSP_NAVIGATEFORWARD),
113 FE(SBSP_ALLOW_AUTONAVIGATE),
115 FE(SBSP_NOAUTOSELECT),
116 FE(SBSP_WRITENOHISTORY),
119 FE(SBSP_INITIATEDBYHLINKFRAME),
122 TRACE(
"SBSP Flags: %08x =", uflags);
132 LPSHELLFOLDER psfDesktop;
141 SHGDN_FORPARSING, &strret);
153 IShellFolder_Release(psfDesktop);
183 FIXME(
"unknown type!\n");
208 sb->hwndOwner = hwndOwner;
219 return &
sb->IShellBrowser_iface;
234 *ppvObj = &
This->IShellBrowser_iface;
236 *ppvObj = &
This->IShellBrowser_iface;
238 *ppvObj = &
This->IShellBrowser_iface;
240 *ppvObj = &
This->ICommDlgBrowser_iface;
242 *ppvObj = &
This->IServiceProvider_iface;
245 IUnknown_AddRef((
IUnknown*)*ppvObj);
310 *phwnd =
This->hwndOwner;
364 if(
wFlags & SBSP_RELATIVE)
368 if (
FAILED(hRes = IShellFolder_BindToObject(fodInfos->
Shell.FOIShellFolder,
369 pidl,
NULL, &IID_IShellFolder, (
void **)&
folder)))
371 ERR(
"bind to object failed\n");
377 else if(
wFlags & SBSP_PARENT)
392 ERR(
"could not browse to folder\n");
401 IShellFolder_Release(
folder);
403 TRACE(
"keep current folder\n");
408 if (fodInfos->
Shell.FOIDataObject)
410 IDataObject_Release(fodInfos->
Shell.FOIDataObject);
415 TRACE(
"create view object\n");
417 &IID_IShellView, (
void **)&psvTmp)))
419 IShellFolder_Release(
folder);
428 if(fodInfos->
Shell.FOIShellView)
429 IShellView_GetCurrentInfo(fodInfos->
Shell.FOIShellView, &fodInfos->
ShellInfos.folderSettings);
434 if(fodInfos->
Shell.FOIShellView)
436 IShellView_DestroyViewWindow(fodInfos->
Shell.FOIShellView);
437 IShellView_Release(fodInfos->
Shell.FOIShellView);
439 fodInfos->
Shell.FOIShellView = psvTmp;
442 if (fodInfos->
Shell.FOIShellFolder)
443 IShellFolder_Release(fodInfos->
Shell.FOIShellFolder);
448 fodInfos->
ShellInfos.pidlAbsCurrent = pidlTmp;
456 TRACE(
"create view window\n");
457 if (
FAILED(hRes = IShellView_CreateViewWindow(psvTmp,
NULL,
459 &rectView, &hwndView)))
461 WARN(
"Failed to create view window, hr %#x.\n", hRes);
526 FIXME(
"(%p 0x%08x %p)\n",
This, grfMode, ppStrm);
537 LPOLEMENUGROUPWIDTHS lpMenuWidths)
578 if(!(*ppshv = fodInfos->
Shell.FOIShellView))
582 IShellView_AddRef(fodInfos->
Shell.FOIShellView);
624 TRACE(
"ctrl id: %x\n",
id);
626 FIXME(
"ctrl id: %x\n",
id);
630 if (pret) *pret = lres;
639 HOLEMENU holemenuReserved,
640 HWND hwndActiveObject)
655 LPCOLESTR lpszStatusText)
791 ULONG ulAttr = SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_FILESYSANCESTOR;
792 IShellFolder_GetAttributesOf(fodInfos->
Shell.FOIShellFolder, 1, (
LPCITEMIDLIST *)&pidl, &ulAttr);
793 if ((ulAttr & (SFGAO_FOLDER | SFGAO_HASSUBFOLDER)) && (ulAttr & SFGAO_FILESYSANCESTOR))
795 hRes = IShellBrowser_BrowseObject(&
This->IShellBrowser_iface,pidl,SBSP_RELATIVE);
822 TRACE(
"(%p do=%p view=%p)\n",
This, fodInfos->
Shell.FOIDataObject, fodInfos->
Shell.FOIShellView);
825 if (fodInfos->
Shell.FOIDataObject)
826 IDataObject_Release(fodInfos->
Shell.FOIDataObject);
829 if(
FAILED(IShellView_GetItemObject(fodInfos->
Shell.FOIShellView, SVGIO_SELECTION,
854 case CDBOSC_SETFOCUS:
862 case CDBOSC_KILLFOCUS:
873 case CDBOSC_SELCHANGE:
892 if(!fodInfos)
return 0;
894 if(fodInfos->
DlgInfos.hwndCustomDlg)
896 TRACE(
"call notify CDN_INCLUDEITEM for pidl=%p\n", pidl);
900 ofnNotify.
psf = fodInfos->
Shell.FOIShellFolder;
911 ofnNotify.
psf = fodInfos->
Shell.FOIShellFolder;
920 TRACE(
"Retval: 0x%08lx\n", hook_result);
942 ulAttr = SFGAO_HIDDEN | SFGAO_FOLDER | SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR | SFGAO_LINK;
943 IShellFolder_GetAttributesOf(fodInfos->
Shell.FOIShellFolder, 1, &pidl, &ulAttr);
945 if( (ulAttr & SFGAO_HIDDEN) ||
946 !(ulAttr & (SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR)))
950 if(ulAttr & (SFGAO_FOLDER | SFGAO_LINK))
1054 if(guidService &&
IsEqualIID(guidService, &SID_STopLevelBrowser))
1057 FIXME(
"(%p) unknown interface requested\n",
This);
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
DECLSPEC_HIDDEN HINSTANCE COMDLG32_hInstance
EXTERN_C HRESULT DoUpdateAutoCompleteWithCWD(const FileOpenDlgInfos *info, LPCITEMIDLIST pidl)
struct tagOFNA * LPOPENFILENAMEA
#define OFN_ENABLEINCLUDENOTIFY
LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl)
void FILEDLG95_FILENAME_FillFromSelection(HWND hwnd)
FileOpenDlgInfos * get_filedlg_infoptr(HWND hwnd)
IShellFolder * GetShellFolderFromPidl(LPITEMIDLIST pidlAbs)
LRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode)
LPITEMIDLIST GetPidlFromDataObject(IDataObject *doSelected, UINT nPidlIndex)
int FILEDLG95_LOOKIN_SelectItem(HWND hwnd, LPITEMIDLIST pidl)
#define MultiByteToWideChar
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
BOOL WINAPI PathMatchSpecW(const WCHAR *path, const WCHAR *mask)
INT WINAPI DECLSPEC_HOTPATCH LoadStringW(HINSTANCE instance, UINT resource_id, LPWSTR buffer, INT buflen)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
#define IShellFolder_GetDisplayNameOf
static HRESULT WINAPI IShellBrowserImpl_SetToolbarItems(IShellBrowser *iface, LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags)
static const ICommDlgBrowserVtbl IShellBrowserImpl_ICommDlgBrowser_Vtbl
static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand(ICommDlgBrowser *iface, IShellView *ppshv)
static const IShellBrowserVtbl IShellBrowserImpl_Vtbl
static LRESULT send_includeitem_notification(HWND hwndParentDlg, LPCITEMIDLIST pidl)
static HRESULT WINAPI IShellBrowserImpl_GetControlWindow(IShellBrowser *iface, UINT id, HWND *lphwnd)
static ULONG WINAPI IShellBrowserImpl_AddRef(IShellBrowser *iface)
static ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_Release(ICommDlgBrowser *iface)
static HRESULT WINAPI IShellBrowserImpl_QueryInterface(IShellBrowser *iface, REFIID riid, void **ppvObj)
static HRESULT WINAPI IShellBrowserImpl_SendControlMsg(IShellBrowser *iface, UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret)
static HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
static ULONG WINAPI IShellBrowserImpl_IServiceProvider_AddRef(IServiceProvider *iface)
static HRESULT WINAPI IShellBrowserImpl_ContextSensitiveHelp(IShellBrowser *iface, BOOL fEnterMode)
static ULONG WINAPI IShellBrowserImpl_IServiceProvider_Release(IServiceProvider *iface)
static HRESULT WINAPI IShellBrowserImpl_EnableModelessSB(IShellBrowser *iface, BOOL fEnable)
static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser *iface, IShellView *ppshv, LPCITEMIDLIST pidl)
static BOOL COMDLG32_StrRetToStrNW(LPVOID dest, DWORD len, LPSTRRET src, LPCITEMIDLIST pidl)
static HRESULT WINAPI IShellBrowserImpl_RemoveMenusSB(IShellBrowser *iface, HMENU hmenuShared)
static HRESULT WINAPI IShellBrowserImpl_BrowseObject(IShellBrowser *iface, LPCITEMIDLIST pidl, UINT wFlags)
static HRESULT WINAPI IShellBrowserImpl_InsertMenusSB(IShellBrowser *iface, HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
static ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_AddRef(ICommDlgBrowser *iface)
static void COMDLG32_UpdateCurrentDir(const FileOpenDlgInfos *fodInfos)
static HRESULT WINAPI IShellBrowserImpl_SetMenuSB(IShellBrowser *iface, HMENU hmenuShared, HOLEMENU holemenuReserved, HWND hwndActiveObject)
static HRESULT WINAPI IShellBrowserImpl_OnViewWindowActive(IShellBrowser *iface, IShellView *ppshv)
static IShellBrowserImpl * impl_from_ICommDlgBrowser(ICommDlgBrowser *iface)
static HRESULT WINAPI IShellBrowserImpl_GetViewStateStream(IShellBrowser *iface, DWORD grfMode, LPSTREAM *ppStrm)
static IShellBrowserImpl * impl_from_IShellBrowser(IShellBrowser *iface)
static ULONG WINAPI IShellBrowserImpl_Release(IShellBrowser *iface)
static HRESULT WINAPI IShellBrowserImpl_SetStatusTextSB(IShellBrowser *iface, LPCOLESTR lpszStatusText)
static HRESULT WINAPI IShellBrowserImpl_QueryActiveShellView(IShellBrowser *iface, IShellView **ppshv)
static const IServiceProviderVtbl IShellBrowserImpl_IServiceProvider_Vtbl
static HRESULT WINAPI IShellBrowserImpl_GetWindow(IShellBrowser *iface, HWND *phwnd)
static HRESULT WINAPI IShellBrowserImpl_TranslateAcceleratorSB(IShellBrowser *iface, LPMSG lpmsg, WORD wID)
static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_QueryInterface(ICommDlgBrowser *iface, REFIID riid, LPVOID *ppvObj)
static IShellBrowserImpl * impl_from_IServiceProvider(IServiceProvider *iface)
static HRESULT IShellBrowserImpl_OnSelChange(IShellBrowserImpl *This, const IShellView *ppshv)
static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnStateChange(ICommDlgBrowser *iface, IShellView *ppshv, ULONG uChange)
static HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, LPVOID *ppvObj)
static void COMDLG32_DumpSBSPFlags(UINT uflags)
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(void *ptr)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
interface IStream * LPSTREAM
const GUID IID_IOleWindow
const GUID IID_IDataObject
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
#define IsEqualIID(riid1, riid2)
static IShellBrowser * IShellBrowserImpl_Construct(void)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
struct FileOpenDlgInfos::@337 DlgInfos
struct FileOpenDlgInfos::@335 Shell
struct FileOpenDlgInfos::@336 ShellInfos
Implementation of IShellBrowser and ICommDlgBrowser interfaces for explorer child windows (see ShellB...
IServiceProvider IServiceProvider_iface
ICommDlgBrowser ICommDlgBrowser_iface
IShellBrowser IShellBrowser_iface
#define CONTAINING_RECORD(address, type, field)
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
HWND WINAPI GetFocus(void)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
HWND WINAPI GetParent(_In_ HWND)
#define SetWindowLongPtrW
LRESULT WINAPI SendDlgItemMessageA(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)