27 #define NONAMELESSUNION 36 #define NO_SHLWAPI_STREAM 87 #define add_flag(a) if (flags & a) {strcat(str, #a );strcat(str," ");} 97 #define FE(x) { x, #x} 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;
140 res = IShellFolder_GetDisplayNameOf(psfDesktop, fodInfos->
ShellInfos.pidlAbsCurrent,
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))
954 if (
SUCCEEDED(IShellFolder_GetDisplayNameOf(fodInfos->
Shell.FOIShellFolder, pidl, SHGDN_INFOLDER | SHGDN_FORPARSING, &
str)))
1046 if(guidService &&
IsEqualIID(guidService, &SID_STopLevelBrowser))
1049 FIXME(
"(%p) unknown interface requested\n",
This);
IShellBrowser IShellBrowser_iface
static HRESULT WINAPI IShellBrowserImpl_SetToolbarItems(IShellBrowser *iface, LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags)
static HRESULT WINAPI IShellBrowserImpl_SendControlMsg(IShellBrowser *iface, UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret)
void WINAPI ILFree(LPITEMIDLIST pidl)
DECLSPEC_HIDDEN HINSTANCE COMDLG32_hInstance
VOID WINAPI CoTaskMemFree(LPVOID ptr)
static HRESULT WINAPI IShellBrowserImpl_GetControlWindow(IShellBrowser *iface, UINT id, HWND *lphwnd)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
WINE_DEFAULT_DEBUG_CHANNEL(commdlg)
static HRESULT WINAPI IShellBrowserImpl_QueryInterface(IShellBrowser *iface, REFIID riid, void **ppvObj)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPITEMIDLIST GetPidlFromDataObject(IDataObject *doSelected, UINT nPidlIndex)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
struct FileOpenDlgInfos::@330 ShellInfos
HWND WINAPI SetFocus(_In_opt_ HWND)
const GUID IID_IDataObject
interface IStream * LPSTREAM
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
static HRESULT WINAPI IShellBrowserImpl_GetViewStateStream(IShellBrowser *iface, DWORD grfMode, LPSTREAM *ppStrm)
static const IShellBrowserVtbl IShellBrowserImpl_Vtbl
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
static void * heap_alloc(size_t len)
static void COMDLG32_UpdateCurrentDir(const FileOpenDlgInfos *fodInfos)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
static HRESULT WINAPI IShellBrowserImpl_BrowseObject(IShellBrowser *iface, LPCITEMIDLIST pidl, UINT wFlags)
static ULONG WINAPI IShellBrowserImpl_Release(IShellBrowser *iface)
static HRESULT IShellBrowserImpl_OnSelChange(IShellBrowserImpl *This, const IShellView *ppshv)
LPITEMIDLIST GetParentPidl(LPITEMIDLIST pidl)
static ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_Release(ICommDlgBrowser *iface)
static ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_AddRef(ICommDlgBrowser *iface)
Implementation of IShellBrowser and ICommDlgBrowser interfaces for explorer child windows (see ShellB...
static IShellBrowserImpl * impl_from_IShellBrowser(IShellBrowser *iface)
int FILEDLG95_LOOKIN_SelectItem(HWND hwnd, LPITEMIDLIST pidl)
static HRESULT WINAPI IShellBrowserImpl_SetStatusTextSB(IShellBrowser *iface, LPCOLESTR lpszStatusText)
static ULONG WINAPI IShellBrowserImpl_AddRef(IShellBrowser *iface)
static HRESULT WINAPI IShellBrowserImpl_OnViewWindowActive(IShellBrowser *iface, IShellView *ppshv)
static HRESULT WINAPI IShellBrowserImpl_EnableModelessSB(IShellBrowser *iface, BOOL fEnable)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner)
static HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser *iface, IShellView *ppshv, LPCITEMIDLIST pidl)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
EXTERN_C HRESULT DoUpdateAutoCompleteWithCWD(const FileOpenDlgInfos *info, LPCITEMIDLIST pidl)
struct FileOpenDlgInfos::@331 DlgInfos
static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_QueryInterface(ICommDlgBrowser *iface, REFIID riid, LPVOID *ppvObj)
static const IServiceProviderVtbl IShellBrowserImpl_IServiceProvider_Vtbl
static HRESULT WINAPI IShellBrowserImpl_GetWindow(IShellBrowser *iface, HWND *phwnd)
static HRESULT WINAPI IShellBrowserImpl_QueryActiveShellView(IShellBrowser *iface, IShellView **ppshv)
static HRESULT WINAPI IShellBrowserImpl_RemoveMenusSB(IShellBrowser *iface, HMENU hmenuShared)
struct FileOpenDlgInfos::@329 Shell
static IShellBrowserImpl * impl_from_IServiceProvider(IServiceProvider *iface)
static LRESULT send_includeitem_notification(HWND hwndParentDlg, LPCITEMIDLIST pidl)
void FILEDLG95_FILENAME_FillFromSelection(HWND hwnd)
#define InterlockedDecrement
IServiceProvider IServiceProvider_iface
static ULONG WINAPI IShellBrowserImpl_IServiceProvider_Release(IServiceProvider *iface)
static BOOL COMDLG32_StrRetToStrNW(LPVOID dest, DWORD len, LPSTRRET src, LPCITEMIDLIST pidl)
static HRESULT WINAPI IShellBrowserImpl_InsertMenusSB(IShellBrowser *iface, HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
ICommDlgBrowser ICommDlgBrowser_iface
static IShellBrowserImpl * impl_from_ICommDlgBrowser(ICommDlgBrowser *iface)
_In_ DWORD _Out_ _In_ WORD wFlags
HWND WINAPI GetParent(_In_ HWND)
#define InterlockedIncrement
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
LRESULT SendCustomDlgNotificationMessage(HWND hwndParentDlg, UINT uCode)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define OFN_ENABLEINCLUDENOTIFY
static void COMDLG32_DumpSBSPFlags(UINT uflags)
#define MultiByteToWideChar
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
HWND WINAPI GetFocus(void)
BOOL WINAPI PathMatchSpecW(LPCWSTR lpszPath, LPCWSTR lpszMask)
LRESULT WINAPI SendDlgItemMessageA(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
const GUID IID_IOleWindow
IShellFolder * GetShellFolderFromPidl(LPITEMIDLIST pidlAbs)
static ULONG WINAPI IShellBrowserImpl_IServiceProvider_AddRef(IServiceProvider *iface)
static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnStateChange(ICommDlgBrowser *iface, IShellView *ppshv, ULONG uChange)
static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand(ICommDlgBrowser *iface, IShellView *ppshv)
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)
#define SetWindowLongPtrW
ITEMIDLIST UNALIGNED * LPITEMIDLIST
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static const ICommDlgBrowserVtbl IShellBrowserImpl_ICommDlgBrowser_Vtbl
struct tagOFNA * LPOPENFILENAMEA
#define IsEqualIID(riid1, riid2)
static HRESULT WINAPI IShellBrowserImpl_TranslateAcceleratorSB(IShellBrowser *iface, LPMSG lpmsg, WORD wID)
static HRESULT WINAPI IShellBrowserImpl_SetMenuSB(IShellBrowser *iface, HMENU hmenuShared, HOLEMENU holemenuReserved, HWND hwndActiveObject)
FileOpenDlgInfos * get_filedlg_infoptr(HWND hwnd)
static HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, LPVOID *ppvObj)
static BOOL heap_free(void *mem)
static HRESULT WINAPI IShellBrowserImpl_ContextSensitiveHelp(IShellBrowser *iface, BOOL fEnterMode)
GLuint const GLchar * name