ReactOS  0.4.14-dev-854-gb9426a3
DragDrop.cpp File Reference
#include "shelltest.h"
#include <shlwapi.h>
#include <debug.h>
#include <stdio.h>
Include dependency graph for DragDrop.cpp:

Go to the source code of this file.

Classes

struct  TEST_ENTRY
 

Macros

#define NDEBUG
 
#define TESTFILENAME   L"DragDropTest.txt"
 
#define DROPPED_ON_FILE   L"DragDroppedOn.lnk"
 
#define D_NONE   DROPEFFECT_NONE
 
#define D_COPY   DROPEFFECT_COPY
 
#define D_MOVE   DROPEFFECT_MOVE
 
#define D_LINK   DROPEFFECT_LINK
 
#define D_NONE_OR_COPY   0xAABBCCDD
 
#define D_NONE_OR_MOVE   0x11223344
 
#define D_NONE_OR_LINK   0x55667788
 
#define MK_LBUTTON_SHIFT_CTRL   (MK_LBUTTON | MK_SHIFT | MK_CONTROL)
 

Enumerations

enum  OP {
  OP_NONE, OP_COPY, OP_MOVE, OP_LINK,
  OP_NONE_OR_COPY, OP_NONE_OR_MOVE, OP_NONE_OR_LINK
}
 

Functions

static void DoCreateTestFile (LPCWSTR pszFileName)
 
HRESULT DoCreateShortcut (LPCWSTR pszLnkFileName, LPCWSTR pszTargetPathName)
 
static HRESULT GetUIObjectOfAbsPidl (PIDLIST_ABSOLUTE pidl, REFIID riid, LPVOID *ppvOut)
 
static HRESULT GetUIObjectOfPath (LPCWSTR pszPath, REFIID riid, LPVOID *ppvOut)
 
BOOL DoSpecExistsW (LPCWSTR pszSpec)
 
void DoDeleteSpecW (LPCWSTR pszSpec)
 
static void DoTestEntry (const TEST_ENTRY *pEntry)
 
 START_TEST (DragDrop)
 

Variables

static CComPtr< IShellFolders_pDesktop
 
static WCHAR s_szSrcTestFile [MAX_PATH]
 
static WCHAR s_szDestFolder [MAX_PATH]
 
static WCHAR s_szDestTestFile [MAX_PATH]
 
static WCHAR s_szDestLinkSpec [MAX_PATH]
 
static WCHAR s_szDroppedToItem [MAX_PATH]
 
static const TEST_ENTRY s_TestEntries []
 

Macro Definition Documentation

◆ D_COPY

#define D_COPY   DROPEFFECT_COPY

Definition at line 38 of file DragDrop.cpp.

◆ D_LINK

#define D_LINK   DROPEFFECT_LINK

Definition at line 40 of file DragDrop.cpp.

◆ D_MOVE

#define D_MOVE   DROPEFFECT_MOVE

Definition at line 39 of file DragDrop.cpp.

◆ D_NONE

#define D_NONE   DROPEFFECT_NONE

Definition at line 37 of file DragDrop.cpp.

◆ D_NONE_OR_COPY

#define D_NONE_OR_COPY   0xAABBCCDD

Definition at line 41 of file DragDrop.cpp.

◆ D_NONE_OR_LINK

#define D_NONE_OR_LINK   0x55667788

Definition at line 43 of file DragDrop.cpp.

◆ D_NONE_OR_MOVE

#define D_NONE_OR_MOVE   0x11223344

Definition at line 42 of file DragDrop.cpp.

◆ DROPPED_ON_FILE

#define DROPPED_ON_FILE   L"DragDroppedOn.lnk"

Definition at line 16 of file DragDrop.cpp.

◆ MK_LBUTTON_SHIFT_CTRL

#define MK_LBUTTON_SHIFT_CTRL   (MK_LBUTTON | MK_SHIFT | MK_CONTROL)

◆ NDEBUG

#define NDEBUG

Definition at line 11 of file DragDrop.cpp.

◆ TESTFILENAME

#define TESTFILENAME   L"DragDropTest.txt"

Definition at line 15 of file DragDrop.cpp.

