/* * Implementation of IShellBrowser for the File Open common dialog * * */ #ifndef SHBROWSER_H #define SHBROWSER_H TRUE #include "shlobj.h" #include "winbase.h" #include "objbase.h" #include "commdlg.h" /*********************************************************************** * Defines and global variables */ #define _ICOM_THIS_FromICommDlgBrowser(Class,name) Class* This = (Class*) (((char*)name)-sizeof(void *)) /* dialog internal property */ #define FODPROP_SAVEDLG 0x0001 /* File dialog is a Save file dialog */ #define FODPROP_USEVIEW 0x0002 /* Indicates the user selection must be taken from the IShellView */ /*********************************************************************** * Data structure */ typedef struct { ICOM_VTABLE(IShellBrowser)* lpVtbl; /* IShellBrowser VTable */ ICOM_VTABLE(ICommDlgBrowser)* lpVtbl2; /* ICommDlgBrowser VTable */ DWORD ref; /* Reference counter */ HWND hwndOwner; /* Owner dialog of the interface */ } IShellBrowserImpl; typedef struct { OPENFILENAMEA ofnInfos; struct { IShellBrowser *FOIShellBrowser; IShellFolder *FOIShellFolder; IShellView *FOIShellView; } Shell; struct { HWND hwndOwner; HWND hwndView; RECT rectView; FOLDERSETTINGS folderSettings; LPITEMIDLIST pidlAbsCurrent; LPWSTR lpstrCurrentFilter; } ShellInfos; struct { HWND hwndFileTypeCB; HWND hwndLookInCB; HWND hwndFileName; DWORD dwDlgProp; } DlgInfos; } FileOpenDlgInfos; /*********************************************************************** * Prototypes for the methods of the IShellBrowserImpl class */ /* Constructor */ IShellBrowser * IShellBrowserImpl_Construct(HWND hwndOwner); /* IUnknown */ HRESULT WINAPI IShellBrowserImpl_QueryInterface(IShellBrowser *iface, REFIID riid, LPVOID *ppvObj); ULONG WINAPI IShellBrowserImpl_AddRef(IShellBrowser * iface); ULONG WINAPI IShellBrowserImpl_Release(IShellBrowser * iface); /* IOleWindow */ HRESULT WINAPI IShellBrowserImpl_GetWindow(IShellBrowser * iface, HWND * phwnd); HRESULT WINAPI IShellBrowserImpl_ContextSensitiveHelp(IShellBrowser * iface, BOOL fEnterMode); /* IShellBrowser */ HRESULT WINAPI IShellBrowserImpl_BrowseObject(IShellBrowser *iface, LPCITEMIDLIST pidl, UINT wFlags); HRESULT WINAPI IShellBrowserImpl_EnableModelessSB(IShellBrowser *iface, BOOL fEnable); HRESULT WINAPI IShellBrowserImpl_GetControlWindow(IShellBrowser *iface, UINT id, HWND *lphwnd); HRESULT WINAPI IShellBrowserImpl_GetViewStateStream(IShellBrowser *iface, DWORD grfMode, LPSTREAM *ppStrm); HRESULT WINAPI IShellBrowserImpl_InsertMenusSB(IShellBrowser *iface, HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths); HRESULT WINAPI IShellBrowserImpl_OnViewWindowActive(IShellBrowser *iface, IShellView *ppshv); HRESULT WINAPI IShellBrowserImpl_QueryActiveShellView(IShellBrowser *iface, IShellView **ppshv); HRESULT WINAPI IShellBrowserImpl_RemoveMenusSB(IShellBrowser *iface, HMENU hmenuShared); HRESULT WINAPI IShellBrowserImpl_SendControlMsg(IShellBrowser *iface, UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret); HRESULT WINAPI IShellBrowserImpl_SetMenuSB(IShellBrowser *iface, HMENU hmenuShared, HOLEMENU holemenuReserved, HWND hwndActiveObject); HRESULT WINAPI IShellBrowserImpl_SetStatusTextSB(IShellBrowser *iface, LPCOLESTR lpszStatusText); HRESULT WINAPI IShellBrowserImpl_SetToolbarItems(IShellBrowser *iface, LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags); HRESULT WINAPI IShellBrowserImpl_TranslateAcceleratorSB(IShellBrowser *iface, LPMSG lpmsg, WORD wID); /* ICommDlgBrowser */ HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_QueryInterface(ICommDlgBrowser *iface, REFIID riid, LPVOID *ppvObj); ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_AddRef(ICommDlgBrowser * iface); ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_Release(ICommDlgBrowser * iface); HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand(ICommDlgBrowser *iface, IShellView *ppshv); HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnStateChange(ICommDlgBrowser *iface, IShellView *ppshv, ULONG uChange); HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBrowser *iface, IShellView * ppshv, LPCITEMIDLIST pidl); LPITEMIDLIST GetSelectedPidl(IShellView *ppshv); #endif /*SHBROWSER_H*/