ReactOS 0.4.15-dev-7958-gcd0bb1a
CDesktopBrowser.cpp
Go to the documentation of this file.
1/*
2 * Shell Desktop
3 *
4 * Copyright 2008 Thomas Bluemel
5 * Copyright 2020 Katayama Hirofumi MZ
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#include "shelldesktop.h"
23
24// Support for multiple monitors is disabled till LVM_SETWORKAREAS gets implemented
25#ifdef MULTIMONITOR_SUPPORT
26#include <atlcoll.h>
27#endif
28
29#include <dbt.h>
30
32
33static const WCHAR szProgmanClassName[] = L"Progman";
34static const WCHAR szProgmanWindowName[] = L"Program Manager";
35
37 public CWindowImpl<CDesktopBrowser, CWindow, CFrameWinTraits>,
38 public CComObjectRootEx<CComMultiThreadModelNoCS>,
39 public IShellBrowser,
40 public IServiceProvider
41{
42private:
43 HACCEL m_hAccel;
45 CComPtr<IShellDesktopTray> m_Tray;
46 CComPtr<IShellView> m_ShellView;
47
48 CComPtr<IOleWindow> m_ChangeNotifyServer;
51
54
55public:
58 HRESULT Initialize(IShellDesktopTray *ShellDeskx);
59
60 // *** IOleWindow methods ***
61 STDMETHOD(GetWindow)(HWND *lphwnd) override;
62 STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode) override;
63
64 // *** IShellBrowser methods ***
65 STDMETHOD(InsertMenusSB)(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) override;
66 STDMETHOD(SetMenuSB)(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject) override;
67 STDMETHOD(RemoveMenusSB)(HMENU hmenuShared) override;
68 STDMETHOD(SetStatusTextSB)(LPCOLESTR pszStatusText) override;
69 STDMETHOD(EnableModelessSB)(BOOL fEnable) override;
70 STDMETHOD(TranslateAcceleratorSB)(MSG *pmsg, WORD wID) override;
72 STDMETHOD(GetViewStateStream)(DWORD grfMode, IStream **ppStrm) override;
73 STDMETHOD(GetControlWindow)(UINT id, HWND *lphwnd) override;
75 STDMETHOD(QueryActiveShellView)(struct IShellView **ppshv) override;
76 STDMETHOD(OnViewWindowActive)(struct IShellView *ppshv) override;
77 STDMETHOD(SetToolbarItems)(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags) override;
78
79 // *** IServiceProvider methods ***
80 STDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void **ppvObject) override;
81
82 // message handlers
84 LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
86 LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
93
95
109
112 COM_INTERFACE_ENTRY_IID(IID_IShellBrowser, IShellBrowser)
113 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
115};
116
118 m_hAccel(NULL),
122{
123}
124
126{
128 {
129 m_ShellView->DestroyViewWindow();
130 }
131
133 {
135 }
136}
137
138#ifdef MULTIMONITOR_SUPPORT
140 _In_ HMONITOR hMonitor,
141 _In_ HDC hdcMonitor,
142 _In_ LPRECT lprcMonitor,
144)
145{
146 CAtlList<RECT> *list = (CAtlList<RECT>*)dwData;
147 MONITORINFO MonitorInfo;
148 MonitorInfo.cbSize = sizeof(MonitorInfo);
149 if (::GetMonitorInfoW(hMonitor, &MonitorInfo))
150 {
151 list->AddTail(MonitorInfo.rcWork);
152 }
153
154 return TRUE;
155}
156#endif
157
159{
160 RECT rcNewSize;
161
162#ifdef MULTIMONITOR_SUPPORT
163
165 if (cMonitors == 1)
166 {
167 SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcNewSize, 0);
168 }
169 else
170 {
171 SetRect(&rcNewSize,
176 }
177
178 ::MoveWindow(m_hWnd, rcNewSize.left, rcNewSize.top, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
179 ::MoveWindow(m_hWndShellView, 0, 0, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
180
181 if (cMonitors != 1)
182 {
183 CAtlList<RECT> list;
185 RECT* prcWorkAreas = new RECT[list.GetCount()];
186 int i = 0;
187 for (POSITION it = list.GetHeadPosition(); it; list.GetNext(it))
188 prcWorkAreas[i++] = list.GetAt(it);
189
191
193 }
194
195#else
196 SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcNewSize, 0);
197 ::MoveWindow(m_hWnd, rcNewSize.left, rcNewSize.top, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
198 ::MoveWindow(m_hWndShellView, 0, 0, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
199
200#endif
201 return S_OK;
202}
203
204HRESULT CDesktopBrowser::Initialize(IShellDesktopTray *ShellDesk)
205{
206 CComPtr<IShellFolder> psfDesktop;
207 HRESULT hRet;
208 hRet = SHGetDesktopFolder(&psfDesktop);
209 if (FAILED_UNEXPECTEDLY(hRet))
210 return hRet;
211
212 m_Tray = ShellDesk;
213
215 if (!m_hWnd)
216 return E_FAIL;
217
218 CSFV csfv = {sizeof(CSFV), psfDesktop};
220 if (FAILED_UNEXPECTEDLY(hRet))
221 return hRet;
222
223 m_Tray->RegisterDesktopWindow(m_hWnd);
224 if (FAILED_UNEXPECTEDLY(hRet))
225 return hRet;
226
228 RECT rcShellView = {0,0,0,0};
229 fs.ViewMode = FVM_ICON;
231 hRet = m_ShellView->CreateViewWindow(NULL, &fs, (IShellBrowser *)this, &rcShellView, &m_hWndShellView);
232 if (FAILED_UNEXPECTEDLY(hRet))
233 return hRet;
234
235 _Resize();
236
238
240
241#if 1
242 /* A Windows8+ specific hack */
245#endif
247 UpdateWindow();
248
249 return hRet;
250}
251
253{
254 if (lphwnd == NULL)
255 return E_POINTER;
256 *lphwnd = m_hWnd;
257 return S_OK;
258}
259
261{
262 return E_NOTIMPL;
263}
264
265HRESULT STDMETHODCALLTYPE CDesktopBrowser::InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
266{
267 return E_NOTIMPL;
268}
269
270HRESULT STDMETHODCALLTYPE CDesktopBrowser::SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject)
271{
272 return E_NOTIMPL;
273}
274
276{
277 return E_NOTIMPL;
278}
279
281{
282 return E_NOTIMPL;
283}
284
286{
287 return E_NOTIMPL;
288}
289
291{
292 if (!::TranslateAcceleratorW(m_hWnd, m_hAccel, lpmsg))
293 return S_FALSE;
294 return S_OK;
295}
296
298{
299 /*
300 * We should use IShellWindows interface here in order to attempt to
301 * find an open shell window that shows the requested pidl and activate it
302 */
303
304 DWORD dwFlags = ((wFlags & SBSP_EXPLOREMODE) != 0) ? SH_EXPLORER_CMDLINE_FLAG_E : 0;
305 return SHOpenNewFrame(ILClone(pidl), NULL, 0, dwFlags);
306}
307
309{
310 return E_NOTIMPL;
311}
312
314{
315 if (lphwnd == NULL)
316 return E_POINTER;
317 return E_NOTIMPL;
318}
319
321{
322 if (pret == NULL)
323 return E_POINTER;
324 return E_NOTIMPL;
325}
326
328{
329 if (ppshv == NULL)
330 return E_POINTER;
331 *ppshv = m_ShellView;
332 if (*ppshv != NULL)
333 (*ppshv)->AddRef();
334
335 return S_OK;
336}
337
339{
340 return E_NOTIMPL;
341}
342
344{
345 return E_NOTIMPL;
346}
347
349{
350 /* FIXME - handle guidService */
351 return QueryInterface(riid, ppv);
352}
353
355{
356 HWND hWndTray;
357 HRESULT hRet;
358
359 hRet = m_Tray->GetTrayWindow(&hWndTray);
360 if (SUCCEEDED(hRet))
361 ::PostMessageW(hWndTray, uMsg, wParam, lParam);
362
363 return 0;
364}
365
367{
368 switch (LOWORD(wParam))
369 {
371 return _NotifyTray(TWM_DOEXITWINDOWS, 0, 0);
374 return _NotifyTray(TWM_CYCLEFOCUS, 1, 0xFFFFFFFF);
375 else
376 return _NotifyTray(TWM_CYCLEFOCUS, 1, 1);
379 break;
381 if (m_ShellView)
382 m_ShellView->Refresh();
383 break;
384 }
385
386 return 0;
387}
388
389
391{
392 return (LRESULT)PaintDesktop((HDC)wParam);
393}
394
396{
397 if (wParam == SIZE_MINIMIZED)
398 {
399 /* Hey, we're the desktop!!! */
400 ::ShowWindow(m_hWnd, SW_RESTORE);
401 }
402
404
405 return 0;
406}
407
409{
410 if (uMsg == WM_SETTINGCHANGE /* == WM_WININICHANGE */ &&
411 lstrcmpiW((LPCWSTR)lParam, L"Environment") == 0)
412 {
413 LPVOID lpEnvironment;
414 RegenerateUserEnvironment(&lpEnvironment, TRUE);
415 }
416
417 if (m_hWndShellView)
418 {
419 /* Forward the message */
421 }
422
423 if (uMsg == WM_SETTINGCHANGE && wParam == SPI_SETWORKAREA && m_hWndShellView != NULL)
424 {
425 _Resize();
426 }
427
428 return 0;
429}
430
432{
433 return _NotifyTray(TWM_DOEXITWINDOWS, 0, 0);
434}
435
437{
438 TRACE("Proxy Desktop message 1035 received.\n");
440 return 0;
441}
442
444{
446 return 0;
447}
448
449// Message WM_DESKTOP_GET_CNOTIFY_SERVER: Get or create the change notification server.
450// wParam: BOOL bCreate; The flag whether it creates or not.
451// lParam: Ignored.
452// return: The window handle of the server window.
454{
457 {
460 return NULL;
461
464 return NULL;
465 }
467}
468
469// Detect DBT_DEVICEARRIVAL and DBT_DEVICEREMOVECOMPLETE
471{
473 return 0;
474
475 DWORD dwDrives = ::GetLogicalDrives();
476 for (INT iDrive = 0; iDrive <= 'Z' - 'A'; ++iDrive)
477 {
479 DWORD dwBit = (1 << iDrive);
480 if (!(m_dwDrives & dwBit) && (dwDrives & dwBit)) // The drive is added
481 {
482 PathBuildRootW(szPath, iDrive);
484 }
485 else if ((m_dwDrives & dwBit) && !(dwDrives & dwBit)) // The drive is removed
486 {
487 PathBuildRootW(szPath, iDrive);
489 }
490 }
491
492 m_dwDrives = dwDrives;
493 return 0;
494}
495
497
499{
500 switch (wParam)
501 {
502 case 0:
503#if (NTDDI_VERSION >= NTDDI_VISTA)
504 case 2:
505 case 7:
506#endif
508 break;
509 case 1:
511 break;
512 }
513 return 0;
514}
515
516HRESULT CDesktopBrowser_CreateInstance(IShellDesktopTray *Tray, REFIID riid, void **ppv)
517{
518 return ShellObjectCreatorInit<CDesktopBrowser, IShellDesktopTray*>(Tray, riid, ppv);
519}
520
521/*************************************************************************
522 * SHCreateDesktop [SHELL32.200]
523 *
524 */
525HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *Tray)
526{
527 if (Tray == NULL)
528 {
530 return NULL;
531 }
532
533 CComPtr<IShellBrowser> Browser;
536 return NULL;
537
538 return static_cast<HANDLE>(Browser.Detach());
539}
540
541/*************************************************************************
542 * SHCreateDesktop [SHELL32.201]
543 *
544 */
546{
547 if (hDesktop == NULL)
548 {
550 return FALSE;
551 }
552
553 MSG Msg;
554 BOOL bRet;
555
556 CComPtr<IShellBrowser> browser;
557 CComPtr<IShellView> shellView;
558
559 browser.Attach(static_cast<IShellBrowser*>(hDesktop));
560 HRESULT hr = browser->QueryActiveShellView(&shellView);
562 return FALSE;
563
564 while ((bRet = ::GetMessageW(&Msg, NULL, 0, 0)) != 0)
565 {
566 if (bRet != -1)
567 {
568 if (shellView->TranslateAcceleratorW(&Msg) != S_OK)
569 {
572 }
573 }
574 }
575
576 return TRUE;
577}
578
579/*************************************************************************
580 * SHIsTempDisplayMode [SHELL32.724]
581 *
582 * Is the current display settings temporary?
583 */
585{
586 TRACE("\n");
587
588 if (GetSystemMetrics(SM_REMOTESESSION) || GetSystemMetrics(SM_REMOTECONTROL))
589 return FALSE;
590
591 DEVMODEW DevMode;
592 ZeroMemory(&DevMode, sizeof(DevMode));
593 DevMode.dmSize = sizeof(DevMode);
594
596 return FALSE;
597
598 if (!DevMode.dmPelsWidth || !DevMode.dmPelsHeight)
599 return FALSE;
600
601 HDC hDC = GetDC(NULL);
602 DWORD cxWidth = GetDeviceCaps(hDC, HORZRES);
603 DWORD cyHeight = GetDeviceCaps(hDC, VERTRES);
605
606 return (cxWidth != DevMode.dmPelsWidth || cyHeight != DevMode.dmPelsHeight);
607}
static HDC hDC
Definition: 3dtext.c:33
HRESULT CChangeNotifyServer_CreateInstance(REFIID riid, void **ppv)
#define WM_DESKTOP_GET_CNOTIFY_SERVER
HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV psvcbi, IShellView **ppsv)
Definition: CDefView.cpp:3837
BOOL WINAPI SHDesktopMessageLoop(HANDLE hDesktop)
VOID WINAPI ShowFolderOptionsDialog(UINT Page, BOOL Async)
Definition: misc.cpp:278
EXTERN_C BOOL WINAPI SHIsTempDisplayMode(VOID)
HRESULT CDesktopBrowser_CreateInstance(IShellDesktopTray *Tray, REFIID riid, void **ppv)
static const WCHAR szProgmanClassName[]
static const WCHAR szProgmanWindowName[]
HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *Tray)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define shell32_hInstance
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
@ Create
Definition: registry.c:563
#define EXTERN_C
Definition: basetyps.h:12
#define STDMETHOD(m)
Definition: basetyps.h:62
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
#define WM_EXPLORER_OPEN_NEW_WINDOW
#define SH_EXPLORER_CMDLINE_FLAG_E
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
STDMETHOD() QueryService(REFGUID guidService, REFIID riid, void **ppvObject) override
STDMETHOD() RemoveMenusSB(HMENU hmenuShared) override
CComPtr< IShellView > m_ShellView
CComPtr< IOleWindow > m_ChangeNotifyServer
STDMETHOD() EnableModelessSB(BOOL fEnable) override
STDMETHOD() GetWindow(HWND *lphwnd) override
STDMETHOD() SetToolbarItems(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags) override
STDMETHOD() TranslateAcceleratorSB(MSG *pmsg, WORD wID) override
LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() GetViewStateStream(DWORD grfMode, IStream **ppStrm) override
HRESULT Initialize(IShellDesktopTray *ShellDeskx)
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnGetChangeNotifyServer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CComPtr< IShellDesktopTray > m_Tray
LRESULT OnOpenNewWindow(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) override
STDMETHOD() SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret) override
STDMETHOD() SetStatusTextSB(LPCOLESTR pszStatusText) override
LRESULT OnShowOptionsDlg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() ContextSensitiveHelp(BOOL fEnterMode) override
STDMETHOD() SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject) override
STDMETHOD() BrowseObject(LPCITEMIDLIST pidl, UINT wFlags) override
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() OnViewWindowActive(struct IShellView *ppshv) override
LRESULT OnDeviceChange(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)
STDMETHOD() QueryActiveShellView(struct IShellView **ppshv) override
LRESULT _NotifyTray(UINT uMsg, WPARAM wParam, LPARAM lParam)
STDMETHOD() GetControlWindow(UINT id, HWND *lphwnd) override
Definition: list.h:37
struct @1632 Msg[]
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define DBT_DEVICEARRIVAL
Definition: dbt.h:12
#define DBT_DEVICEREMOVECOMPLETE
Definition: dbt.h:16
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
HRESULT WINAPI SHOpenNewFrame(LPITEMIDLIST pidl, IUnknown *paramC, long param10, DWORD dwFlags)
Definition: desktopipc.cpp:578
BOOL WINAPI SHOnCWMCommandLine(HANDLE hSharedInfo)
Definition: desktopipc.cpp:524
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define FCIDM_DESKBROWSER_REFRESH
Definition: desktop.c:14
UINT uFlags
Definition: api.c:59
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
#define MAX_PATH
Definition: compat.h:34
#define CALLBACK
Definition: compat.h:35
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
LPWSTR WINAPI PathBuildRootW(LPWSTR lpszPath, int drive)
Definition: path.c:348
HWND hwndListView
Definition: eventvwr.c:66
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
GLuint id
Definition: glext.h:5910
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 fs
Definition: i386-dis.c:444
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:581
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:601
#define END_COM_MAP()
Definition: atlcom.h:592
#define MESSAGE_HANDLER(msg, func)
Definition: atlwin.h:1926
#define BEGIN_MSG_MAP(theClass)
Definition: atlwin.h:1898
#define END_MSG_MAP()
Definition: atlwin.h:1917
#define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd)
Definition: atlwin.h:2004
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
LPCWSTR szPath
Definition: env.c:37
static HDC
Definition: imagelist.c:92
HRESULT hres
Definition: protocol.c:465
static HANDLE ULONG_PTR dwData
Definition: file.c:35
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
#define _In_
Definition: ms_sal.h:308
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
unsigned int UINT
Definition: ndis.h:50
#define BOOL
Definition: nt_native.h:43
_In_ PVOID _Out_opt_ BOOLEAN _Out_opt_ PPFN_NUMBER Page
Definition: mm.h:1306
#define L(x)
Definition: ntvdm.h:50
const GUID IID_IOleWindow
#define LOWORD(l)
Definition: pedump.c:82
#define WS_POPUP
Definition: pedump.c:616
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:237
#define LVM_SETWORKAREAS
Definition: commctrl.h:2782
#define WC_LISTVIEW
Definition: commctrl.h:2259
#define REFIID
Definition: guiddef.h:118
#define list
Definition: rosglue.h:35
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, RECT *rcMonitor, LPARAM Param)
Definition: screensave.c:33
EXTERN_C BOOL WINAPI RegenerateUserEnvironment(LPVOID *lpEnvironment, BOOL bUpdateSelf)
Definition: shell32.cpp:71
BOOL WINAPI SHFindFiles(PCIDLIST_ABSOLUTE pidlFolder, PCIDLIST_ABSOLUTE pidlSaveFile)
Definition: shellord.c:2262
HRESULT hr
Definition: shlfolder.c:183
struct _CSFV CSFV
#define SHCNE_DRIVEREMOVED
Definition: shlobj.h:1882
_In_ int _In_ BOOL bCreate
Definition: shlobj.h:1511
#define SHCNE_DRIVEADD
Definition: shlobj.h:1883
#define SHCNF_PATHW
Definition: shlobj.h:1910
@ FWF_NOSCROLL
Definition: shobjidl.idl:647
@ FWF_NOCLIENTEDGE
Definition: shobjidl.idl:646
@ FWF_TRANSPARENT
Definition: shobjidl.idl:645
@ FWF_DESKTOP
Definition: shobjidl.idl:642
@ FVM_ICON
Definition: shobjidl.idl:674
#define IDA_DESKBROWSER
Definition: shresdef.h:27
#define FCIDM_DESKBROWSER_FOCUS
Definition: shresdef.h:817
#define FCIDM_DESKBROWSER_SEARCH
Definition: shresdef.h:818
#define FCIDM_DESKBROWSER_CLOSE
Definition: shresdef.h:816
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
#define TRACE(s)
Definition: solgame.cpp:4
Definition: shlobj.h:1268
Definition: scsiwmi.h:51
DWORD dmPelsWidth
Definition: wingdi.h:1648
DWORD dmPelsHeight
Definition: wingdi.h:1649
WORD dmSize
Definition: wingdi.h:1620
Definition: ffs.h:70
DWORD cbSize
Definition: winuser.h:3784
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
int32_t INT
Definition: typedefs.h:58
#define TRAYCMD_TASKBAR_PROPERTIES
Definition: undocshell.h:837
#define TWM_CYCLEFOCUS
Definition: undocshell.h:55
#define TWM_DOEXITWINDOWS
Definition: undocshell.h:54
#define WM_PROGMAN_OPENSHELLSETTINGS
Definition: undocshell.h:60
BOOL WINAPI EnumDisplaySettingsW(LPCWSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEW lpDevMode)
Definition: display.c:408
#define ZeroMemory
Definition: winbase.h:1712
DWORD WINAPI GetLogicalDrives(void)
Definition: disk.c:110
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:2357
#define E_POINTER
Definition: winerror.h:2365
#define HORZRES
Definition: wingdi.h:716
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define VERTRES
Definition: wingdi.h:717
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define WM_ERASEBKGND
Definition: winuser.h:1625
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define WM_CLOSE
Definition: winuser.h:1621
#define SM_CYVIRTUALSCREEN
Definition: winuser.h:1039
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_SIZE
Definition: winuser.h:1611
#define WM_COMMAND
Definition: winuser.h:1740
#define WS_EX_TOOLWINDOW
Definition: winuser.h:404
BOOL WINAPI PaintDesktop(_In_ HDC)
#define ENUM_REGISTRY_SETTINGS
Definition: winuser.h:180
#define WM_SETFOCUS
Definition: winuser.h:1613
BOOL WINAPI EnumDisplayMonitors(_In_opt_ HDC, _In_opt_ LPCRECT, _In_ MONITORENUMPROC, _In_ LPARAM)
#define SIZE_MINIMIZED
Definition: winuser.h:2506
#define CS_DBLCLKS
Definition: winuser.h:651
#define WM_DEVICECHANGE
Definition: winuser.h:1811
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1626
#define SM_CXVIRTUALSCREEN
Definition: winuser.h:1038
#define WM_SETTINGCHANGE
Definition: winuser.h:1629
HWND WINAPI FindWindowExW(_In_opt_ HWND, _In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define COLOR_DESKTOP
Definition: winuser.h:914
BOOL WINAPI UpdateWindow(_In_ HWND)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)
#define SW_RESTORE
Definition: winuser.h:779
#define VK_SHIFT
Definition: winuser.h:2202
#define SW_SHOW
Definition: winuser.h:775
#define SM_REMOTESESSION
Definition: winuser.h:1058
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
#define SM_XVIRTUALSCREEN
Definition: winuser.h:1036
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define SM_CMONITORS
Definition: winuser.h:1040
BOOL WINAPI DestroyWindow(_In_ HWND)
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
SHORT WINAPI GetKeyState(_In_ int)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
static void Initialize()
Definition: xlate.c:212
#define IID_PPV_ARG(Itype, ppType)
__wchar_t WCHAR
Definition: xmlstorage.h:180
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185