Enumeration Type Documentation

◆ OP

Enumerator
OP_NONE 
OP_COPY 
OP_MOVE 
OP_LINK 
OP_NONE_OR_COPY 
OP_NONE_OR_MOVE 
OP_NONE_OR_LINK 

Definition at line 26 of file DragDrop.cpp.

Function Documentation

◆ DoCreateShortcut()

HRESULT DoCreateShortcut ( LPCWSTR  pszLnkFileName,
LPCWSTR  pszTargetPathName 
)

Definition at line 109 of file DragDrop.cpp.

112 {
113  CComPtr<IPersistFile> ppf;
114  CComPtr<IShellLinkW> psl;
115  HRESULT hr;
116 
117  hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
118  IID_IShellLinkW, (LPVOID *)&psl);
119  if (SUCCEEDED(hr))
120  {
121  psl->SetPath(pszTargetPathName);
122 
123  hr = psl->QueryInterface(IID_IPersistFile, (LPVOID *)&ppf);
124  if (SUCCEEDED(hr))
125  {
126  hr = ppf->Save(pszLnkFileName, TRUE);
127  }
128  }
129 
130  return hr;
131 }
#define TRUE
Definition: types.h:120
HRESULT hr
Definition: shlfolder.c:183
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
const GUID IID_IPersistFile
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by DoTestEntry().

◆ DoCreateTestFile()

static void DoCreateTestFile ( LPCWSTR  pszFileName)
static

Definition at line 102 of file DragDrop.cpp.

103 {
104  FILE *fp = _wfopen(pszFileName, L"wb");
105  ok(fp != NULL, "fp is NULL for '%S'\n", pszFileName);
106  fclose(fp);
107 }
_Check_return_ _CRTIMP FILE *__cdecl _wfopen(_In_z_ const wchar_t *_Filename, _In_z_ const wchar_t *_Mode)
WORD WORD PSZ PSZ pszFileName
Definition: vdmdbg.h:41
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR L[]
Definition: oid.c:1250
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
#define ok(value,...)
Definition: atltest.h:57

Referenced by DoTestEntry().

◆ DoDeleteSpecW()

void DoDeleteSpecW ( LPCWSTR  pszSpec)

Definition at line 177 of file DragDrop.cpp.

178 {
179  WCHAR szPath[MAX_PATH], szFile[MAX_PATH];
180  lstrcpyW(szPath, pszSpec);
182 
184  HANDLE hFind = FindFirstFileW(pszSpec, &find);
185  if (hFind != INVALID_HANDLE_VALUE)
186  {
187  do
188  {
189  lstrcpyW(szFile, szPath);
190  PathAppendW(szFile, find.cFileName);
191  DeleteFileW(szFile);
192  } while (FindNextFileW(hFind, &find));
193 
194  FindClose(hFind);
195  }
196 }
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
Definition: find.c:382
BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath)
Definition: path.c:624
#define INVALID_HANDLE_VALUE
Definition: compat.h:399
BOOL WINAPI PathAppendW(LPWSTR lpszPath, LPCWSTR lpszAppend)
Definition: path.c:121
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
Definition: delete.c:39
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:26
#define lstrcpyW
Definition: compat.h:414
LPCWSTR szPath
Definition: env.c:35
static TAGID TAGID find
Definition: db.cpp:153
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
Definition: find.c:320
BOOL WINAPI FindClose(HANDLE hFindFile)
Definition: find.c:502

Referenced by DoTestEntry(), and START_TEST().

◆ DoSpecExistsW()

BOOL DoSpecExistsW ( LPCWSTR  pszSpec)

Definition at line 165 of file DragDrop.cpp.

166 {
168  HANDLE hFind = FindFirstFileW(pszSpec, &find);
169  if (hFind != INVALID_HANDLE_VALUE)
170  {
171  FindClose(hFind);
172  return TRUE;
173  }
174  return FALSE;
175 }
#define TRUE
Definition: types.h:120
#define INVALID_HANDLE_VALUE
Definition: compat.h:399
static TAGID TAGID find
Definition: db.cpp:153
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
Definition: find.c:320
BOOL WINAPI FindClose(HANDLE hFindFile)
Definition: find.c:502

