ReactOS 0.4.16-dev-401-g45b008d
IShellFolderViewCB.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS API tests
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Test for IShellFolderViewCB
5 * COPYRIGHT: Copyright 2017 Mark Jansen (mark.jansen@reactos.org)
6 */
7
8#include "shelltest.h"
9#include <atlsimpcoll.h>
10#include <stdio.h>
11#include <shellutils.h>
12//#include <msgtrace.h>
13
15#define WINVER_VISTA 0x0600
16
17#ifndef SFVM_SELECTIONCHANGED
18#define SFVM_SELECTIONCHANGED 8 /* undocumented */
19#define SFVM_DRAWMENUITEM 9 /* undocumented */
20#define SFVM_MEASUREMENUITEM 10 /* undocumented */
21#define SFVM_EXITMENULOOP 11 /* undocumented */
22#define SFVM_VIEWRELEASE 12 /* undocumented */
23#define SFVM_GETNAMELENGTH 13 /* undocumented */
24#define SFVM_WINDOWCLOSING 16 /* undocumented */
25#define SFVM_LISTREFRESHED 17 /* undocumented */
26#define SFVM_WINDOWFOCUSED 18 /* undocumented */
27#define SFVM_REGISTERCOPYHOOK 20 /* undocumented */
28#define SFVM_COPYHOOKCALLBACK 21 /* undocumented */
29#define SFVM_UNMERGEFROMMENU 28 /* undocumented */
30#define SFVM_ADDINGOBJECT 29 /* undocumented */
31#define SFVM_REMOVINGOBJECT 30 /* undocumented */
32#define SFVM_GETCOMMANDDIR 33 /* undocumented */
33#define SFVM_GETCOLUMNSTREAM 34 /* undocumented */
34#define SFVM_CANSELECTALL 35 /* undocumented */
35#define SFVM_ISSTRICTREFRESH 37 /* undocumented */
36#define SFVM_ISCHILDOBJECT 38 /* undocumented */
37#define SFVM_GETEXTVIEWS 40 /* undocumented */
38#define SFVM_GET_CUSTOMVIEWINFO 77 /* undocumented */
39#define SFVM_ENUMERATEDITEMS 79 /* undocumented */
40#define SFVM_GET_VIEW_DATA 80 /* undocumented */
41#define SFVM_GET_WEBVIEW_LAYOUT 82 /* undocumented */
42#define SFVM_GET_WEBVIEW_CONTENT 83 /* undocumented */
43#define SFVM_GET_WEBVIEW_TASKS 84 /* undocumented */
44#define SFVM_GET_WEBVIEW_THEME 86 /* undocumented */
45#define SFVM_GETDEFERREDVIEWSETTINGS 92 /* undocumented */
46#endif
47
48#define DUM_MSG_GetWindow 400
49#define DUM_MSG_ContextSensitiveHelp 401
50#define DUM_MSG_InsertMenusSB 402
51#define DUM_MSG_SetMenuSB 403
52#define DUM_MSG_RemoveMenusSB 404
53#define DUM_MSG_SetStatusTextSB 405
54#define DUM_MSG_EnableModelessSB 406
55#define DUM_MSG_TranslateAcceleratorSB 407
56#define DUM_MSG_BrowseObject 408
57#define DUM_MSG_GetViewStateStream 409
58#define DUM_MSG_GetControlWindow 410
59#define DUM_MSG_SendControlMsg 411
60#define DUM_MSG_QueryActiveShellView 412
61#define DUM_MSG_OnViewWindowActive 413
62#define DUM_MSG_SetToolbarItems 414
63
64
65const char* msg2str(UINT uMsg)
66{
67 static char buf[2][50];
68 static int index = 0;
69 index ^= 1;
70
71 switch (uMsg)
72 {
73 case SFVM_MERGEMENU: return "SFVM_MERGEMENU";
74 case SFVM_INVOKECOMMAND: return "SFVM_INVOKECOMMAND";
75 case SFVM_GETHELPTEXT: return "SFVM_GETHELPTEXT";
76 case SFVM_GETTOOLTIPTEXT: return "SFVM_GETTOOLTIPTEXT";
77 case SFVM_GETBUTTONINFO: return "SFVM_GETBUTTONINFO";
78 case SFVM_GETBUTTONS: return "SFVM_GETBUTTONS";
79 case SFVM_INITMENUPOPUP: return "SFVM_INITMENUPOPUP";
80 case SFVM_SELECTIONCHANGED: return "SFVM_SELECTIONCHANGED";
81 case SFVM_DRAWMENUITEM: return "SFVM_DRAWMENUITEM";
82 case SFVM_MEASUREMENUITEM: return "SFVM_MEASUREMENUITEM";
83 case SFVM_EXITMENULOOP: return "SFVM_EXITMENULOOP";
84 case SFVM_VIEWRELEASE: return "SFVM_VIEWRELEASE";
85 case SFVM_GETNAMELENGTH: return "SFVM_GETNAMELENGTH";
86 case SFVM_FSNOTIFY: return "SFVM_FSNOTIFY";
87 case SFVM_WINDOWCREATED: return "SFVM_WINDOWCREATED";
88 case SFVM_WINDOWCLOSING: return "SFVM_WINDOWCLOSING";
89 case SFVM_LISTREFRESHED: return "SFVM_LISTREFRESHED";
90 case SFVM_WINDOWFOCUSED: return "SFVM_WINDOWFOCUSED";
91 case SFVM_REGISTERCOPYHOOK: return "SFVM_REGISTERCOPYHOOK";
92 case SFVM_COPYHOOKCALLBACK: return "SFVM_COPYHOOKCALLBACK";
93 case SFVM_GETDETAILSOF: return "SFVM_GETDETAILSOF";
94 case SFVM_COLUMNCLICK: return "SFVM_COLUMNCLICK";
95 case SFVM_QUERYFSNOTIFY: return "SFVM_QUERYFSNOTIFY";
96 case SFVM_DEFITEMCOUNT: return "SFVM_DEFITEMCOUNT";
97 case SFVM_DEFVIEWMODE: return "SFVM_DEFVIEWMODE";
98 case SFVM_UNMERGEFROMMENU: return "SFVM_UNMERGEFROMMENU";
99 case SFVM_ADDINGOBJECT: return "SFVM_ADDINGOBJECT";
100 case SFVM_REMOVINGOBJECT: return "SFVM_REMOVINGOBJECT";
101 case SFVM_UPDATESTATUSBAR: return "SFVM_UPDATESTATUSBAR";
102 case SFVM_BACKGROUNDENUM: return "SFVM_BACKGROUNDENUM";
103 case SFVM_GETCOMMANDDIR: return "SFVM_GETCOMMANDDIR";
104 case SFVM_GETCOLUMNSTREAM: return "SFVM_GETCOLUMNSTREAM";
105 case SFVM_CANSELECTALL: return "SFVM_CANSELECTALL";
106 case SFVM_DIDDRAGDROP: return "SFVM_DIDDRAGDROP";
107 case SFVM_ISSTRICTREFRESH: return "SFVM_ISSTRICTREFRESH";
108 case SFVM_ISCHILDOBJECT: return "SFVM_ISCHILDOBJECT";
109 case SFVM_SETISFV: return "SFVM_SETISFV";
110 case SFVM_GETEXTVIEWS: return "SFVM_GETEXTVIEWS";
111 case SFVM_THISIDLIST: return "SFVM_THISIDLIST";
112 case SFVM_ADDPROPERTYPAGES: return "SFVM_ADDPROPERTYPAGES";
113 case SFVM_BACKGROUNDENUMDONE: return "SFVM_BACKGROUNDENUMDONE";
114 case SFVM_GETNOTIFY: return "SFVM_GETNOTIFY";
115 case SFVM_GETSORTDEFAULTS: return "SFVM_GETSORTDEFAULTS";
116 case SFVM_SIZE: return "SFVM_SIZE";
117 case SFVM_GETZONE: return "SFVM_GETZONE";
118 case SFVM_GETPANE: return "SFVM_GETPANE";
119 case SFVM_GETHELPTOPIC: return "SFVM_GETHELPTOPIC";
120 case SFVM_GETANIMATION: return "SFVM_GETANIMATION";
121 case SFVM_GET_CUSTOMVIEWINFO: return "SFVM_GET_CUSTOMVIEWINFO";
122 case SFVM_ENUMERATEDITEMS: return "SFVM_ENUMERATEDITEMS";
123 case SFVM_GET_VIEW_DATA: return "SFVM_GET_VIEW_DATA";
124 case SFVM_GET_WEBVIEW_LAYOUT: return "SFVM_GET_WEBVIEW_LAYOUT";
125 case SFVM_GET_WEBVIEW_CONTENT: return "SFVM_GET_WEBVIEW_CONTENT";
126 case SFVM_GET_WEBVIEW_TASKS: return "SFVM_GET_WEBVIEW_TASKS";
127 case SFVM_GET_WEBVIEW_THEME: return "SFVM_GET_WEBVIEW_THEME";
128 case SFVM_GETDEFERREDVIEWSETTINGS: return "SFVM_GET_WEBVIEW_THEME";
129
130 case DUM_MSG_GetWindow: return "|GetWindow|";
131 case DUM_MSG_ContextSensitiveHelp: return "|ContextSensitiveHelp|";
132 case DUM_MSG_InsertMenusSB: return "|InsertMenusSB|";
133 case DUM_MSG_SetMenuSB: return "|SetMenuSB|";
134 case DUM_MSG_RemoveMenusSB: return "|RemoveMenusSB|";
135 case DUM_MSG_SetStatusTextSB: return "|SetStatusTextSB|";
136 case DUM_MSG_EnableModelessSB: return "|EnableModelessSB|";
137 case DUM_MSG_TranslateAcceleratorSB: return "|TranslateAcceleratorSB|";
138 case DUM_MSG_BrowseObject: return "|BrowseObject|";
139 case DUM_MSG_GetViewStateStream: return "|GetViewStateStream|";
140 case DUM_MSG_GetControlWindow: return "|GetControlWindow|";
141 case DUM_MSG_SendControlMsg: return "|SendControlMsg|";
142 case DUM_MSG_QueryActiveShellView: return "|QueryActiveShellView|";
143 case DUM_MSG_OnViewWindowActive: return "|OnViewWindowActive|";
144 case DUM_MSG_SetToolbarItems: return "|SetToolbarItems|";
145 default:
146 sprintf(buf[index], "[%u]", uMsg);
147 return buf[index];
148 }
149}
150
151
152#define PTR_VALUE 0xf7f7f7f7
153
154struct message
155{
156 message(UINT msg, WPARAM wp, LPARAM lp) : uMsg(msg), wParam(wp), lParam(lp) { ; }
157
161};
162
164
166{
167 g_Received.RemoveAll();
168}
169
171{
172 g_Received.Add(message(uMsg, wParam, lParam));
173}
174
175void print_list_(const CSimpleArray<message>& input, const char* file, int line)
176{
177 trace_(file, line)("Got list:\n");
178 for (int n = 0; n < input.GetSize(); ++n)
179 {
180 const message& msg = input[n];
181 trace_(file, line)("msg: %d(%s), wParam:0x%x, lParam:0x%lx\n", msg.uMsg, msg2str(msg.uMsg), msg.wParam, msg.lParam);
182 }
183 trace_(file, line)("End of list.\n");
184}
185
186void compare_list_(const CSimpleArray<message>& input, const message* compare, const char* file, int line)
187{
188 int input_item = 0;
189 int compare_item = 0;
190 LONG old_failures = winetest_get_failures();
191 while (compare[compare_item].uMsg && input_item < input.GetSize())
192 {
193 const message& inp = input[input_item];
194 const message& cmp = compare[compare_item];
195 if (cmp.uMsg == inp.uMsg)
196 {
197 if (cmp.lParam != (LPARAM)PTR_VALUE)
198 {
199 ok_(file, line)(cmp.lParam == inp.lParam, "Expected lParam to be 0x%lx, was 0x%lx for %i(%s)\n",
200 cmp.lParam, inp.lParam, compare_item, msg2str(cmp.uMsg));
201 }
202 else
203 {
204 ok_(file, line)(inp.lParam != 0, "Expected lParam to be a pointer, was 0 for %i(%s)\n",
205 compare_item, msg2str(cmp.uMsg));
206 }
207 if (cmp.wParam != PTR_VALUE)
208 {
209 ok_(file, line)(cmp.wParam == inp.wParam, "Expected wParam to be 0x%x, was 0x%x for %i(%s)\n",
210 cmp.wParam, inp.wParam, compare_item, msg2str(cmp.uMsg));
211 }
212 else
213 {
214 ok_(file, line)(inp.wParam != 0, "Expected wParam to be a pointer, was 0 for %i(%s)\n",
215 compare_item, msg2str(cmp.uMsg));
216 }
217 compare_item++;
218 }
219 else
220 {
221 /* We skip unknown items for now */
222 }
223
224 input_item++;
225 }
226
227 while (compare[compare_item].uMsg)
228 {
229 ok_(file, line)(0, "Message %i(%s) not found\n", compare_item, msg2str(compare[compare_item].uMsg));
230 compare_item++;
231 }
232 if (old_failures != winetest_get_failures())
233 {
235 }
236}
237
238#define compare_list(cmp) compare_list_(g_Received, cmp, __FILE__, __LINE__)
239#define print_list() print_list_(g_Received, __FILE__, __LINE__)
240
241
244
245class CFolderViewCB :
246 public IShellFolderViewCB
247{
248public:
250 m_RefCount(1)
251 {
252 }
254 {
255 if (riid == IID_IShellFolderViewCB)
256 {
257 *ppvObject = static_cast<IShellFolderViewCB*>(this);
258 AddRef();
259 return S_OK;
260 }
261 return E_NOINTERFACE;
262 }
264 {
267 }
269 {
272 }
274 {
275 //DbgPrint("MessageSFVCB(uMsg:%s, wParam:%u, lParam:%u\n", msg2str(uMsg), wParam, lParam);
276 add_msg(uMsg, wParam, lParam);
277 return E_NOTIMPL;
278 }
279private:
281};
282
283
285{
286 if (msg == WM_DESTROY)
287 {
289 return 0;
290 }
292}
293
294
296{
297public:
300 {
301 static const TCHAR* class_name = TEXT("DUMMY_TEST_CLASS");
302 WNDCLASSEX wx = {};
303 wx.cbSize = sizeof(WNDCLASSEX);
304 wx.lpfnWndProc = WndProc;
306 wx.lpszClassName = class_name;
307 wx.style = CS_DBLCLKS;
308 RegisterClassEx(&wx);
309 m_hwnd = CreateWindowEx(0, class_name, TEXT("dummy_name"), WS_OVERLAPPEDWINDOW, 0, 0, 0, 0, NULL, NULL, NULL, NULL);
311 }
312
313 // *** IUnknown methods ***
315 {
316 if (riid == IID_IShellBrowser || riid == IID_IUnknown)
317 {
318 *ppvObject = this;
319 return S_OK;
320 }
321 return E_NOINTERFACE;
322 }
324 {
325 return 2;
326 }
328 {
329 return 1;
330 }
331
332 // *** IOleWindow methods ***
334 {
335 //DbgPrint("%s()\n", __FUNCTION__);
336 *phwnd = m_hwnd;
338 return S_OK;
339 }
341 {
342 //DbgPrint("%s()\n", __FUNCTION__);
344 return E_NOTIMPL;
345 }
346
347 // *** IShellBrowser methods ***
348 virtual HRESULT STDMETHODCALLTYPE InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
349 {
350 //DbgPrint("%s()\n", __FUNCTION__);
352 return S_OK;
353 }
354 virtual HRESULT STDMETHODCALLTYPE SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject)
355 {
356 //DbgPrint("%s()\n", __FUNCTION__);
358 return S_OK;
359 }
361 {
362 //DbgPrint("%s()\n", __FUNCTION__);
364 return E_NOTIMPL;
365 }
367 {
368 //DbgPrint("%s()\n", __FUNCTION__);
370 return E_NOTIMPL;
371 }
373 {
374 //DbgPrint("%s()\n", __FUNCTION__);
376 return E_NOTIMPL;
377 }
379 {
380 //DbgPrint("%s()\n", __FUNCTION__);
382 return E_NOTIMPL;
383 }
385 {
386 //DbgPrint("%s()\n", __FUNCTION__);
388 return E_NOTIMPL;
389 }
391 {
392 //DbgPrint("%s()\n", __FUNCTION__);
394 return E_NOTIMPL;
395 }
397 {
398 //DbgPrint("%s()\n", __FUNCTION__);
400 return E_NOTIMPL;
401 }
403 {
404 //DbgPrint("%s()\n", __FUNCTION__);
406 return E_NOTIMPL;
407 }
409 {
410 //DbgPrint("%s()\n", __FUNCTION__);
412 return E_NOTIMPL;
413 }
415 {
416 //DbgPrint("%s()\n", __FUNCTION__);
418 return E_NOTIMPL;
419 }
421 {
422 //DbgPrint("%s()\n", __FUNCTION__);
424 return E_NOTIMPL;
425 }
426};
427
428
429START_TEST(IShellFolderViewCB)
430{
431 RTL_OSVERSIONINFOEXW rtlinfo = { sizeof(rtlinfo) };
432 void (__stdcall* pRtlGetVersion)(RTL_OSVERSIONINFOEXW*);
433 pRtlGetVersion = (void (__stdcall*)(RTL_OSVERSIONINFOEXW*))GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion");
434 pRtlGetVersion(&rtlinfo);
435 g_WinVersion = (rtlinfo.dwMajorVersion << 8) | rtlinfo.dwMinorVersion;
436
439
440 CComPtr<IShellFolder> desktop;
441
442 HRESULT hr = SHGetDesktopFolder(&desktop);
443 ok_hex(hr, S_OK);
444 if (!desktop)
445 return;
446
447 SFV_CREATE sfvc = { sizeof(sfvc), desktop };
448 sfvc.psfvcb = &cb;
449 IShellView* psv = NULL;
450
451 g_AddRef = 0;
452 g_Release = 0;
453
454 hr = SHCreateShellFolderView(&sfvc, &psv);
455 ok_hex(hr, S_OK);
456 if (!SUCCEEDED(hr))
457 return;
458
459 ok_int(g_AddRef, 1);
460 ok_int(g_Release, 0);
461
462 clear_list();
463
464 HWND wnd;
465 RECT rc = { 0 };
468 hr = psv->CreateViewWindow(NULL, &fs, &dum, &rc, &wnd);
469
470
471 static message init_list[] =
472 {
473 /* ... */
475 /* Some unknown messages here, and multiple SFVM_GET_WEBVIEW_THEME + SFVM_GETSORTDEFAULTS + SFVM_GETCOLUMNSTREAM */
476 message(SFVM_SIZE, 0, 0),
477 /* ... */
481 /* ... */
483 /* ... */
484
488
489 message(0, 0, 0)
490 };
491
492
493 static message init_list_vista[] =
494 {
495 /* Some unknown messages here */
497 /* Some unknown messages here, and multiple SFVM_GET_WEBVIEW_THEME + SFVM_GETSORTDEFAULTS + SFVM_GETCOLUMNSTREAM */
498 message(SFVM_SIZE, 0, 0),
500 /* Some unknown messages here */
504
505 message(0, 0, 0)
506 };
507
509 {
510 compare_list(init_list);
511 }
512 else
513 {
514 compare_list(init_list_vista);
515 }
516 clear_list();
517
518 hr = psv->Refresh();
519 //ok_hex(hr, S_FALSE);
520
521 static message refresh_list[] =
522 {
524
531
532 message(0, 0, 0)
533 };
534
535 static message refresh_list_vista[] =
536 {
538
545 /* Some messages here, like SFVM_GET_WEBVIEW_THEME, SFVM_GETSORTDEFAULTS, SFVM_GETCOLUMNSTREAM */
552
553 message(0, 0, 0)
554 };
555
557 {
558 compare_list(refresh_list);
559 }
560 else
561 {
562 compare_list(refresh_list_vista);
563 }
564 clear_list();
565
566 hr = psv->DestroyViewWindow();
567
568 static message destroy_list[] =
569 {
574
575 message(0, 0, 0)
576 };
577
578 compare_list(destroy_list);
579 clear_list();
580
581 CComPtr<IShellFolderView> folderView;
582 hr = psv->QueryInterface(IID_PPV_ARG(IShellFolderView, &folderView));
583 ok_hex(hr, S_OK);
584 if (SUCCEEDED(hr))
585 {
586 IShellFolderViewCB* oldPtr;
587
588 hr = folderView->SetCallback(NULL, &oldPtr);
589 ok_int(g_AddRef, 1);
590 ok_int(g_Release, 0);
591
592 /* Last pointer is not optional! */
593 IShellFolderViewCB* oldPtr2;
594 hr = folderView->SetCallback(oldPtr, &oldPtr2);
595 ok_int(g_AddRef, 2);
596 ok_int(g_Release, 0);
597 }
598
599 ULONG refCount = psv->Release();
600 ok(refCount == 1, "refCount = %lu\n", refCount);
601
602 static message release_list[] =
603 {
605
606 message(0, 0, 0)
607 };
608
609 /* Investigate why this fails */
610 if (refCount == 0)
611 {
612 compare_list(release_list);
613 }
614}
CDumExe dum
Definition: CComObject.cpp:71
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
Definition: CDefView.cpp:4675
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define SFVM_UNMERGEFROMMENU
#define SFVM_GETCOMMANDDIR
#define SFVM_MEASUREMENUITEM
#define DUM_MSG_BrowseObject
#define DUM_MSG_GetWindow
#define DUM_MSG_SetToolbarItems
#define SFVM_EXITMENULOOP
#define SFVM_CANSELECTALL
LONG g_Release
#define SFVM_COPYHOOKCALLBACK
#define DUM_MSG_ContextSensitiveHelp
#define SFVM_ISCHILDOBJECT
#define SFVM_GETCOLUMNSTREAM
#define SFVM_WINDOWFOCUSED
#define SFVM_REGISTERCOPYHOOK
LONG g_AddRef
#define SFVM_GET_CUSTOMVIEWINFO
#define DUM_MSG_TranslateAcceleratorSB
#define SFVM_ISSTRICTREFRESH
#define DUM_MSG_GetControlWindow
void add_msg(UINT uMsg, WPARAM wParam, LPARAM lParam)
void print_list_(const CSimpleArray< message > &input, const char *file, int line)
#define DUM_MSG_QueryActiveShellView
#define SFVM_GET_WEBVIEW_CONTENT
#define SFVM_GET_VIEW_DATA
#define SFVM_GETEXTVIEWS
#define DUM_MSG_OnViewWindowActive
#define DUM_MSG_SetStatusTextSB
#define SFVM_GETNAMELENGTH
#define DUM_MSG_RemoveMenusSB
void compare_list_(const CSimpleArray< message > &input, const message *compare, const char *file, int line)
static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static DWORD g_WinVersion
#define DUM_MSG_EnableModelessSB
#define DUM_MSG_SetMenuSB
#define SFVM_VIEWRELEASE
#define SFVM_ADDINGOBJECT
#define SFVM_ENUMERATEDITEMS
#define SFVM_GETDEFERREDVIEWSETTINGS
#define SFVM_REMOVINGOBJECT
#define SFVM_LISTREFRESHED
#define DUM_MSG_InsertMenusSB
#define SFVM_GET_WEBVIEW_THEME
#define WINVER_VISTA
#define DUM_MSG_SendControlMsg
#define SFVM_WINDOWCLOSING
void clear_list()
#define PTR_VALUE
#define SFVM_SELECTIONCHANGED
const char * msg2str(UINT uMsg)
CSimpleArray< message > g_Received
#define compare_list(cmp)
#define SFVM_GET_WEBVIEW_TASKS
#define SFVM_DRAWMENUITEM
#define SFVM_GET_WEBVIEW_LAYOUT
#define DUM_MSG_GetViewStateStream
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define ok_hex(expression, result)
Definition: atltest.h:94
#define ok(value,...)
Definition: atltest.h:57
#define START_TEST(x)
Definition: atltest.h:75
#define ok_(x1, x2)
Definition: atltest.h:61
#define ok_int(expression, result)
Definition: atltest.h:134
#define msg(x)
Definition: auth_time.c:54
#define index(s, c)
Definition: various.h:29
const GUID IID_IUnknown
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
virtual HRESULT STDMETHODCALLTYPE EnableModelessSB(BOOL fEnable)
virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorSB(MSG *pmsg, WORD wID)
virtual HRESULT STDMETHODCALLTYPE RemoveMenusSB(HMENU hmenuShared)
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode)
virtual HRESULT STDMETHODCALLTYPE GetViewStateStream(DWORD grfMode, IStream **ppStrm)
virtual HRESULT STDMETHODCALLTYPE InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
virtual HRESULT STDMETHODCALLTYPE SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret)
virtual HRESULT STDMETHODCALLTYPE OnViewWindowActive(IShellView *pshv)
virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(IShellView **ppshv)
virtual HRESULT STDMETHODCALLTYPE SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject)
virtual HRESULT STDMETHODCALLTYPE BrowseObject(PCUIDLIST_RELATIVE pidl, UINT wFlags)
virtual HRESULT STDMETHODCALLTYPE SetToolbarItems(LPTBBUTTONSB lpButtons, UINT nButtons, UINT uFlags)
virtual ULONG STDMETHODCALLTYPE Release(void)
virtual HRESULT STDMETHODCALLTYPE GetControlWindow(UINT id, HWND *phwnd)
virtual HRESULT STDMETHODCALLTYPE SetStatusTextSB(LPCWSTR pszStatusText)
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject)
virtual ULONG STDMETHODCALLTYPE AddRef(void)
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *phwnd)
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject)
virtual ULONG STDMETHODCALLTYPE Release(void)
virtual HRESULT STDMETHODCALLTYPE MessageSFVCB(UINT uMsg, WPARAM wParam, LPARAM lParam)
virtual ULONG STDMETHODCALLTYPE AddRef(void)
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112
UINT uFlags
Definition: api.c:59
#define GetProcAddress(x, y)
Definition: compat.h:753
#define CALLBACK
Definition: compat.h:35
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
GLdouble n
Definition: glext.h:7729
GLuint index
Definition: glext.h:6031
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLenum GLenum input
Definition: glext.h:9031
REFIID riid
Definition: atlbase.h:39
LPARAM LPTBBUTTONSB
Definition: shobjidl.idl:1074
HRESULT CreateViewWindow([in] IShellView *psvPrevious, [in] LPCFOLDERSETTINGS lpfs, [in] IShellBrowser *psb, [out] RECT *prcView, [out] HWND *phWnd)
HRESULT DestroyViewWindow()
HRESULT Refresh()
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
ULONG Release()
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define TEXT(s)
Definition: k32.h:26
#define trace_(file, line,...)
Definition: kmt_test.h:223
#define sprintf(buf, format,...)
Definition: sprintf.c:55
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
#define cmp(status, error)
Definition: error.c:114
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
unsigned int UINT
Definition: ndis.h:50
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
long LONG
Definition: pedump.c:60
#define REFIID
Definition: guiddef.h:118
#define DefWindowProc
Definition: ros2win.h:31
LONG winetest_get_failures(void)
HRESULT hr
Definition: shlfolder.c:183
#define SFVM_GETPANE
Definition: shlobj.h:1341
#define SFVM_UPDATESTATUSBAR
Definition: shlobj.h:1322
#define SFVM_GETHELPTOPIC
Definition: shlobj.h:1342
#define SFVM_INITMENUPOPUP
Definition: shlobj.h:1300
#define SFVM_DEFITEMCOUNT
Definition: shlobj.h:1317
#define SFVM_DEFVIEWMODE
Definition: shlobj.h:1318
#define SFVM_GETDETAILSOF
Definition: shlobj.h:1314
#define SFVM_WINDOWCREATED
Definition: shlobj.h:1308
#define SFVM_GETZONE
Definition: shlobj.h:1340
#define SFVM_BACKGROUNDENUM
Definition: shlobj.h:1323
#define SFVM_SIZE
Definition: shlobj.h:1339
#define SFVM_GETHELPTEXT
Definition: shlobj.h:1296
#define SFVM_BACKGROUNDENUMDONE
Definition: shlobj.h:1336
#define SFVM_THISIDLIST
Definition: shlobj.h:1332
#define SFVM_GETTOOLTIPTEXT
Definition: shlobj.h:1297
#define SFVM_MERGEMENU
Definition: shlobj.h:1294
#define SFVM_GETBUTTONINFO
Definition: shlobj.h:1298
#define SFVM_COLUMNCLICK
Definition: shlobj.h:1315
#define SFVM_ADDPROPERTYPAGES
Definition: shlobj.h:1335
#define SFVM_GETSORTDEFAULTS
Definition: shlobj.h:1338
#define SFVM_GETBUTTONS
Definition: shlobj.h:1299
#define SFVM_FSNOTIFY
Definition: shlobj.h:1307
#define SFVM_GETANIMATION
Definition: shlobj.h:1343
#define SFVM_INVOKECOMMAND
Definition: shlobj.h:1295
#define SFVM_QUERYFSNOTIFY
Definition: shlobj.h:1316
#define SFVM_DIDDRAGDROP
Definition: shlobj.h:1327
#define SFVM_GETNOTIFY
Definition: shlobj.h:1337
#define SFVM_SETISFV
Definition: shlobj.h:1330
@ FVM_DETAILS
Definition: shobjidl.idl:683
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
Definition: shtypes.idl:57
ULONG dwMajorVersion
Definition: rtltypes.h:270
ULONG dwMinorVersion
Definition: rtltypes.h:271
IShellFolderViewCB * psfvcb
Definition: shlobj.h:1360
HINSTANCE hInstance
Definition: winuser.h:3209
UINT style
Definition: winuser.h:3205
UINT cbSize
Definition: winuser.h:3204
WNDPROC lpfnWndProc
Definition: winuser.h:3206
LPCSTR lpszClassName
Definition: winuser.h:3214
Definition: bug.cpp:8
Definition: fci.c:127
Definition: ffs.h:70
Definition: parser.c:49
Definition: tftpd.h:60
message(UINT msg, WPARAM wp, LPARAM lp)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
#define __stdcall
Definition: typedefs.h:25
uint32_t ULONG
Definition: typedefs.h:59
#define GetModuleHandle
Definition: winbase.h:3852
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define E_NOINTERFACE
Definition: winerror.h:2364
#define CreateWindowEx
Definition: winuser.h:5767
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define CS_DBLCLKS
Definition: winuser.h:651
#define RegisterClassEx
Definition: winuser.h:5849
WNDCLASSEXA WNDCLASSEX
Definition: winuser.h:5731
#define SW_SHOW
Definition: winuser.h:778
#define WM_DESTROY
Definition: winuser.h:1612
#define IID_PPV_ARG(Itype, ppType)
char TCHAR
Definition: xmlstorage.h:189
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185