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);
306 *phwnd =
This->hwndOwner;
360 if(
wFlags & SBSP_RELATIVE)
364 if (
FAILED(hRes = IShellFolder_BindToObject(fodInfos->
Shell.FOIShellFolder,
365 pidl,
NULL, &IID_IShellFolder, (
void **)&
folder)))
367 ERR(
"bind to object failed\n");
373 else if(
wFlags & SBSP_PARENT)
388 ERR(
"could not browse to folder\n");
397 IShellFolder_Release(
folder);
399 TRACE(
"keep current folder\n");
404 if (fodInfos->
Shell.FOIDataObject)
406 IDataObject_Release(fodInfos->
Shell.FOIDataObject);
411 TRACE(
"create view object\n");
413 &IID_IShellView, (
void **)&psvTmp)))
415 IShellFolder_Release(
folder);
424 if(fodInfos->
Shell.FOIShellView)
425 IShellView_GetCurrentInfo(fodInfos->
Shell.FOIShellView, &fodInfos->
ShellInfos.folderSettings);
430 if(fodInfos->
Shell.FOIShellView)
432 IShellView_DestroyViewWindow(fodInfos->
Shell.FOIShellView);
433 IShellView_Release(fodInfos->
Shell.FOIShellView);
435 fodInfos->
Shell.FOIShellView = psvTmp;
438 if (fodInfos->
Shell.FOIShellFolder)
439 IShellFolder_Release(fodInfos->
Shell.FOIShellFolder);
444 fodInfos->
ShellInfos.pidlAbsCurrent = pidlTmp;
452 TRACE(
"create view window\n");
453 if (
FAILED(hRes = IShellView_CreateViewWindow(psvTmp,
NULL,
455 &rectView, &hwndView)))
457 WARN(
"Failed to create view window, hr %#x.\n", hRes);
522 FIXME(
"(%p 0x%08x %p)\n",
This, grfMode, ppStrm);
533 LPOLEMENUGROUPWIDTHS lpMenuWidths)
574 if(!(*ppshv = fodInfos->
Shell.FOIShellView))
578 IShellView_AddRef(fodInfos->
Shell.FOIShellView);
619 FIXME(
"ctrl id: %x\n",
id);
622 if (pret) *pret = lres;
631 HOLEMENU holemenuReserved,
632 HWND hwndActiveObject)
647 LPCOLESTR lpszStatusText)
783 ULONG ulAttr = SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_FILESYSANCESTOR;
784 IShellFolder_GetAttributesOf(fodInfos->
Shell.FOIShellFolder, 1, (
LPCITEMIDLIST *)&pidl, &ulAttr);
785 if ((ulAttr & (SFGAO_FOLDER | SFGAO_HASSUBFOLDER)) && (ulAttr & SFGAO_FILESYSANCESTOR))
787 hRes = IShellBrowser_BrowseObject(&
This->IShellBrowser_iface,pidl,SBSP_RELATIVE);
814 TRACE(
"(%p do=%p view=%p)\n",
This, fodInfos->
Shell.FOIDataObject, fodInfos->
Shell.FOIShellView);
817 if (fodInfos->
Shell.FOIDataObject)
818 IDataObject_Release(fodInfos->
Shell.FOIDataObject);
821 if(
FAILED(IShellView_GetItemObject(fodInfos->
Shell.FOIShellView, SVGIO_SELECTION,
846 case CDBOSC_SETFOCUS:
854 case CDBOSC_KILLFOCUS:
865 case CDBOSC_SELCHANGE:
884 if(!fodInfos)
return 0;
886 if(fodInfos->
DlgInfos.hwndCustomDlg)
888 TRACE(
"call notify CDN_INCLUDEITEM for pidl=%p\n", pidl);
892 ofnNotify.
psf = fodInfos->
Shell.FOIShellFolder;
903 ofnNotify.
psf = fodInfos->
Shell.FOIShellFolder;
912 TRACE(
"Retval: 0x%08lx\n", hook_result);
934 ulAttr = SFGAO_HIDDEN | SFGAO_FOLDER | SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR | SFGAO_LINK;
935 IShellFolder_GetAttributesOf(fodInfos->
Shell.FOIShellFolder, 1, &pidl, &ulAttr);
937 if( (ulAttr & SFGAO_HIDDEN) ||
938 !(ulAttr & (SFGAO_FILESYSTEM | SFGAO_FILESYSANCESTOR)))
942 if(ulAttr & (SFGAO_FOLDER | SFGAO_LINK))
1046 if(guidService &&
IsEqualIID(guidService, &SID_STopLevelBrowser))
1049 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)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
BOOL WINAPI PathMatchSpecW(LPCWSTR lpszPath, LPCWSTR lpszMask)
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(LPVOID 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::@344 DlgInfos
struct FileOpenDlgInfos::@343 ShellInfos
struct FileOpenDlgInfos::@342 Shell
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)
_In_ DWORD _Out_ _In_ WORD wFlags
HWND WINAPI GetFocus(void)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
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)