Referenced by DoTestEntry().

◆ DoTestEntry()

static void DoTestEntry ( const TEST_ENTRY pEntry)
static

Definition at line 198 of file DragDrop.cpp.

199 {
200  int line = pEntry->line;
201  HRESULT hr;
202  PIDLIST_ABSOLUTE pidlDesktop = NULL;
203  CComPtr<IDropTarget> pDropTarget;
204  CComPtr<IDataObject> pDataObject;
205 
206  // get the desktop PIDL
208  ok(!!pidlDesktop, "pidlDesktop is NULL\n");
209 
210  // build paths
211  //
214 
218 
221 
223  PathAppendW(s_szDestLinkSpec, L"*DragDropTest*.lnk");
224 
225  //trace("s_szSrcTestFile: '%S'\n", s_szSrcTestFile);
226  //trace("s_szDestTestFile: '%S'\n", s_szDestTestFile);
227  //trace("s_szDestLinkSpec: '%S'\n", s_szDestLinkSpec);
228  //trace("s_szDroppedToItem: '%S'\n", s_szDroppedToItem);
229 
230  // create or delete files
231  //
237 
238  // check file existence
239  //
240  ok(PathIsDirectoryW(s_szDestFolder), "s_szDestFolder is not directory\n");
241  ok(PathFileExistsW(s_szSrcTestFile), "s_szSrcTestFile doesn't exist\n");
242  ok(!DoSpecExistsW(s_szDestLinkSpec), "s_szDestLinkSpec doesn't exist\n");
243  ok(!PathFileExistsW(s_szDestTestFile), "s_szDestTestFile exists\n");
244 
245  // get an IDataObject
246  pDataObject = NULL;
248  ok_long(hr, S_OK);
249 
250  // get an IDropTarget
251  CComPtr<IEnumIDList> pEnumIDList;
252  PIDLIST_ABSOLUTE pidl = NULL;
253  hr = s_pDesktop->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS,
254  &pEnumIDList);
255  ok_long(hr, S_OK);
256  while (pEnumIDList->Next(1, &pidl, NULL) == S_OK)
257  {
261  {
262  break;
263  }
264  CoTaskMemFree(pidl);
265  pidl = NULL;
266  }
267  ok(pidl != NULL, "Line %d: pidl is NULL\n", line);
268  pDropTarget = NULL;
269  PITEMID_CHILD pidlLast = ILFindLastID(pidl);
270  hr = s_pDesktop->GetUIObjectOf(NULL, 1, &pidlLast, IID_IDropTarget,
271  NULL, (LPVOID *)&pDropTarget);
272  CoTaskMemFree(pidl);
273  ok_long(hr, S_OK);
274 
275  if (!pDropTarget)
276  {
277  skip("Line %d: pDropTarget was NULL\n", line);
278 
279  // clean up
283  ILFree(pidlDesktop);
284 
285  return;
286  }
287 
288  // DragEnter
289  POINTL ptl = { 0, 0 };
290  DWORD dwKeyState = pEntry->dwKeyState;
291  DWORD dwEffects = pEntry->dwEffects1;
292  hr = pDropTarget->DragEnter(pDataObject, dwKeyState, ptl, &dwEffects);
293 
294  ok(hr == pEntry->hr1, "Line %d: hr1 was %08lX\n", line, hr);
295 
296  switch (pEntry->dwEffects2)
297  {
298  case D_NONE_OR_COPY:
299  ok((dwEffects == D_NONE || dwEffects == D_COPY),
300  "Line %d: dwEffects2 was %08lX\n", line, dwEffects);
301  break;
302  case D_NONE_OR_MOVE:
303  ok((dwEffects == D_NONE || dwEffects == D_MOVE),
304  "Line %d: dwEffects2 was %08lX\n", line, dwEffects);
305  break;
306  case D_NONE_OR_LINK:
307  ok((dwEffects == D_NONE || dwEffects == D_LINK),
308  "Line %d: dwEffects2 was %08lX\n", line, dwEffects);
309  break;
310  default:
311  ok(dwEffects == pEntry->dwEffects2,
312  "Line %d: dwEffects2 was %08lX\n", line, dwEffects);
313  break;
314  }
315 
316  // Drop
317  hr = pDropTarget->Drop(pDataObject, dwKeyState, ptl, &dwEffects);
318  ok(hr == pEntry->hr2, "Line %d: hr2 was %08lX\n", line, hr);
319 
320  switch (pEntry->dwEffects3)
321  {
322  case D_NONE_OR_COPY:
323  ok((dwEffects == D_NONE || dwEffects == D_COPY),
324  "Line %d: dwEffects3 was %08lX\n", line, dwEffects);
325  break;
326  case D_NONE_OR_MOVE:
327  ok((dwEffects == D_NONE || dwEffects == D_MOVE),
328  "Line %d: dwEffects3 was %08lX\n", line, dwEffects);
329  break;
330  case D_NONE_OR_LINK:
331  ok((dwEffects == D_NONE || dwEffects == D_LINK),
332  "Line %d: dwEffects3 was %08lX\n", line, dwEffects);
333  break;
334  default:
335  ok(dwEffects == pEntry->dwEffects3,
336  "Line %d: dwEffects3 was %08lX\n", line, dwEffects);
337  break;
338  }
339 
340  // check file existence by pEntry->op
341  switch (pEntry->op)
342  {
343  case OP_NONE:
344  ok(PathFileExistsW(s_szSrcTestFile), "Line %d: src not exists\n", line);
345  ok(!PathFileExistsW(s_szDestTestFile), "Line %d: dest exists\n", line);
346  ok(!DoSpecExistsW(s_szDestLinkSpec), "Line %d: link exists\n", line);
347  break;
348  case OP_COPY:
349  ok(PathFileExistsW(s_szSrcTestFile), "Line %d: src not exists\n", line);
350  ok(PathFileExistsW(s_szDestTestFile), "Line %d: dest not exists\n", line);
351  ok(!DoSpecExistsW(s_szDestLinkSpec), "Line %d: link exists\n", line);
352  break;
353  case OP_MOVE:
354  ok(!PathFileExistsW(s_szSrcTestFile), "Line %d: src exists\n", line);
355  ok(PathFileExistsW(s_szDestTestFile), "Line %d: dest not exists\n", line);
356  ok(!DoSpecExistsW(s_szDestLinkSpec), "Line %d: link exists\n", line);
357  break;
358  case OP_LINK:
359  ok(PathFileExistsW(s_szSrcTestFile), "Line %d: src not exists\n", line);
360  ok(!PathFileExistsW(s_szDestTestFile), "Line %d: dest not exists\n", line);
361  ok(DoSpecExistsW(s_szDestLinkSpec), "Line %d: link not exists\n", line);
362  break;
363  case OP_NONE_OR_COPY:
364  ok(PathFileExistsW(s_szSrcTestFile), "Line %d: src not exists\n", line);
365  ok(!DoSpecExistsW(s_szDestLinkSpec), "Line %d: link exists\n", line);
366  break;
367  case OP_NONE_OR_MOVE:
369  "Line %d: It must be either None or Move\n", line);
370  break;
371  case OP_NONE_OR_LINK:
372  ok(PathFileExistsW(s_szSrcTestFile), "Line %d: src not exists\n", line);
373  ok(!PathFileExistsW(s_szDestTestFile), "Line %d: dest not exists\n", line);
374  break;
375  }
376 
377  // clean up
381  ILFree(pidlDesktop);
382 }
static WCHAR s_szSrcTestFile[MAX_PATH]
Definition: DragDrop.cpp:20
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
Definition: path.c:1702
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:609
static WCHAR s_szDestTestFile[MAX_PATH]
Definition: DragDrop.cpp:22
BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath)
Definition: path.c:624
#define D_NONE_OR_LINK
Definition: DragDrop.cpp:43
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:925
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
HRESULT hr
Definition: shlfolder.c:183
HRESULT DoCreateShortcut(LPCWSTR pszLnkFileName, LPCWSTR pszTargetPathName)
Definition: DragDrop.cpp:109
#define CSIDL_DESKTOP
Definition: shlobj.h:2011
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
#define _countof(array)
Definition: fontsub.cpp:30
#define D_NONE
Definition: DragDrop.cpp:37
static void DoCreateTestFile(LPCWSTR pszFileName)
Definition: DragDrop.cpp:102
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1280
HRESULT hr1
Definition: DragDrop.cpp:49
static HRESULT GetUIObjectOfPath(LPCWSTR pszPath, REFIID riid, LPVOID *ppvOut)
Definition: DragDrop.cpp:150
const GUID IID_IDataObject
#define ok_long(expression, result)
Definition: atltest.h:133
#define D_MOVE
Definition: DragDrop.cpp:39
DWORD dwEffects1
Definition: DragDrop.cpp:52
void DoDeleteSpecW(LPCWSTR pszSpec)
Definition: DragDrop.cpp:177
static WCHAR s_szDestFolder[MAX_PATH]
Definition: DragDrop.cpp:21
BOOL WINAPI PathAppendW(LPWSTR lpszPath, LPCWSTR lpszAppend)
Definition: path.c:121
static const WCHAR szText[]
Definition: dialog.c:139
HRESULT hr2
Definition: DragDrop.cpp:50
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
Definition: delete.c:39
smooth NULL
Definition: ftsmooth.c:416
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
Definition: pidl.c:189
Definition: parser.c:48
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
Definition: path.c:1756
DWORD dwEffects3
Definition: DragDrop.cpp:54
DWORD dwKeyState
Definition: DragDrop.cpp:51
#define TESTFILENAME
Definition: DragDrop.cpp:15
DWORD dwEffects2
Definition: DragDrop.cpp:53
__wchar_t WCHAR
Definition: xmlstorage.h:180
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:2695
LONG HRESULT
Definition: typedefs.h:77
#define D_NONE_OR_MOVE
Definition: DragDrop.cpp:42
#define MAX_PATH
Definition: compat.h:26
INT line
Definition: cmd.c:14
unsigned long DWORD
Definition: ntddk_ex.h:95
static const WCHAR L[]
Definition: oid.c:1250
OP op
Definition: DragDrop.cpp:48
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:414
#define ok(value,...)
Definition: atltest.h:57
#define DROPPED_ON_FILE
Definition: DragDrop.cpp:16
#define skip(...)
Definition: atltest.h:64
#define D_NONE_OR_COPY
Definition: DragDrop.cpp:41
static WCHAR s_szDroppedToItem[MAX_PATH]
Definition: DragDrop.cpp:24
static WCHAR s_szDestLinkSpec[MAX_PATH]
Definition: DragDrop.cpp:23
BOOL DoSpecExistsW(LPCWSTR pszSpec)
Definition: DragDrop.cpp:165
#define D_LINK
Definition: DragDrop.cpp:40
static CComPtr< IShellFolder > s_pDesktop
Definition: DragDrop.cpp:18
#define D_COPY
Definition: DragDrop.cpp:38

