ReactOS 0.4.15-dev-7906-g1b85a5f
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
30
31static const WCHAR szProgmanClassName[] = L"Progman";
32static const WCHAR szProgmanWindowName[] = L"Program Manager";
33
35 public CWindowImpl<CDesktopBrowser, CWindow, CFrameWinTraits>,
36 public CComObjectRootEx<CComMultiThreadModelNoCS>,
37 public IShellBrowser,
38 public IServiceProvider
39{
40private:
41 HACCEL m_hAccel;
43 CComPtr<IShellDesktopTray> m_Tray;
44 CComPtr<IShellView> m_ShellView;
45
46 CComPtr<IOleWindow> m_ChangeNotifyServer;
48
51
52public:
55 HRESULT Initialize(IShellDesktopTray *ShellDeskx);
56
57 // *** IOleWindow methods ***
58 STDMETHOD(GetWindow)(HWND *lphwnd) override;
59 STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode) override;
60
61 // *** IShellBrowser methods ***
62 STDMETHOD(InsertMenusSB)(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) override;
63 STDMETHOD(SetMenuSB)(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject) override;
64 STDMETHOD(RemoveMenusSB)(HMENU hmenuShared) override;
65 STDMETHOD(SetStatusTextSB)(LPCOLESTR pszStatusText) override;
66 STDMETHOD(EnableModelessSB)(BOOL fEnable) override;
67 STDMETHOD(TranslateAcceleratorSB)(MSG *pmsg, WORD wID) override;
69 STDMETHOD(GetViewStateStream)(DWORD grfMode, IStream **ppStrm) override;
70 STDMETHOD(GetControlWindow)(UINT id, HWND *lphwnd) override;
72 STDMETHOD(QueryActiveShellView)(struct IShellView **ppshv) override;
73 STDMETHOD(OnViewWindowActive)(struct IShellView *ppshv) override;
74 STDMETHOD(SetToolbarItems)(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags) override;
75
76 // *** IServiceProvider methods ***
77 STDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void **ppvObject) override;
78
79 // message handlers
81 LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
83 LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
89
91
104
107 COM_INTERFACE_ENTRY_IID(IID_IShellBrowser, IShellBrowser)
108 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
110};
111
113 m_hAccel(NULL),
116{
117}
118
120{
122 {
123 m_ShellView->DestroyViewWindow();
124 }
125
127 {
129 }
130}
131
132#ifdef MULTIMONITOR_SUPPORT
134 _In_ HMONITOR hMonitor,
135 _In_ HDC hdcMonitor,
136 _In_ LPRECT lprcMonitor,
138)
139{
140 CAtlList<RECT> *list = (CAtlList<RECT>*)dwData;
141 MONITORINFO MonitorInfo;
142 MonitorInfo.cbSize = sizeof(MonitorInfo);
143 if (::GetMonitorInfoW(hMonitor, &MonitorInfo))
144 {
145 list->AddTail(MonitorInfo.rcWork);
146 }
147
148 return TRUE;
149}
150#endif
151
153{
154 RECT rcNewSize;
155
156#ifdef MULTIMONITOR_SUPPORT
157
159 if (cMonitors == 1)
160 {
161 SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcNewSize, 0);
162 }
163 else
164 {
165 SetRect(&rcNewSize,
170 }
171
172 ::MoveWindow(m_hWnd, rcNewSize.left, rcNewSize.top, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
173 ::MoveWindow(m_hWndShellView, 0, 0, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
174
175 if (cMonitors != 1)
176 {
177 CAtlList<RECT> list;
179 RECT* prcWorkAreas = new RECT[list.GetCount()];
180 int i = 0;
181 for (POSITION it = list.GetHeadPosition(); it; list.GetNext(it))
182 prcWorkAreas[i++] = list.GetAt(it);
183
185
187 }
188
189#else
190 SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcNewSize, 0);
191 ::MoveWindow(m_hWnd, rcNewSize.left, rcNewSize.top, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
192 ::MoveWindow(m_hWndShellView, 0, 0, rcNewSize.right - rcNewSize.left, rcNewSize.bottom - rcNewSize.top, TRUE);
193
194#endif
195 return S_OK;
196}
197
198HRESULT CDesktopBrowser::Initialize(IShellDesktopTray *ShellDesk)
199{
200 CComPtr<IShellFolder> psfDesktop;
201 HRESULT hRet;
202 hRet = SHGetDesktopFolder(&psfDesktop);
203 if (FAILED_UNEXPECTEDLY(hRet))
204 return hRet;
205
206 m_Tray = ShellDesk;
207
209 if (!m_hWnd)
210 return E_FAIL;
211
212 CSFV csfv = {sizeof(CSFV), psfDesktop};
214 if (FAILED_UNEXPECTEDLY(hRet))
215 return hRet;
216
217 m_Tray->RegisterDesktopWindow(m_hWnd);
218 if (FAILED_UNEXPECTEDLY(hRet))
219 return hRet;
220
222 RECT rcShellView = {0,0,0,0};
223 fs.ViewMode = FVM_ICON;
225 hRet = m_ShellView->CreateViewWindow(NULL, &fs, (IShellBrowser *)this, &rcShellView, &m_hWndShellView);
226 if (FAILED_UNEXPECTEDLY(hRet))
227 return hRet;
228
229 _Resize();
230
232
234
235#if 1
236 /* A Windows8+ specific hack */
239#endif
241 UpdateWindow();
242
243 return hRet;
244}
245
247{
248 if (lphwnd == NULL)
249 return E_POINTER;
250 *lphwnd = m_hWnd;
251 return S_OK;
252}
253
255{
256 return E_NOTIMPL;
257}
258
259HRESULT STDMETHODCALLTYPE CDesktopBrowser::InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
260{
261 return E_NOTIMPL;
262}
263
264HRESULT STDMETHODCALLTYPE CDesktopBrowser::SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject)
265{
266 return E_NOTIMPL;
267}
268
270{
271 return E_NOTIMPL;
272}
273
275{
276 return E_NOTIMPL;
277}
278
280{
281 return E_NOTIMPL;
282}
283
285{
286 if (!::TranslateAcceleratorW(m_hWnd, m_hAccel, lpmsg))
287 return S_FALSE;
288 return S_OK;
289}
290
292{
293 /*
294 * We should use IShellWindows interface here in order to attempt to
295 * find an open shell window that shows the requested pidl and activate it
296 */
297
298 DWORD dwFlags = ((wFlags & SBSP_EXPLOREMODE) != 0) ? SH_EXPLORER_CMDLINE_FLAG_E : 0;
299 return SHOpenNewFrame(ILClone(pidl), NULL, 0, dwFlags);
300}
301
303{
304 return E_NOTIMPL;
305}
306
308{
309 if (lphwnd == NULL)
310 return E_POINTER;
311 return E_NOTIMPL;
312}
313
315{
316 if (pret == NULL)
317 return E_POINTER;
318 return E_NOTIMPL;
319}
320
322{
323 if (ppshv == NULL)
324 return E_POINTER;
325 *ppshv = m_ShellView;
326 if (*ppshv != NULL)
327 (*ppshv)->AddRef();
328
329 return S_OK;
330}
331
333{
334 return E_NOTIMPL;
335}
336
338{
339 return E_NOTIMPL;
340}
341
343{
344 /* FIXME - handle guidService */
345 return QueryInterface(riid, ppv);
346}
347
349{
350 HWND hWndTray;
351 HRESULT hRet;
352
353 hRet = m_Tray->GetTrayWindow(&hWndTray);
354 if (SUCCEEDED(hRet))
355 ::PostMessageW(hWndTray, uMsg, wParam, lParam);
356
357 return 0;
358}
359
361{
362 switch (LOWORD(wParam))
363 {
365 return _NotifyTray(TWM_DOEXITWINDOWS, 0, 0);
368 return _NotifyTray(TWM_CYCLEFOCUS, 1, 0xFFFFFFFF);
369 else
370 return _NotifyTray(TWM_CYCLEFOCUS, 1, 1);
373 break;
375 if (m_ShellView)
376 m_ShellView->Refresh();
377 break;
378 }
379
380 return 0;
381}
382
383
385{
386 return (LRESULT)PaintDesktop((HDC)wParam);
387}
388
390{
391 if (wParam == SIZE_MINIMIZED)
392 {
393 /* Hey, we're the desktop!!! */
394 ::ShowWindow(m_hWnd, SW_RESTORE);
395 }
396
398
399 return 0;
400}
401
403{
404 if (uMsg == WM_SETTINGCHANGE /* == WM_WININICHANGE */ &&
405 lstrcmpiW((LPCWSTR)lParam, L"Environment") == 0)
406 {
407 LPVOID lpEnvironment;
408 RegenerateUserEnvironment(&lpEnvironment, TRUE);
409 }
410
411 if (m_hWndShellView)
412 {
413 /* Forward the message */
415 }
416
417 if (uMsg == WM_SETTINGCHANGE && wParam == SPI_SETWORKAREA && m_hWndShellView != NULL)
418 {
419 _Resize();
420 }
421
422 return 0;
423}
424
426{
427 return _NotifyTray(TWM_DOEXITWINDOWS, 0, 0);
428}
429
431{
432 TRACE("Proxy Desktop message 1035 received.\n");
434 return 0;
435}
436
438{
440 return 0;
441}
442
443// Message WM_DESKTOP_GET_CNOTIFY_SERVER: Get or create the change notification server.
444// wParam: BOOL bCreate; The flag whether it creates or not.
445// lParam: Ignored.
446// return: The window handle of the server window.
448{
451 {
454 return NULL;
455
458 return NULL;
459 }
461}
462
464
466{
467 switch (wParam)
468 {
469 case 0:
470#if (NTDDI_VERSION >= NTDDI_VISTA)
471 case 2:
472 case 7:
473#endif
475 break;
476 case 1:
478 break;
479 }
480 return 0;
481}
482
483HRESULT CDesktopBrowser_CreateInstance(IShellDesktopTray *Tray, REFIID riid, void **ppv)
484{
485 return ShellObjectCreatorInit<CDesktopBrowser, IShellDesktopTray*>(Tray, riid, ppv);
486}
487
488/*************************************************************************
489 * SHCreateDesktop [SHELL32.200]
490 *
491 */
492HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *Tray)
493{
494 if (Tray == NULL)
495 {
497 return NULL;
498 }
499
500 CComPtr<IShellBrowser> Browser;
503 return NULL;
504
505 return static_cast<HANDLE>(Browser.Detach());
506}
507
508/*************************************************************************
509 * SHCreateDesktop [SHELL32.201]
510 *
511 */
513{
514 if (hDesktop == NULL)
515 {
517 return FALSE;
518 }
519
520 MSG Msg;
521 BOOL bRet;
522
523 CComPtr<IShellBrowser> browser;
524 CComPtr<IShellView> shellView;
525
526 browser.Attach(static_cast<IShellBrowser*>(hDesktop));
527 HRESULT hr = browser->QueryActiveShellView(&shellView);
529 return FALSE;
530
531 while ((bRet = ::GetMessageW(&Msg, NULL, 0, 0)) != 0)
532 {
533 if (bRet != -1)
534 {
535 if (shellView->TranslateAcceleratorW(&Msg) != S_OK)
536 {
539 }
540 }
541 }
542
543 return TRUE;
544}
545
546/*************************************************************************
547 * SHIsTempDisplayMode [SHELL32.724]
548 *
549 * Is the current display settings temporary?
550 */
552{
553 TRACE("\n");
554
555 if (GetSystemMetrics(SM_REMOTESESSION) || GetSystemMetrics(SM_REMOTECONTROL))
556 return FALSE;
557
558 DEVMODEW DevMode;
559 ZeroMemory(&DevMode, sizeof(DevMode));
560 DevMode.dmSize = sizeof(DevMode);
561
563 return FALSE;
564
565 if (!DevMode.dmPelsWidth || !DevMode.dmPelsHeight)
566 return FALSE;
567
568 HDC hDC = GetDC(NULL);
569 DWORD cxWidth = GetDeviceCaps(hDC, HORZRES);
570 DWORD cyHeight = GetDeviceCaps(hDC, VERTRES);
572
573 return (cxWidth != DevMode.dmPelsWidth || cyHeight != DevMode.dmPelsHeight);
574}
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:3835
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
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 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 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 CALLBACK
Definition: compat.h:35
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
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
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
_In_ int _In_ BOOL bCreate
Definition: shlobj.h:1511
@ 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
#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
_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_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