ReactOS  0.4.13-dev-563-g0561610
CDesktopBrowser.cpp
Go to the documentation of this file.
1 /*
2  * Shell Desktop
3  *
4  * Copyright 2008 Thomas Bluemel
5  *
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.
10  *
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.
15  *
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #include "shelldesktop.h"
22 
23 // Support for multiple monitors is disabled till LVM_SETWORKAREAS gets implemented
24 #ifdef MULTIMONITOR_SUPPORT
25 #include <atlcoll.h>
26 #endif
27 
28 
29 
31 
32 static const WCHAR szProgmanClassName[] = L"Progman";
33 static const WCHAR szProgmanWindowName[] = L"Program Manager";
34 
36  public CWindowImpl<CDesktopBrowser, CWindow, CFrameWinTraits>,
37  public CComObjectRootEx<CComMultiThreadModelNoCS>,
38  public IShellBrowser,
39  public IServiceProvider
40 {
41 private:
42  HACCEL m_hAccel;
44  CComPtr<IShellDesktopTray> m_Tray;
45  CComPtr<IShellView> m_ShellView;
46 
48  HRESULT _Resize();
49 
50 public:
53  HRESULT Initialize(IShellDesktopTray *ShellDeskx);
54 
55  // *** IOleWindow methods ***
56  virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd);
58 
59  // *** IShellBrowser methods ***
60  virtual HRESULT STDMETHODCALLTYPE InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths);
61  virtual HRESULT STDMETHODCALLTYPE SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject);
62  virtual HRESULT STDMETHODCALLTYPE RemoveMenusSB(HMENU hmenuShared);
63  virtual HRESULT STDMETHODCALLTYPE SetStatusTextSB(LPCOLESTR pszStatusText);
67  virtual HRESULT STDMETHODCALLTYPE GetViewStateStream(DWORD grfMode, IStream **ppStrm);
68  virtual HRESULT STDMETHODCALLTYPE GetControlWindow(UINT id, HWND *lphwnd);
72  virtual HRESULT STDMETHODCALLTYPE SetToolbarItems(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags);
73 
74  // *** IServiceProvider methods ***
75  virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
76 
77  // message handlers
79  LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
81  LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
83  LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
84  LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
85 
87 
98 
101  COM_INTERFACE_ENTRY_IID(IID_IShellBrowser, IShellBrowser)
102  COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
103 END_COM_MAP()
104 };
105 
107  m_hAccel(NULL),
109 {
110 }
111 
113 {
114  if (m_ShellView.p != NULL && m_hWndShellView != NULL)
115  {
116  m_ShellView->DestroyViewWindow();
117  }
118 }
119 
120 #ifdef MULTIMONITOR_SUPPORT
122  _In_ HMONITOR hMonitor,
123  _In_ HDC hdcMonitor,
124  _In_ LPRECT lprcMonitor,
126 )
127 {
128  CAtlList<RECT> *list = (CAtlList<RECT>*)dwData;
129  MONITORINFO MonitorInfo;
130  MonitorInfo.cbSize = sizeof(MonitorInfo);
131  if (::GetMonitorInfoW(hMonitor, &MonitorInfo))
132  {
133  list->AddTail(MonitorInfo.rcWork);
134  }
135 
136  return TRUE;
137 }
138 #endif
139 
141 {
142  RECT rcNewSize;
143 
144 #ifdef MULTIMONITOR_SUPPORT
145 
146  UINT cMonitors = GetSystemMetrics(SM_CMONITORS);
147  if (cMonitors == 1)
148  {
149  SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcNewSize, 0);
150  }
151  else
152  {
153  SetRect(&rcNewSize,
158  }
159 
160  ::MoveWindow(m_hWnd, rcNewSize.left, rcNewSize.top, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
161  ::MoveWindow(m_hWndShellView, 0, 0, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
162 
163  if (cMonitors != 1)
164  {
165  CAtlList<RECT> list;
167  RECT* prcWorkAreas = new RECT[list.GetCount()];
168  int i = 0;
169  for (POSITION it = list.GetHeadPosition(); it; list.GetNext(it))
170  prcWorkAreas[i++] = list.GetAt(it);
171 
173 
175  }
176 
177 #else
178  SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcNewSize, 0);
179  ::MoveWindow(m_hWnd, rcNewSize.left, rcNewSize.top, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
180  ::MoveWindow(m_hWndShellView, 0, 0, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
181 
182 #endif
183  return S_OK;
184 }
185 
186 HRESULT CDesktopBrowser::Initialize(IShellDesktopTray *ShellDesk)
187 {
188  CComPtr<IShellFolder> psfDesktop;
189  HRESULT hRet;
190  hRet = SHGetDesktopFolder(&psfDesktop);
191  if (FAILED_UNEXPECTEDLY(hRet))
192  return hRet;
193 
194  m_Tray = ShellDesk;
195 
197  if (!m_hWnd)
198  return E_FAIL;
199 
200  CSFV csfv = {sizeof(CSFV), psfDesktop};
201  hRet = SHCreateShellFolderViewEx(&csfv, &m_ShellView);
202  if (FAILED_UNEXPECTEDLY(hRet))
203  return hRet;
204 
205  m_Tray->RegisterDesktopWindow(m_hWnd);
206  if (FAILED_UNEXPECTEDLY(hRet))
207  return hRet;
208 
210  RECT rcShellView = {0,0,0,0};
211  fs.ViewMode = FVM_ICON;
213  hRet = m_ShellView->CreateViewWindow(NULL, &fs, (IShellBrowser *)this, &rcShellView, &m_hWndShellView);
214  if (FAILED_UNEXPECTEDLY(hRet))
215  return hRet;
216 
217  _Resize();
218 
221 
223 
224 #if 1
225  /* A Windows8+ specific hack */
228 #endif
230  UpdateWindow();
231 
232  return hRet;
233 }
234 
236 {
237  if (lphwnd == NULL)
238  return E_POINTER;
239  *lphwnd = m_hWnd;
240  return S_OK;
241 }
242 
244 {
245  return E_NOTIMPL;
246 }
247 
248 HRESULT STDMETHODCALLTYPE CDesktopBrowser::InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
249 {
250  return E_NOTIMPL;
251 }
252 
253 HRESULT STDMETHODCALLTYPE CDesktopBrowser::SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject)
254 {
255  return E_NOTIMPL;
256 }
257 
259 {
260  return E_NOTIMPL;
261 }
262 
264 {
265  return E_NOTIMPL;
266 }
267 
269 {
270  return E_NOTIMPL;
271 }
272 
274 {
275  if (!::TranslateAcceleratorW(m_hWnd, m_hAccel, lpmsg))
276  return S_FALSE;
277  return S_OK;
278 }
279 
281 {
282  /*
283  * We should use IShellWindows interface here in order to attempt to
284  * find an open shell window that shows the requested pidl and activate it
285  */
286 
287  DWORD dwFlags = ((wFlags & SBSP_EXPLOREMODE) != 0) ? SH_EXPLORER_CMDLINE_FLAG_E : 0;
288  return SHOpenNewFrame(ILClone(pidl), NULL, 0, dwFlags);
289 }
290 
292 {
293  return E_NOTIMPL;
294 }
295 
297 {
298  if (lphwnd == NULL)
299  return E_POINTER;
300  return E_NOTIMPL;
301 }
302 
304 {
305  if (pret == NULL)
306  return E_POINTER;
307  return E_NOTIMPL;
308 }
309 
311 {
312  if (ppshv == NULL)
313  return E_POINTER;
314  *ppshv = m_ShellView;
315  if (m_ShellView != NULL)
316  m_ShellView->AddRef();
317 
318  return S_OK;
319 }
320 
322 {
323  return E_NOTIMPL;
324 }
325 
327 {
328  return E_NOTIMPL;
329 }
330 
332 {
333  /* FIXME - handle guidService */
334  return QueryInterface(riid, ppv);
335 }
336 
338 {
339  HWND hWndTray;
340  HRESULT hRet;
341 
342  hRet = m_Tray->GetTrayWindow(&hWndTray);
343  if (SUCCEEDED(hRet))
344  ::PostMessageW(hWndTray, uMsg, wParam, lParam);
345 
346  return 0;
347 }
348 
350 {
351  switch (LOWORD(wParam))
352  {
354  return _NotifyTray(TWM_DOEXITWINDOWS, 0, 0);
356  if (GetKeyState(VK_SHIFT))
357  return _NotifyTray(TWM_CYCLEFOCUS, 1, 0xFFFFFFFF);
358  else
359  return _NotifyTray(TWM_CYCLEFOCUS, 1, 1);
362  break;
364  if (m_ShellView)
365  m_ShellView->Refresh();
366  break;
367  }
368 
369  return 0;
370 }
371 
372 
374 {
375  return (LRESULT)PaintDesktop((HDC)wParam);
376 }
377 
379 {
380  if (wParam == SIZE_MINIMIZED)
381  {
382  /* Hey, we're the desktop!!! */
383  ::ShowWindow(m_hWnd, SW_RESTORE);
384  }
385 
387 
388  return 0;
389 }
390 
392 {
393  LPVOID lpEnvironment;
394  RegenerateUserEnvironment(&lpEnvironment, TRUE);
395 
396  if (m_hWndShellView)
397  {
398  /* Forward the message */
400  }
401 
402  if (uMsg == WM_SETTINGCHANGE && wParam == SPI_SETWORKAREA && m_hWndShellView != NULL)
403  {
404  _Resize();
405  }
406 
407  return 0;
408 }
409 
411 {
412  return _NotifyTray(TWM_DOEXITWINDOWS, 0, 0);
413 }
414 
416 {
417  TRACE("Proxy Desktop message 1035 received.\n");
419  return 0;
420 }
421 
423 {
425  return 0;
426 }
427 
428 HRESULT CDesktopBrowser_CreateInstance(IShellDesktopTray *Tray, REFIID riid, void **ppv)
429 {
430  return ShellObjectCreatorInit<CDesktopBrowser, IShellDesktopTray*>(Tray, riid, ppv);
431 }
432 
433 /*************************************************************************
434  * SHCreateDesktop [SHELL32.200]
435  *
436  */
437 HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *Tray)
438 {
439  if (Tray == NULL)
440  {
442  return NULL;
443  }
444 
445  CComPtr<IShellBrowser> Browser;
447  if (FAILED_UNEXPECTEDLY(hr))
448  return NULL;
449 
450  return static_cast<HANDLE>(Browser.Detach());
451 }
452 
453 /*************************************************************************
454  * SHCreateDesktop [SHELL32.201]
455  *
456  */
458 {
459  if (hDesktop == NULL)
460  {
462  return FALSE;
463  }
464 
465  MSG Msg;
466  BOOL bRet;
467 
468  CComPtr<IShellBrowser> browser;
469  CComPtr<IShellView> shellView;
470 
471  browser.Attach(static_cast<IShellBrowser*>(hDesktop));
472  HRESULT hr = browser->QueryActiveShellView(&shellView);
473  if (FAILED_UNEXPECTEDLY(hr))
474  return FALSE;
475 
476  while ((bRet = GetMessageW(&Msg, NULL, 0, 0)) != 0)
477  {
478  if (bRet != -1)
479  {
480  if (shellView->TranslateAcceleratorW(&Msg) != S_OK)
481  {
484  }
485  }
486  }
487 
488  return TRUE;
489 }
#define TWM_CYCLEFOCUS
Definition: undocshell.h:57
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1608
#define DispatchMessage
Definition: winuser.h:5631
BOOL WINAPI TranslateMessage(_In_ const MSG *)
struct _CSFV CSFV
#define REFIID
Definition: guiddef.h:113
#define TRUE
Definition: types.h:120
#define SM_XVIRTUALSCREEN
Definition: winuser.h:1026
LRESULT OnSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HRESULT hr
Definition: shlfolder.c:183
#define TWM_DOEXITWINDOWS
Definition: undocshell.h:56
Definition: scsiwmi.h:51
BOOL WINAPI EnumDisplayMonitors(_In_opt_ HDC, _In_opt_ LPCRECT, _In_ MONITORENUMPROC, _In_ LPARAM)
#define SM_CMONITORS
Definition: winuser.h:1030
#define SM_CXVIRTUALSCREEN
Definition: winuser.h:1028
WINE_DEFAULT_DEBUG_CHANNEL(desktop)
LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
REFIID riid
Definition: precomp.h:44
_In_ BOOLEAN Create
Definition: pstypes.h:511
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
CComPtr< IShellView > m_ShellView
HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *Tray)
Definition: shlobj.h:1192
HRESULT Initialize(IShellDesktopTray *ShellDeskx)
virtual HRESULT STDMETHODCALLTYPE EnableModelessSB(BOOL fEnable)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
static HDC
Definition: imagelist.c:92
#define CALLBACK
Definition: compat.h:27
#define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd)
Definition: atlwin.h:1876
BOOL WINAPI UpdateWindow(_In_ HWND)
REFIID LPVOID * ppv
Definition: atlbase.h:39
LONG top
Definition: windef.h:292
static HANDLE ULONG_PTR dwData
Definition: file.c:35
HWND WINAPI SetFocus(_In_opt_ HWND)
#define COLOR_DESKTOP
Definition: winuser.h:904
static const WCHAR szProgmanClassName[]
UINT_PTR WPARAM
Definition: windef.h:207
LONG left
Definition: windef.h:291
UINT uFlags
Definition: api.c:60
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define WS_CLIPCHILDREN
Definition: pedump.c:619
#define FCIDM_DESKBROWSER_REFRESH
Definition: shresdef.h:728
Definition: fs.h:235
#define SW_RESTORE
Definition: winuser.h:773
LONG right
Definition: windef.h:293
#define IID_PPV_ARG(Itype, ppType)
#define E_FAIL
Definition: ddrawi.h:102
#define WS_EX_TOOLWINDOW
Definition: winuser.h:404
WPARAM wParam
Definition: combotst.c:138
#define WM_SETTINGCHANGE
Definition: winuser.h:1611
virtual HRESULT STDMETHODCALLTYPE GetControlWindow(UINT id, HWND *lphwnd)
virtual HRESULT STDMETHODCALLTYPE OnViewWindowActive(struct IShellView *ppshv)
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, RECT *rcMonitor, LPARAM Param)
Definition: screensave.c:33
CComPtr< IShellDesktopTray > m_Tray
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
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
virtual HRESULT STDMETHODCALLTYPE SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject)
HINSTANCE shell32_hInstance
Definition: misc.cpp:82
unsigned int BOOL
Definition: ntddk_ex.h:94
virtual HRESULT STDMETHODCALLTYPE GetViewStateStream(DWORD grfMode, IStream **ppStrm)
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd)
#define SH_EXPLORER_CMDLINE_FLAG_E
#define S_FALSE
Definition: winerror.h:2357
#define VK_SHIFT
Definition: winuser.h:2156
#define FCIDM_DESKBROWSER_CLOSE
Definition: shresdef.h:725
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
HRESULT CDesktopBrowser_CreateInstance(IShellDesktopTray *Tray, REFIID riid, void **ppv)
LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HWND hwndListView
Definition: eventvwr.c:83
smooth NULL
Definition: ftsmooth.c:416
HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV psvcbi, IShellView **ppsv)
Definition: CDefView.cpp:3426
LONG_PTR LPARAM
Definition: windef.h:208
#define LVM_SETWORKAREAS
Definition: commctrl.h:2754
#define SW_SHOW
Definition: winuser.h:769
#define FCIDM_DESKBROWSER_FOCUS
Definition: shresdef.h:726
#define SM_CYVIRTUALSCREEN
Definition: winuser.h:1029
SHORT WINAPI GetKeyState(_In_ int)
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:541
BOOL WINAPI SystemParametersInfoW(_In_ UINT, _In_ UINT, _Inout_opt_ PVOID, _In_ UINT)
EXTERN_C BOOL WINAPI RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
Definition: shell32.cpp:71
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(struct IShellView **ppshv)
HRESULT WINAPI SHOpenNewFrame(LPITEMIDLIST pidl, IUnknown *paramC, long param10, DWORD dwFlags)
Definition: desktopipc.cpp:578
__wchar_t WCHAR
Definition: xmlstorage.h:180
LRESULT _NotifyTray(UINT uMsg, WPARAM wParam, LPARAM lParam)
#define WM_SIZE
Definition: winuser.h:1593
LONG HRESULT
Definition: typedefs.h:77
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
#define END_MSG_MAP()
Definition: atlwin.h:1789
BOOL WINAPI SHOnCWMCommandLine(HANDLE hSharedInfo)
Definition: desktopipc.cpp:530
#define FCIDM_DESKBROWSER_SEARCH
Definition: shresdef.h:727
#define WM_CLOSE
Definition: winuser.h:1603
#define IDA_DESKBROWSER
Definition: shresdef.h:26
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:35
#define WINAPI
Definition: msvc.h:8
LRESULT OnOpenNewWindow(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
unsigned short WORD
Definition: ntddk_ex.h:93
int WINAPI GetSystemMetrics(_In_ int)
unsigned long DWORD
Definition: ntddk_ex.h:95
virtual HRESULT STDMETHODCALLTYPE InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
#define SetLastError(x)
Definition: compat.h:409
#define SIZE_MINIMIZED
Definition: winuser.h:2460
HWND WINAPI FindWindowExW(_In_opt_ HWND, _In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
BOOL WINAPI SetShellWindowEx(HWND, HWND)
Definition: ntwrapper.h:58
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)
static const WCHAR L[]
Definition: oid.c:1250
BOOL WINAPI SHDesktopMessageLoop(HANDLE hDesktop)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
virtual HRESULT STDMETHODCALLTYPE RemoveMenusSB(HMENU hmenuShared)
Definition: _list.h:228
REFIID LPVOID * ppvObject
Definition: precomp.h:44
#define CS_DBLCLKS
Definition: winuser.h:646
#define WM_COMMAND
Definition: winuser.h:1716
virtual HRESULT STDMETHODCALLTYPE BrowseObject(LPCITEMIDLIST pidl, UINT wFlags)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
virtual HRESULT STDMETHODCALLTYPE SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret)
struct @1574 Msg[]
BOOL WINAPI SHFindFiles(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlSaveFile)
Definition: shellord.c:1827
#define SM_YVIRTUALSCREEN
Definition: winuser.h:1027
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:519
#define _In_
Definition: no_sal2.h:204
virtual HRESULT STDMETHODCALLTYPE SetToolbarItems(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define S_OK
Definition: intsafe.h:59
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define fs
Definition: i386-dis.c:435
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:228
DWORD cbSize
Definition: winuser.h:3726
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode)
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:561
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define E_NOTIMPL
Definition: ddrawi.h:99
#define list
Definition: rosglue.h:35
#define WS_POPUP
Definition: pedump.c:616
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define WM_EXPLORER_OPEN_NEW_WINDOW
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define BEGIN_MSG_MAP(theClass)
Definition: atlwin.h:1770
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define MESSAGE_HANDLER(msg, func)
Definition: atlwin.h:1798
#define WC_LISTVIEW
Definition: commctrl.h:2231
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
const GUID IID_IOleWindow
virtual HRESULT STDMETHODCALLTYPE SetStatusTextSB(LPCOLESTR pszStatusText)
BOOL WINAPI PaintDesktop(_In_ HDC)
LONG bottom
Definition: windef.h:294
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorSB(MSG *pmsg, WORD wID)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define END_COM_MAP()
Definition: atlcom.h:552
#define WM_ERASEBKGND
Definition: winuser.h:1607
#define WM_SETFOCUS
Definition: winuser.h:1595
LONG_PTR LRESULT
Definition: windef.h:209
#define E_POINTER
Definition: winerror.h:2365
static const WCHAR szProgmanWindowName[]
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define SUCCEEDED(hr)
Definition: intsafe.h:57