ReactOS 0.4.15-dev-8434-g155a7c7
CDesktopBrowser Class Reference
Inheritance diagram for CDesktopBrowser:
Collaboration diagram for CDesktopBrowser:

Public Member Functions

 CDesktopBrowser ()
 
 ~CDesktopBrowser ()
 
HRESULT Initialize (IShellDesktopTray *ShellDeskx)
 
STDMETHOD() GetWindow (HWND *lphwnd) override
 
STDMETHOD() ContextSensitiveHelp (BOOL fEnterMode) override
 
STDMETHOD() InsertMenusSB (HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) override
 
STDMETHOD() SetMenuSB (HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject) override
 
STDMETHOD() RemoveMenusSB (HMENU hmenuShared) override
 
STDMETHOD() SetStatusTextSB (LPCOLESTR pszStatusText) override
 
STDMETHOD() EnableModelessSB (BOOL fEnable) override
 
STDMETHOD() TranslateAcceleratorSB (MSG *pmsg, WORD wID) override
 
STDMETHOD() BrowseObject (LPCITEMIDLIST pidl, UINT wFlags) override
 
STDMETHOD() GetViewStateStream (DWORD grfMode, IStream **ppStrm) override
 
STDMETHOD() GetControlWindow (UINT id, HWND *lphwnd) override
 
STDMETHOD() SendControlMsg (UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret) override
 
STDMETHOD() QueryActiveShellView (struct IShellView **ppshv) override
 
STDMETHOD() OnViewWindowActive (struct IShellView *ppshv) override
 
STDMETHOD() SetToolbarItems (LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags) override
 
STDMETHOD() GetPropertyBag (long flags, REFIID riid, void **ppv) override
 
void SetTopBrowser () const
 
STDMETHOD() QueryService (REFGUID guidService, REFIID riid, void **ppvObject) override
 
