4 * Copyright 2009 Andrew Hill <ash77@reactos.org>
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 class CCommonBrowser
:
24 public CComCoClass
<CCommonBrowser
, &CLSID_CCommonBrowser
>,
25 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
27 public IBrowserService3
,
28 public IServiceProvider
,
29 public IOleCommandTarget
,
30 public IDockingWindowSite
,
31 public IDockingWindowFrame
,
32 public IInputObjectSite
,
34 public IShellBrowserService
41 // *** IServiceProvider methods ***
42 virtual HRESULT STDMETHODCALLTYPE
QueryService(REFGUID guidService
, REFIID riid
, void **ppvObject
);
44 // *** IOleCommandTarget methods ***
45 virtual HRESULT STDMETHODCALLTYPE
QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[ ], OLECMDTEXT
*pCmdText
);
46 virtual HRESULT STDMETHODCALLTYPE
Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
);
48 // *** IBrowserService methods ***
49 virtual HRESULT STDMETHODCALLTYPE
GetParentSite(IOleInPlaceSite
**ppipsite
);
50 virtual HRESULT STDMETHODCALLTYPE
SetTitle(IShellView
*psv
, LPCWSTR pszName
);
51 virtual HRESULT STDMETHODCALLTYPE
GetTitle(IShellView
*psv
, LPWSTR pszName
, DWORD cchName
);
52 virtual HRESULT STDMETHODCALLTYPE
GetOleObject(IOleObject
**ppobjv
);
53 virtual HRESULT STDMETHODCALLTYPE
GetTravelLog(ITravelLog
**pptl
);
54 virtual HRESULT STDMETHODCALLTYPE
ShowControlWindow(UINT id
, BOOL fShow
);
55 virtual HRESULT STDMETHODCALLTYPE
IsControlWindowShown(UINT id
, BOOL
*pfShown
);
56 virtual HRESULT STDMETHODCALLTYPE
IEGetDisplayName(LPCITEMIDLIST pidl
, LPWSTR pwszName
, UINT uFlags
);
57 virtual HRESULT STDMETHODCALLTYPE
IEParseDisplayName(UINT uiCP
, LPCWSTR pwszPath
, LPITEMIDLIST
*ppidlOut
);
58 virtual HRESULT STDMETHODCALLTYPE
DisplayParseError(HRESULT hres
, LPCWSTR pwszPath
);
59 virtual HRESULT STDMETHODCALLTYPE
NavigateToPidl(LPCITEMIDLIST pidl
, DWORD grfHLNF
);
60 virtual HRESULT STDMETHODCALLTYPE
SetNavigateState(BNSTATE bnstate
);
61 virtual HRESULT STDMETHODCALLTYPE
GetNavigateState(BNSTATE
*pbnstate
);
62 virtual HRESULT STDMETHODCALLTYPE
NotifyRedirect(IShellView
*psv
, LPCITEMIDLIST pidl
, BOOL
*pfDidBrowse
);
63 virtual HRESULT STDMETHODCALLTYPE
UpdateWindowList();
64 virtual HRESULT STDMETHODCALLTYPE
UpdateBackForwardState();
65 virtual HRESULT STDMETHODCALLTYPE
SetFlags(DWORD dwFlags
, DWORD dwFlagMask
);
66 virtual HRESULT STDMETHODCALLTYPE
GetFlags(DWORD
*pdwFlags
);
67 virtual HRESULT STDMETHODCALLTYPE
CanNavigateNow();
68 virtual HRESULT STDMETHODCALLTYPE
GetPidl(LPITEMIDLIST
*ppidl
);
69 virtual HRESULT STDMETHODCALLTYPE
SetReferrer(LPCITEMIDLIST pidl
);
70 virtual DWORD STDMETHODCALLTYPE
GetBrowserIndex();
71 virtual HRESULT STDMETHODCALLTYPE
GetBrowserByIndex(DWORD dwID
, IUnknown
**ppunk
);
72 virtual HRESULT STDMETHODCALLTYPE
GetHistoryObject(IOleObject
**ppole
, IStream
**pstm
, IBindCtx
**ppbc
);
73 virtual HRESULT STDMETHODCALLTYPE
SetHistoryObject(IOleObject
*pole
, BOOL fIsLocalAnchor
);
74 virtual HRESULT STDMETHODCALLTYPE
CacheOLEServer(IOleObject
*pole
);
75 virtual HRESULT STDMETHODCALLTYPE
GetSetCodePage(VARIANT
*pvarIn
, VARIANT
*pvarOut
);
76 virtual HRESULT STDMETHODCALLTYPE
OnHttpEquiv(IShellView
*psv
, BOOL fDone
, VARIANT
*pvarargIn
, VARIANT
*pvarargOut
);
77 virtual HRESULT STDMETHODCALLTYPE
GetPalette(HPALETTE
*hpal
);
78 virtual HRESULT STDMETHODCALLTYPE
RegisterWindow(BOOL fForceRegister
, int swc
);
80 // *** IBrowserService2 methods ***
81 virtual LRESULT STDMETHODCALLTYPE
WndProcBS(HWND hwnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
82 virtual HRESULT STDMETHODCALLTYPE
SetAsDefFolderSettings();
83 virtual HRESULT STDMETHODCALLTYPE
GetViewRect(RECT
*prc
);
84 virtual HRESULT STDMETHODCALLTYPE
OnSize(WPARAM wParam
);
85 virtual HRESULT STDMETHODCALLTYPE
OnCreate(struct tagCREATESTRUCTW
*pcs
);
86 virtual LRESULT STDMETHODCALLTYPE
OnCommand(WPARAM wParam
, LPARAM lParam
);
87 virtual HRESULT STDMETHODCALLTYPE
OnDestroy();
88 virtual LRESULT STDMETHODCALLTYPE
OnNotify(struct tagNMHDR
*pnm
);
89 virtual HRESULT STDMETHODCALLTYPE
OnSetFocus();
90 virtual HRESULT STDMETHODCALLTYPE
OnFrameWindowActivateBS(BOOL fActive
);
91 virtual HRESULT STDMETHODCALLTYPE
ReleaseShellView();
92 virtual HRESULT STDMETHODCALLTYPE
ActivatePendingView();
93 virtual HRESULT STDMETHODCALLTYPE
CreateViewWindow(IShellView
*psvNew
, IShellView
*psvOld
, LPRECT prcView
, HWND
*phwnd
);
94 virtual HRESULT STDMETHODCALLTYPE
CreateBrowserPropSheetExt(REFIID riid
, void **ppv
);
95 virtual HRESULT STDMETHODCALLTYPE
GetViewWindow(HWND
*phwndView
);
96 virtual HRESULT STDMETHODCALLTYPE
GetBaseBrowserData(LPCBASEBROWSERDATA
*pbbd
);
97 virtual LPBASEBROWSERDATA STDMETHODCALLTYPE
PutBaseBrowserData();
98 virtual HRESULT STDMETHODCALLTYPE
InitializeTravelLog(ITravelLog
*ptl
, DWORD dw
);
99 virtual HRESULT STDMETHODCALLTYPE
SetTopBrowser();
100 virtual HRESULT STDMETHODCALLTYPE
Offline(int iCmd
);
101 virtual HRESULT STDMETHODCALLTYPE
AllowViewResize(BOOL f
);
102 virtual HRESULT STDMETHODCALLTYPE
SetActivateState(UINT u
);
103 virtual HRESULT STDMETHODCALLTYPE
UpdateSecureLockIcon(int eSecureLock
);
104 virtual HRESULT STDMETHODCALLTYPE
InitializeDownloadManager();
105 virtual HRESULT STDMETHODCALLTYPE
InitializeTransitionSite();
106 virtual HRESULT STDMETHODCALLTYPE
_Initialize(HWND hwnd
, IUnknown
*pauto
);
107 virtual HRESULT STDMETHODCALLTYPE
_CancelPendingNavigationAsync();
108 virtual HRESULT STDMETHODCALLTYPE
_CancelPendingView();
109 virtual HRESULT STDMETHODCALLTYPE
_MaySaveChanges();
110 virtual HRESULT STDMETHODCALLTYPE
_PauseOrResumeView(BOOL fPaused
);
111 virtual HRESULT STDMETHODCALLTYPE
_DisableModeless();
112 virtual HRESULT STDMETHODCALLTYPE
_NavigateToPidl(LPCITEMIDLIST pidl
, DWORD grfHLNF
, DWORD dwFlags
);
113 virtual HRESULT STDMETHODCALLTYPE
_TryShell2Rename(IShellView
*psv
, LPCITEMIDLIST pidlNew
);
114 virtual HRESULT STDMETHODCALLTYPE
_SwitchActivationNow();
115 virtual HRESULT STDMETHODCALLTYPE
_ExecChildren(IUnknown
*punkBar
, BOOL fBroadcast
, const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANTARG
*pvarargIn
, VARIANTARG
*pvarargOut
);
116 virtual HRESULT STDMETHODCALLTYPE
_SendChildren(HWND hwndBar
, BOOL fBroadcast
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
117 virtual HRESULT STDMETHODCALLTYPE
GetFolderSetData(struct tagFolderSetData
*pfsd
);
118 virtual HRESULT STDMETHODCALLTYPE
_OnFocusChange(UINT itb
);
119 virtual HRESULT STDMETHODCALLTYPE
v_ShowHideChildWindows(BOOL fChildOnly
);
120 virtual UINT STDMETHODCALLTYPE
_get_itbLastFocus();
121 virtual HRESULT STDMETHODCALLTYPE
_put_itbLastFocus(UINT itbLastFocus
);
122 virtual HRESULT STDMETHODCALLTYPE
_UIActivateView(UINT uState
);
123 virtual HRESULT STDMETHODCALLTYPE
_GetViewBorderRect(RECT
*prc
);
124 virtual HRESULT STDMETHODCALLTYPE
_UpdateViewRectSize();
125 virtual HRESULT STDMETHODCALLTYPE
_ResizeNextBorder(UINT itb
);
126 virtual HRESULT STDMETHODCALLTYPE
_ResizeView();
127 virtual HRESULT STDMETHODCALLTYPE
_GetEffectiveClientArea(LPRECT lprectBorder
, HMONITOR hmon
);
128 virtual IStream
*STDMETHODCALLTYPE
v_GetViewStream(LPCITEMIDLIST pidl
, DWORD grfMode
, LPCWSTR pwszName
);
129 virtual LRESULT STDMETHODCALLTYPE
ForwardViewMsg(UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
130 virtual HRESULT STDMETHODCALLTYPE
SetAcceleratorMenu(HACCEL hacc
);
131 virtual int STDMETHODCALLTYPE
_GetToolbarCount();
132 virtual LPTOOLBARITEM STDMETHODCALLTYPE
_GetToolbarItem(int itb
);
133 virtual HRESULT STDMETHODCALLTYPE
_SaveToolbars(IStream
*pstm
);
134 virtual HRESULT STDMETHODCALLTYPE
_LoadToolbars(IStream
*pstm
);
135 virtual HRESULT STDMETHODCALLTYPE
_CloseAndReleaseToolbars(BOOL fClose
);
136 virtual HRESULT STDMETHODCALLTYPE
v_MayGetNextToolbarFocus(LPMSG lpMsg
, UINT itbNext
, int citb
, LPTOOLBARITEM
*pptbi
, HWND
*phwnd
);
137 virtual HRESULT STDMETHODCALLTYPE
_ResizeNextBorderHelper(UINT itb
, BOOL bUseHmonitor
);
138 virtual UINT STDMETHODCALLTYPE
_FindTBar(IUnknown
*punkSrc
);
139 virtual HRESULT STDMETHODCALLTYPE
_SetFocus(LPTOOLBARITEM ptbi
, HWND hwnd
, LPMSG lpMsg
);
140 virtual HRESULT STDMETHODCALLTYPE
v_MayTranslateAccelerator(MSG
*pmsg
);
141 virtual HRESULT STDMETHODCALLTYPE
_GetBorderDWHelper(IUnknown
*punkSrc
, LPRECT lprectBorder
, BOOL bUseHmonitor
);
142 virtual HRESULT STDMETHODCALLTYPE
v_CheckZoneCrossing(LPCITEMIDLIST pidl
);
144 // *** IBrowserService3 methods ***
145 virtual HRESULT STDMETHODCALLTYPE
_PositionViewWindow(HWND
, RECT
*);
146 virtual HRESULT STDMETHODCALLTYPE
IEParseDisplayNameEx(UINT
, PCWSTR
, DWORD
, LPITEMIDLIST
*);
148 // *** IShellBrowser methods ***
149 virtual HRESULT STDMETHODCALLTYPE
InsertMenusSB(HMENU hmenuShared
, LPOLEMENUGROUPWIDTHS lpMenuWidths
);
150 virtual HRESULT STDMETHODCALLTYPE
SetMenuSB(HMENU hmenuShared
, HOLEMENU holemenuRes
, HWND hwndActiveObject
);
151 virtual HRESULT STDMETHODCALLTYPE
RemoveMenusSB(HMENU hmenuShared
);
152 virtual HRESULT STDMETHODCALLTYPE
SetStatusTextSB(LPCOLESTR pszStatusText
);
153 virtual HRESULT STDMETHODCALLTYPE
EnableModelessSB(BOOL fEnable
);
154 virtual HRESULT STDMETHODCALLTYPE
TranslateAcceleratorSB(MSG
*pmsg
, WORD wID
);
155 virtual HRESULT STDMETHODCALLTYPE
BrowseObject(LPCITEMIDLIST pidl
, UINT wFlags
);
156 virtual HRESULT STDMETHODCALLTYPE
GetViewStateStream(DWORD grfMode
, IStream
**ppStrm
);
157 virtual HRESULT STDMETHODCALLTYPE
GetControlWindow(UINT id
, HWND
*lphwnd
);
158 virtual HRESULT STDMETHODCALLTYPE
SendControlMsg(UINT id
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*pret
);
159 virtual HRESULT STDMETHODCALLTYPE
QueryActiveShellView(struct IShellView
**ppshv
);
160 virtual HRESULT STDMETHODCALLTYPE
OnViewWindowActive(struct IShellView
*ppshv
);
161 virtual HRESULT STDMETHODCALLTYPE
SetToolbarItems(LPTBBUTTON lpButtons
, UINT nButtons
, UINT uFlags
);
163 // *** IShellBowserService methods ***
164 virtual HRESULT STDMETHODCALLTYPE
GetPropertyBag(long flags
, REFIID riid
, void **ppvObject
);
166 // *** IOleWindow methods ***
167 virtual HRESULT STDMETHODCALLTYPE
GetWindow(HWND
*lphwnd
);
168 virtual HRESULT STDMETHODCALLTYPE
ContextSensitiveHelp(BOOL fEnterMode
);
170 // *** IDockingWindowSite methods ***
171 virtual HRESULT STDMETHODCALLTYPE
GetBorderDW(IUnknown
* punkObj
, LPRECT prcBorder
);
172 virtual HRESULT STDMETHODCALLTYPE
RequestBorderSpaceDW(IUnknown
* punkObj
, LPCBORDERWIDTHS pbw
);
173 virtual HRESULT STDMETHODCALLTYPE
SetBorderSpaceDW(IUnknown
* punkObj
, LPCBORDERWIDTHS pbw
);
175 // *** IDockingWindowFrame methods ***
176 virtual HRESULT STDMETHODCALLTYPE
AddToolbar(IUnknown
*punkSrc
, LPCWSTR pwszItem
, DWORD dwAddFlags
);
177 virtual HRESULT STDMETHODCALLTYPE
RemoveToolbar(IUnknown
*punkSrc
, DWORD dwRemoveFlags
);
178 virtual HRESULT STDMETHODCALLTYPE
FindToolbar(LPCWSTR pwszItem
, REFIID riid
, void **ppv
);
180 // *** IInputObjectSite specific methods ***
181 virtual HRESULT STDMETHODCALLTYPE
OnFocusChangeIS(IUnknown
*punkObj
, BOOL fSetFocus
);
183 // *** IDropTarget methods ***
184 virtual HRESULT STDMETHODCALLTYPE
DragEnter(IDataObject
*pDataObj
, DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
);
185 virtual HRESULT STDMETHODCALLTYPE
DragOver(DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
);
186 virtual HRESULT STDMETHODCALLTYPE
DragLeave();
187 virtual HRESULT STDMETHODCALLTYPE
Drop(IDataObject
*pDataObj
, DWORD grfKeyState
, POINTL pt
, DWORD
*pdwEffect
);
189 DECLARE_REGISTRY_RESOURCEID(IDR_COMMONBROWSER
)
190 DECLARE_NOT_AGGREGATABLE(CCommonBrowser
)
192 DECLARE_PROTECT_FINAL_CONSTRUCT()
194 BEGIN_COM_MAP(CCommonBrowser
)
195 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider
, IServiceProvider
)
196 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget
, IOleCommandTarget
)
197 COM_INTERFACE_ENTRY_IID(IID_IBrowserService
, IBrowserService
)
198 COM_INTERFACE_ENTRY_IID(IID_IBrowserService2
, IBrowserService2
)
199 COM_INTERFACE_ENTRY_IID(IID_IBrowserService3
, IBrowserService3
)
200 COM_INTERFACE_ENTRY_IID(IID_IShellBrowser
, IShellBrowser
)
201 COM_INTERFACE_ENTRY_IID(IID_IShellBrowserService
, IShellBrowserService
)
202 COM_INTERFACE_ENTRY2_IID(IID_IOleWindow
, IOleWindow
, IDockingWindowSite
)
203 COM_INTERFACE_ENTRY_IID(IID_IDockingWindowSite
, IDockingWindowSite
)
204 COM_INTERFACE_ENTRY_IID(IID_IDockingWindowFrame
, IDockingWindowFrame
)
205 COM_INTERFACE_ENTRY_IID(IID_IInputObjectSite
, IInputObjectSite
)
206 COM_INTERFACE_ENTRY_IID(IID_IDropTarget
, IDropTarget
)