Referenced by START_TEST().

◆ GetUIObjectOfAbsPidl()

static HRESULT GetUIObjectOfAbsPidl ( PIDLIST_ABSOLUTE  pidl,
REFIID  riid,
LPVOID ppvOut 
)
static

Definition at line 134 of file DragDrop.cpp.

135 {
136  *ppvOut = NULL;
137 
138  LPCITEMIDLIST pidlLast;
139  CComPtr<IShellFolder> psf;
140  HRESULT hr = SHBindToParent(pidl, IID_IShellFolder, (LPVOID *)&psf,
141  &pidlLast);
142  if (FAILED(hr))
143  return hr;
144 
145  hr = psf->GetUIObjectOf(NULL, 1, &pidlLast, riid, NULL, ppvOut);
146  return hr;
147 }
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
Definition: pidl.c:1323

Referenced by GetUIObjectOfPath().

◆ GetUIObjectOfPath()

static HRESULT GetUIObjectOfPath ( LPCWSTR  pszPath,
REFIID  riid,
LPVOID ppvOut 
)
static

Definition at line 150 of file DragDrop.cpp.

151 {
152  *ppvOut = NULL;
153 
154  PIDLIST_ABSOLUTE pidl = ILCreateFromPathW(pszPath);
155  if (!pidl)
156  return E_FAIL;
157 
158  HRESULT hr = GetUIObjectOfAbsPidl(pidl, riid, ppvOut);
159 
160  CoTaskMemFree(pidl);
161 
162  return hr;
163 }
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
#define E_FAIL
Definition: ddrawi.h:102
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
static HRESULT GetUIObjectOfAbsPidl(PIDLIST_ABSOLUTE pidl, REFIID riid, LPVOID *ppvOut)
Definition: DragDrop.cpp:134
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
Definition: pidl.c:982

Referenced by DoTestEntry().

◆ START_TEST()

START_TEST ( DragDrop  )

Definition at line 384 of file DragDrop.cpp.

385 {
387  ok_int(SUCCEEDED(hr), TRUE);
388 
390  ok(!!s_pDesktop, "s_pDesktop is NULL\n");
391 
393  ok_int(ret, TRUE);
394 
395  for (size_t i = 0; i < _countof(s_TestEntries); ++i)
396  {
398  }
399 
404 
405  CoUninitialize();
406 }
static WCHAR s_szSrcTestFile[MAX_PATH]
Definition: DragDrop.cpp:20
static WCHAR s_szDestTestFile[MAX_PATH]
Definition: DragDrop.cpp:22
#define TRUE
Definition: types.h:120
HRESULT hr
Definition: shlfolder.c:183
#define CSIDL_DESKTOP
Definition: shlobj.h:2011
#define _countof(array)
Definition: fontsub.cpp:30
void DoDeleteSpecW(LPCWSTR pszSpec)
Definition: DragDrop.cpp:177
static WCHAR s_szDestFolder[MAX_PATH]
Definition: DragDrop.cpp:21
static const TEST_ENTRY s_TestEntries[]
Definition: DragDrop.cpp:57
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
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
Definition: delete.c:39
smooth NULL
Definition: ftsmooth.c:416
#define ok_int(expression, result)
Definition: atltest.h:134
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
LONG HRESULT
Definition: typedefs.h:77
int ret
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
Definition: shellpath.c:2574
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
#define ok(value,...)
Definition: atltest.h:57
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
Definition: compobj.c:2002
static void DoTestEntry(const TEST_ENTRY *pEntry)
Definition: DragDrop.cpp:198
static WCHAR s_szDroppedToItem[MAX_PATH]
Definition: DragDrop.cpp:24
static WCHAR s_szDestLinkSpec[MAX_PATH]
Definition: DragDrop.cpp:23
static CComPtr< IShellFolder > s_pDesktop
Definition: DragDrop.cpp:18
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Variable Documentation

◆ s_pDesktop

CComPtr<IShellFolder> s_pDesktop
static

Definition at line 18 of file DragDrop.cpp.

Referenced by DoTestEntry(), and START_TEST().

◆ s_szDestFolder

WCHAR s_szDestFolder[MAX_PATH]
static

Definition at line 21 of file DragDrop.cpp.

Referenced by DoTestEntry(), and START_TEST().

◆ s_szDestLinkSpec

WCHAR s_szDestLinkSpec[MAX_PATH]
static

Definition at line 23 of file DragDrop.cpp.

Referenced by DoTestEntry(), and START_TEST().

◆ s_szDestTestFile

WCHAR s_szDestTestFile[MAX_PATH]
static

Definition at line 22 of file DragDrop.cpp.

Referenced by DoTestEntry(), and START_TEST().

◆ s_szDroppedToItem

WCHAR s_szDroppedToItem[MAX_PATH]
static

Definition at line 24 of file DragDrop.cpp.

Referenced by DoTestEntry(), and START_TEST().

◆ s_szSrcTestFile

WCHAR s_szSrcTestFile[MAX_PATH]
static

Definition at line 20 of file DragDrop.cpp.

Referenced by DoTestEntry(), and START_TEST().

◆ s_TestEntries

const TEST_ENTRY s_TestEntries[]
static

Definition at line 57 of file DragDrop.cpp.

Referenced by START_TEST().