LRESULT OnEraseBkgnd (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSize (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSettingChange (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnClose (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnOpenNewWindow (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnCommand (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSetFocus (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnGetChangeNotifyServer (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnDeviceChange (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnShowOptionsDlg (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
LRESULT OnSaveState (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
- Public Member Functions inherited from IShellBrowser
HRESULT InsertMenusSB ([in] HMENU hmenuShared, [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths)
 
HRESULT SetMenuSB ([in] HMENU hmenuShared, [in] HOLEMENU holemenuReserved, [in] HWND hwndActiveObject)
 
HRESULT RemoveMenusSB ([in] HMENU hmenuShared)
 
HRESULT SetStatusTextSB ([in, unique] LPCOLESTR pszStatusText)
 
HRESULT EnableModelessSB ([in] BOOL fEnable)
 
HRESULT TranslateAcceleratorSB ([in] MSG *pmsg, [in] WORD wID)
 
HRESULT BrowseObject ([in] PCUIDLIST_RELATIVE pidl, [in] UINT wFlags)
 
HRESULT GetViewStateStream ([in] DWORD grfMode, [out] IStream **ppStrm)
 
HRESULT GetControlWindow ([in] UINT id, [out] HWND *phwnd)
 
HRESULT SendControlMsg ([in] UINT id, [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam, [in] LRESULT *pret)
 
HRESULT QueryActiveShellView ([out] IShellView **ppshv)
 
HRESULT OnViewWindowActive ([in] IShellView *pshv)
 
HRESULT SetToolbarItems ([in] LPTBBUTTONSB lpButtons, [in] UINT nButtons, [in] UINT uFlags)
 
HRESULT GetWindow ([out] HWND *phwnd)
 
HRESULT ContextSensitiveHelp ([in] BOOL fEnterMode)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
- Public Member Functions inherited from IServiceProvider
HRESULT QueryService ([in] REFGUID guidService, [in] REFIID riid, [out] void **ppvObject)
 
HRESULT RemoteQueryService ([in] REFGUID guidService, [in] REFIID riid, [out, iid_is(riid)] IUnknown **ppvObject)
 

Private Member Functions

LRESULT _NotifyTray (UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HRESULT _Resize ()
 

Private Attributes

HACCEL m_hAccel
 
HWND m_hWndShellView
 
CComPtr< IShellDesktopTray > m_Tray
 
CComPtr< IShellViewm_ShellView
 
CComPtr< IOleWindowm_ChangeNotifyServer
 
HWND m_hwndChangeNotifyServer
 
DWORD m_dwDrives
 

Additional Inherited Members

- Public Types inherited from IShellBrowser
typedef IShellBrowserLPSHELLBROWSER
 
typedef LPARAM LPTBBUTTONSB
 
typedef LPTBBUTTON LPTBBUTTONSB
 
- Public Types inherited from IOleWindow
typedef IOleWindowLPOLEWINDOW
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IServiceProvider
typedef IServiceProviderLPSERVICEPROVIDER
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 36 of file CDesktopBrowser.cpp.

Constructor & Destructor Documentation

◆ CDesktopBrowser()

CDesktopBrowser::CDesktopBrowser ( )

Definition at line 127 of file CDesktopBrowser.cpp.

127 :
128 m_hAccel(NULL),
132{
134}
void SetTopBrowser() const
#define NULL
Definition: types.h:112
DWORD WINAPI GetLogicalDrives(void)
Definition: disk.c:110

◆ ~CDesktopBrowser()

CDesktopBrowser::~CDesktopBrowser ( )

Definition at line 136 of file CDesktopBrowser.cpp.

137{
139 {
140 m_ShellView->DestroyViewWindow();
141 }
142
144 {
146 }
147}
CComPtr< IShellView > m_ShellView
BOOL WINAPI DestroyWindow(_In_ HWND)

Member Function Documentation

◆ _NotifyTray()

LRESULT CDesktopBrowser::_NotifyTray ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
private

Definition at line 373 of file CDesktopBrowser.cpp.

374{
375 HWND hWndTray;
376 HRESULT hRet;
377
378 hRet = m_Tray->GetTrayWindow(&hWndTray);
379 if (SUCCEEDED(hRet))
380 ::PostMessageW(hWndTray, uMsg, wParam, lParam);
381
382 return 0;
383}
CComPtr< IShellDesktopTray > m_Tray
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define SUCCEEDED(hr)
Definition: intsafe.h:50
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by OnClose(), OnCommand(), and OnShowOptionsDlg().

◆ _Resize()

HRESULT CDesktopBrowser::_Resize ( )
private

Definition at line 169 of file CDesktopBrowser.cpp.

170{
171 RECT rcNewSize;
172
173#ifdef MULTIMONITOR_SUPPORT
174
176 if (cMonitors == 1)
177 {
178 SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcNewSize, 0);
179 }
180 else
181 {
182 SetRect(&rcNewSize,
187 }
188
189 ::MoveWindow(m_hWnd, rcNewSize.left, rcNewSize.top, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
190 ::MoveWindow(m_hWndShellView, 0, 0, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
191
192 if (cMonitors != 1)
193 {
194 CAtlList<RECT> list;
196 RECT* prcWorkAreas = new RECT[list.GetCount()];
197 int i = 0;
198 for (POSITION it = list.GetHeadPosition(); it; list.GetNext(it))
199 prcWorkAreas[i++] = list.GetAt(it);
200
202
204 }
205
206#else
207 SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcNewSize, 0);
208 ::MoveWindow(m_hWnd, rcNewSize.left, rcNewSize.top, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
209 ::MoveWindow(m_hWndShellView, 0, 0, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
210
211#endif
212 return S_OK;
213}
Definition: list.h:37
#define TRUE
Definition: types.h:120
HWND hwndListView
Definition: eventvwr.c:66
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
Definition: glfuncs.h:248
#define S_OK
Definition: intsafe.h:52
unsigned int UINT
Definition: ndis.h:50
#define LVM_SETWORKAREAS
Definition: commctrl.h:2782
#define WC_LISTVIEW
Definition: commctrl.h:2259
#define list
Definition: rosglue.h:35
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, RECT *rcMonitor, LPARAM Param)
Definition: screensave.c:33
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
LONG_PTR LPARAM
Definition: windef.h:208
#define SM_CYVIRTUALSCREEN
Definition: winuser.h:1039
BOOL WINAPI EnumDisplayMonitors(_In_opt_ HDC, _In_opt_ LPCRECT, _In_ MONITORENUMPROC, _In_ LPARAM)
#define SM_CXVIRTUALSCREEN
Definition: winuser.h:1038
HWND WINAPI FindWindowExW(_In_opt_ HWND, _In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define SM_XVIRTUALSCREEN
Definition: winuser.h:1036
#define SM_CMONITORS
Definition: winuser.h:1040
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SM_YVIRTUALSCREEN
Definition: winuser.h:1037
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)

Referenced by Initialize(), and OnSettingChange().

◆ BrowseObject()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::BrowseObject ( LPCITEMIDLIST  pidl,
UINT  wFlags 
)
override

Definition at line 310 of file CDesktopBrowser.cpp.

311{
312 /*
313 * We should use IShellWindows interface here in order to attempt to
314 * find an open shell window that shows the requested pidl and activate it
315 */
316
317 DWORD dwFlags = ((wFlags & SBSP_EXPLOREMODE) != 0) ? SH_EXPLORER_CMDLINE_FLAG_E : 0;
318 return SHOpenNewFrame(ILClone(pidl), NULL, 0, dwFlags);
319}
#define SH_EXPLORER_CMDLINE_FLAG_E
HRESULT WINAPI SHOpenNewFrame(LPITEMIDLIST pidl, IUnknown *paramC, long param10, DWORD dwFlags)
Definition: desktopipc.cpp:591
unsigned long DWORD
Definition: ntddk_ex.h:95
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:237
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176

◆ ContextSensitiveHelp()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::ContextSensitiveHelp ( BOOL  fEnterMode)
override

Implements IOleWindow.

Definition at line 273 of file CDesktopBrowser.cpp.

274{
275 return E_NOTIMPL;
276}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ EnableModelessSB()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::EnableModelessSB ( BOOL  fEnable)
override

Implements IShellBrowser.

Definition at line 298 of file CDesktopBrowser.cpp.

299{
300 return E_NOTIMPL;
301}

◆ GetControlWindow()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::GetControlWindow ( UINT  id,
HWND lphwnd 
)
override

Implements IShellBrowser.

Definition at line 326 of file CDesktopBrowser.cpp.

327{
328 if (lphwnd == NULL)
329 return E_POINTER;
330 return E_NOTIMPL;
331}
#define E_POINTER
Definition: winerror.h:2365

◆ GetPropertyBag()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::GetPropertyBag ( long  flags,
REFIID  riid,
void **  ppv 
)
override

Definition at line 361 of file CDesktopBrowser.cpp.

362{
363 ITEMIDLIST deskpidl = {};
364 return SHGetViewStatePropertyBag(&deskpidl, L"Desktop", flags | SHGVSPB_ROAM, riid, ppv);
365}
HRESULT WINAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl, LPWSTR bag_name, DWORD flags, REFIID riid, void **ppv)
Definition: ordinal.c:5206
GLbitfield flags
Definition: glext.h:7161
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define L(x)
Definition: ntvdm.h:50

◆ GetViewStateStream()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::GetViewStateStream ( DWORD  grfMode,
IStream **  ppStrm 
)
override

Implements IShellBrowser.

Definition at line 321 of file CDesktopBrowser.cpp.

322{
323 return E_NOTIMPL;
324}

◆ GetWindow()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::GetWindow ( HWND lphwnd)
override

Implements IOleWindow.

Definition at line 265 of file CDesktopBrowser.cpp.

266{
267 if (lphwnd == NULL)
268 return E_POINTER;
269 *lphwnd = m_hWnd;
270 return S_OK;
271}

◆ Initialize()

HRESULT CDesktopBrowser::Initialize ( IShellDesktopTray *  ShellDeskx)

Definition at line 215 of file CDesktopBrowser.cpp.

216{
217 CComPtr<IShellFolder> psfDesktop;
218 HRESULT hRet;
219 hRet = SHGetDesktopFolder(&psfDesktop);
220 if (FAILED_UNEXPECTEDLY(hRet))
221 return hRet;
222
223 m_Tray = ShellDesk;
224
226 if (!m_hWnd)
227 return E_FAIL;
228
229 CSFV csfv = {sizeof(CSFV), psfDesktop};
231 if (FAILED_UNEXPECTEDLY(hRet))
232 return hRet;
233
234 m_Tray->RegisterDesktopWindow(m_hWnd);
235 if (FAILED_UNEXPECTEDLY(hRet))
236 return hRet;
237
238 BOOL fHideIcons = SHELL_GetSetting(SSF_HIDEICONS, fHideIcons);
240 RECT rcShellView = {0,0,0,0};
241 fs.ViewMode = FVM_ICON;
243 FWF_AUTOARRANGE | (fHideIcons ? FWF_NOICONS : 0);
244 hRet = m_ShellView->CreateViewWindow(NULL, &fs, (IShellBrowser *)this, &rcShellView, &m_hWndShellView);
245 if (FAILED_UNEXPECTEDLY(hRet))
246 return hRet;
247
248 _Resize();
249
251
253
254#if 1
255 /* A Windows8+ specific hack */
258#endif
260 UpdateWindow();
261
262 return hRet;
263}
HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV psvcbi, IShellView **ppsv)
Definition: CDefView.cpp:4616
static const WCHAR szProgmanWindowName[]
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define shell32_hInstance
@ Create
Definition: registry.c:563
#define E_FAIL
Definition: ddrawi.h:102
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
unsigned int BOOL
Definition: ntddk_ex.h:94
#define fs
Definition: i386-dis.c:444
#define WS_POPUP
Definition: pedump.c:616
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
#define SHELL_GetSetting(pss, ssf, field)
Definition: shellutils.h:798
struct _CSFV CSFV
#define SSF_HIDEICONS
Definition: shlobj.h:1616
@ FWF_AUTOARRANGE
Definition: shobjidl.idl:641
@ FWF_NOSCROLL
Definition: shobjidl.idl:651
@ FWF_NOCLIENTEDGE
Definition: shobjidl.idl:650
@ FWF_NOICONS
Definition: shobjidl.idl:653
@ FWF_TRANSPARENT
Definition: shobjidl.idl:649
@ FWF_DESKTOP
Definition: shobjidl.idl:646
@ FVM_ICON
Definition: shobjidl.idl:678
#define IDA_DESKBROWSER
Definition: shresdef.h:27
Definition: shlobj.h:1275
Definition: ffs.h:70
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define WS_EX_TOOLWINDOW
Definition: winuser.h:404
BOOL WINAPI UpdateWindow(_In_ HWND)
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define SW_SHOW
Definition: winuser.h:775
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582

◆ InsertMenusSB()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::InsertMenusSB ( HMENU  hmenuShared,
LPOLEMENUGROUPWIDTHS  lpMenuWidths 
)
override

Implements IShellBrowser.

Definition at line 278 of file CDesktopBrowser.cpp.

279{
280 return E_NOTIMPL;
281}

◆ OnClose()

LRESULT CDesktopBrowser::OnClose ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 450 of file CDesktopBrowser.cpp.

451{
452 return _NotifyTray(TWM_DOEXITWINDOWS, 0, 0);
453}
LRESULT _NotifyTray(UINT uMsg, WPARAM wParam, LPARAM lParam)
#define TWM_DOEXITWINDOWS
Definition: undocshell.h:54

◆ OnCommand()

LRESULT CDesktopBrowser::OnCommand ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 385 of file CDesktopBrowser.cpp.

386{
387 switch (LOWORD(wParam))
388 {
390 return _NotifyTray(TWM_DOEXITWINDOWS, 0, 0);
393 return _NotifyTray(TWM_CYCLEFOCUS, 1, 0xFFFFFFFF);
394 else
395 return _NotifyTray(TWM_CYCLEFOCUS, 1, 1);
398 break;
400 if (m_ShellView)
401 m_ShellView->Refresh();
402 break;
403 }
404
405 return 0;
406}
#define FCIDM_DESKBROWSER_REFRESH
Definition: desktop.c:14
#define LOWORD(l)
Definition: pedump.c:82
BOOL WINAPI SHFindFiles(PCIDLIST_ABSOLUTE pidlFolder, PCIDLIST_ABSOLUTE pidlSaveFile)
Definition: shellord.c:2462
#define FCIDM_DESKBROWSER_FOCUS
Definition: shresdef.h:822
#define FCIDM_DESKBROWSER_SEARCH
Definition: shresdef.h:823
#define FCIDM_DESKBROWSER_CLOSE
Definition: shresdef.h:821
#define TWM_CYCLEFOCUS
Definition: undocshell.h:55
#define VK_SHIFT
Definition: winuser.h:2202
SHORT WINAPI GetKeyState(_In_ int)

◆ OnDeviceChange()

LRESULT CDesktopBrowser::OnDeviceChange ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 489 of file CDesktopBrowser.cpp.

490{
492 return 0;
493
494 DWORD dwDrives = ::GetLogicalDrives();
495 for (INT iDrive = 0; iDrive <= 'Z' - 'A'; ++iDrive)
496 {
498 DWORD dwBit = (1 << iDrive);
499 if (!(m_dwDrives & dwBit) && (dwDrives & dwBit)) // The drive is added
500 {
501 PathBuildRootW(szPath, iDrive);
503 }
504 else if ((m_dwDrives & dwBit) && !(dwDrives & dwBit)) // The drive is removed
505 {
506 PathBuildRootW(szPath, iDrive);
508 }
509 }
510
511 m_dwDrives = dwDrives;
512 return 0;
513}
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
#define DBT_DEVICEARRIVAL
Definition: dbt.h:12
#define DBT_DEVICEREMOVECOMPLETE
Definition: dbt.h:16
#define MAX_PATH
Definition: compat.h:34
LPWSTR WINAPI PathBuildRootW(LPWSTR lpszPath, int drive)
Definition: path.c:348
LPCWSTR szPath
Definition: env.c:37
#define SHCNE_DRIVEREMOVED
Definition: shlobj.h:1896
#define SHCNE_DRIVEADD
Definition: shlobj.h:1897
#define SHCNF_PATHW
Definition: shlobj.h:1924
int32_t INT
Definition: typedefs.h:58
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ OnEraseBkgnd()

LRESULT CDesktopBrowser::OnEraseBkgnd ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 409 of file CDesktopBrowser.cpp.

410{
411 return (LRESULT)PaintDesktop((HDC)wParam);
412}
static HDC
Definition: imagelist.c:92
LONG_PTR LRESULT
Definition: windef.h:209
BOOL WINAPI PaintDesktop(_In_ HDC)

◆ OnGetChangeNotifyServer()

LRESULT CDesktopBrowser::OnGetChangeNotifyServer ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 472 of file CDesktopBrowser.cpp.

473{
476 {
479 return NULL;
480
483 return NULL;
484 }
486}
HRESULT CChangeNotifyServer_CreateInstance(REFIID riid, void **ppv)
CComPtr< IOleWindow > m_ChangeNotifyServer
HRESULT hres
Definition: protocol.c:465
#define BOOL
Definition: nt_native.h:43
_In_ int _In_ BOOL bCreate
Definition: shlobj.h:1519
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define IID_PPV_ARG(Itype, ppType)

◆ OnOpenNewWindow()

LRESULT CDesktopBrowser::OnOpenNewWindow ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 455 of file CDesktopBrowser.cpp.

456{
457 TRACE("Proxy Desktop message 1035 received.\n");
459 return 0;
460}
BOOL WINAPI SHOnCWMCommandLine(HANDLE hSharedInfo)
Definition: desktopipc.cpp:537
#define TRACE(s)
Definition: solgame.cpp:4

◆ OnSaveState()

LRESULT CDesktopBrowser::OnSaveState ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 535 of file CDesktopBrowser.cpp.

536{
538 m_ShellView->SaveViewState();
539 return 0;
540}
@ REST_NOSAVESET
Definition: shlobj.h:1644
DWORD WINAPI SHRestricted(RESTRICTIONS rest)
Definition: shpolicy.c:150

◆ OnSetFocus()

LRESULT CDesktopBrowser::OnSetFocus ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 462 of file CDesktopBrowser.cpp.

463{
465 return 0;
466}
HWND WINAPI SetFocus(_In_opt_ HWND)

◆ OnSettingChange()

LRESULT CDesktopBrowser::OnSettingChange ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 427 of file CDesktopBrowser.cpp.

428{
429 if (uMsg == WM_SETTINGCHANGE /* == WM_WININICHANGE */ &&
430 lstrcmpiW((LPCWSTR)lParam, L"Environment") == 0)
431 {
432 LPVOID lpEnvironment;
433 RegenerateUserEnvironment(&lpEnvironment, TRUE);
434 }
435
436 if (m_hWndShellView)
437 {
438 /* Forward the message */
440 }
441
442 if (uMsg == WM_SETTINGCHANGE && wParam == SPI_SETWORKAREA && m_hWndShellView != NULL)
443 {
444 _Resize();
445 }
446
447 return 0;
448}
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4261
EXTERN_C BOOL WINAPI RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
Definition: shell32.cpp:71
#define WM_SETTINGCHANGE
Definition: winuser.h:1629
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

◆ OnShowOptionsDlg()

LRESULT CDesktopBrowser::OnShowOptionsDlg ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 517 of file CDesktopBrowser.cpp.

518{
519 switch (wParam)
520 {
521 case 0:
522#if (NTDDI_VERSION >= NTDDI_VISTA)
523 case 2:
524 case 7:
525#endif
527 break;
528 case 1:
530 break;
531 }
532 return 0;
533}
VOID WINAPI ShowFolderOptionsDialog(UINT Page, BOOL Async)
Definition: misc.cpp:278
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
#define TRAYCMD_TASKBAR_PROPERTIES
Definition: undocshell.h:852
#define WM_COMMAND
Definition: winuser.h:1740

◆ OnSize()

LRESULT CDesktopBrowser::OnSize ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
BOOL bHandled 
)

Definition at line 414 of file CDesktopBrowser.cpp.

415{
416 if (wParam == SIZE_MINIMIZED)
417 {
418 /* Hey, we're the desktop!!! */
419 ::ShowWindow(m_hWnd, SW_RESTORE);
420 }
421
423
424 return 0;
425}
#define SIZE_MINIMIZED
Definition: winuser.h:2506
#define SW_RESTORE
Definition: winuser.h:779
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)

◆ OnViewWindowActive()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::OnViewWindowActive ( struct IShellView ppshv)
override

Implements IShellBrowser.

Definition at line 351 of file CDesktopBrowser.cpp.

352{
353 return E_NOTIMPL;
354}

◆ QueryActiveShellView()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::QueryActiveShellView ( struct IShellView **  ppshv)
override

Implements IShellBrowser.

Definition at line 340 of file CDesktopBrowser.cpp.

341{
342 if (ppshv == NULL)
343 return E_POINTER;
344 *ppshv = m_ShellView;
345 if (*ppshv != NULL)
346 (*ppshv)->AddRef();
347
348 return S_OK;
349}

◆ QueryService()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::QueryService ( REFGUID  guidService,
REFIID  riid,
void **  ppvObject 
)
override

Implements IServiceProvider.

Definition at line 367 of file CDesktopBrowser.cpp.

368{
369 /* FIXME - handle guidService (SID_STopLevelBrowser for IShellBrowserService etc) */
370 return QueryInterface(riid, ppv);
371}
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)

◆ RemoveMenusSB()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::RemoveMenusSB ( HMENU  hmenuShared)
override

Implements IShellBrowser.

Definition at line 288 of file CDesktopBrowser.cpp.

289{
290 return E_NOTIMPL;
291}

◆ SendControlMsg()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::SendControlMsg ( UINT  id,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT pret 
)
override

Implements IShellBrowser.

Definition at line 333 of file CDesktopBrowser.cpp.

334{
335 if (pret == NULL)
336 return E_POINTER;
337 return E_NOTIMPL;
338}

◆ SetMenuSB()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::SetMenuSB ( HMENU  hmenuShared,
HOLEMENU  holemenuRes,
HWND  hwndActiveObject 
)
override

Implements IShellBrowser.

Definition at line 283 of file CDesktopBrowser.cpp.

284{
285 return E_NOTIMPL;
286}

◆ SetStatusTextSB()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::SetStatusTextSB ( LPCOLESTR  pszStatusText)
override

Implements IShellBrowser.

Definition at line 293 of file CDesktopBrowser.cpp.

294{
295 return E_NOTIMPL;
296}

◆ SetToolbarItems()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::SetToolbarItems ( LPTBBUTTON  lpButtons,
UINT  nButtons,
UINT  uFlags 
)
override

Definition at line 356 of file CDesktopBrowser.cpp.

357{
358 return E_NOTIMPL;
359}

◆ SetTopBrowser()

void CDesktopBrowser::SetTopBrowser ( ) const
inline

Definition at line 84 of file CDesktopBrowser.cpp.

84{}

Referenced by CDesktopBrowser().

◆ TranslateAcceleratorSB()

HRESULT STDMETHODCALLTYPE CDesktopBrowser::TranslateAcceleratorSB ( MSG pmsg,
WORD  wID 
)
override

Implements IShellBrowser.

Definition at line 303 of file CDesktopBrowser.cpp.

304{
305 if (!::TranslateAcceleratorW(m_hWnd, m_hAccel, lpmsg))
306 return S_FALSE;
307 return S_OK;
308}
#define S_FALSE
Definition: winerror.h:2357
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)

Member Data Documentation

◆ m_ChangeNotifyServer

CComPtr<IOleWindow> CDesktopBrowser::m_ChangeNotifyServer
private

Definition at line 49 of file CDesktopBrowser.cpp.

Referenced by OnGetChangeNotifyServer().

◆ m_dwDrives

DWORD CDesktopBrowser::m_dwDrives
private

Definition at line 51 of file CDesktopBrowser.cpp.

Referenced by OnDeviceChange().

◆ m_hAccel

HACCEL CDesktopBrowser::m_hAccel
private

Definition at line 44 of file CDesktopBrowser.cpp.

Referenced by Initialize(), and TranslateAcceleratorSB().

◆ m_hwndChangeNotifyServer

HWND CDesktopBrowser::m_hwndChangeNotifyServer
private

Definition at line 50 of file CDesktopBrowser.cpp.

Referenced by OnGetChangeNotifyServer(), and ~CDesktopBrowser().

◆ m_hWndShellView

HWND CDesktopBrowser::m_hWndShellView
private

◆ m_ShellView

CComPtr<IShellView> CDesktopBrowser::m_ShellView
private

◆ m_Tray

CComPtr<IShellDesktopTray> CDesktopBrowser::m_Tray
private

Definition at line 46 of file CDesktopBrowser.cpp.

Referenced by _NotifyTray(), and Initialize().


The documentation for this class was generated from the following file: