ReactOS 0.4.17-dev-804-g023d8af
CExeDropHandler Class Reference

#include <CexeDropHandler.h>

Inheritance diagram for CExeDropHandler:
Collaboration diagram for CExeDropHandler:

Public Member Functions

 CExeDropHandler ()
 
 ~CExeDropHandler ()
 
STDMETHOD() DragEnter (IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect) override
 
STDMETHOD() DragOver (DWORD dwKeyState, POINTL pt, DWORD *pdwEffect) override
 
STDMETHOD() DragLeave () override
 
STDMETHOD() Drop (IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect) override
 
STDMETHOD() GetClassID (CLSID *lpClassId) override
 
STDMETHOD() GetCurFile (LPOLESTR *ppszFileName) override
 
STDMETHOD() IsDirty () override
 
STDMETHOD() Load (LPCOLESTR pszFileName, DWORD dwMode) override
 
STDMETHOD() Save (LPCOLESTR pszFileName, BOOL fRemember) override
 
STDMETHOD() SaveCompleted (LPCOLESTR pszFileName) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
HRESULT DragEnter ([in, unique] IDataObject *pDataObj, [in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 
HRESULT DragOver ([in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 
HRESULT DragLeave ()
 
HRESULT Drop ([in, unique] IDataObject *pDataObj, [in] DWORD grfKeyState, [in] POINTL pt, [in, out] DWORD *pdwEffect)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
HRESULT IsDirty ()
 
HRESULT Load ([in] LPCOLESTR pszFileName, [in] DWORD dwMode)
 
HRESULT Save ([in, unique] LPCOLESTR pszFileName, [in] BOOL fRemember)
 
HRESULT SaveCompleted ([in, unique] LPCOLESTR pszFileName)
 
HRESULT GetCurFile ([out] LPOLESTR *ppszFileName)
 
HRESULT GetClassID ([out] CLSID *pClassID)
 

Private Attributes

LPWSTR m_PathTarget = NULL
 
DWORD m_grfKeyState = 0
 

Additional Inherited Members

- Public Types inherited from IDropTarget
typedef IDropTargetLPDROPTARGET
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IPersistFile
typedef IPersistFileLPPERSISTFILE
 
- Public Types inherited from IPersist
typedef IPersistLPPERSIST
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 
- Public Attributes inherited from IDropTarget
const DWORD MK_ALT = 0x20
 
const DWORD DROPEFFECT_NONE = 0
 
const DWORD DROPEFFECT_COPY = 1
 
const DWORD DROPEFFECT_MOVE = 2
 
const DWORD DROPEFFECT_LINK = 4
 
const DWORD DROPEFFECT_SCROLL = 0x80000000
 
const DWORD DD_DEFSCROLLINSET = 11
 
const DWORD DD_DEFSCROLLDELAY = 50
 
const DWORD DD_DEFSCROLLINTERVAL = 50
 
const DWORD DD_DEFDRAGDELAY = 200
 
const DWORD DD_DEFDRAGMINDIST = 2
 

Detailed Description

Definition at line 24 of file CexeDropHandler.h.

Constructor & Destructor Documentation

◆ CExeDropHandler()

CExeDropHandler::CExeDropHandler ( )

Definition at line 25 of file CexeDropHandler.cpp.

26{
27
28}

◆ ~CExeDropHandler()

CExeDropHandler::~CExeDropHandler ( )

Definition at line 30 of file CexeDropHandler.cpp.

31{
33}
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:370

Member Function Documentation

◆ DragEnter()

HRESULT WINAPI CExeDropHandler::DragEnter ( IDataObject pDataObject,
DWORD  dwKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 36 of file CexeDropHandler.cpp.

37{
38 TRACE ("(%p)\n", this);
39 if (*pdwEffect == DROPEFFECT_NONE)
40 return S_OK;
41
42 m_grfKeyState = dwKeyState;
43 *pdwEffect = DROPEFFECT_COPY;
44 return S_OK;
45}
const DWORD DROPEFFECT_NONE
Definition: oleidl.idl:929
const DWORD DROPEFFECT_COPY
Definition: oleidl.idl:930
#define S_OK
Definition: intsafe.h:52
#define TRACE(s)
Definition: solgame.cpp:4

◆ DragLeave()

HRESULT WINAPI CExeDropHandler::DragLeave ( )
override

Implements IDropTarget.

Definition at line 55 of file CexeDropHandler.cpp.

56{
57 TRACE ("(%p)\n", this);
58 return S_OK;
59}

◆ DragOver()

HRESULT WINAPI CExeDropHandler::DragOver ( DWORD  dwKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 47 of file CexeDropHandler.cpp.

48{
49 TRACE ("(%p)\n", this);
50 m_grfKeyState = dwKeyState;
51 *pdwEffect = DROPEFFECT_COPY;
52 return S_OK;
53}

◆ Drop()

HRESULT WINAPI CExeDropHandler::Drop ( IDataObject pDataObject,
DWORD  dwKeyState,
POINTL  pt,
DWORD pdwEffect 
)
override

Implements IDropTarget.

Definition at line 61 of file CexeDropHandler.cpp.

62{
63 TRACE ("(%p)\n", this);
64 FORMATETC fmt;
65 STGMEDIUM medium;
66 LPWSTR pszSrcList;
67 InitFormatEtc (fmt, CF_HDROP, TYMED_HGLOBAL);
68 WCHAR wszBuf[MAX_PATH * 2 + 8], *pszEnd = wszBuf;
69 size_t cchRemaining = _countof(wszBuf);
70
72 {
74 if (!hmenu)
75 return E_OUTOFMEMORY;
85 if (!cmd)
86 return S_OK;
87 }
88
89 if (SUCCEEDED(pDataObject->GetData(&fmt, &medium)) /* && SUCCEEDED(pDataObject->GetData(&fmt2, &medium))*/)
90 {
91 LPDROPFILES lpdf = (LPDROPFILES) GlobalLock(medium.hGlobal);
92 if (!lpdf)
93 {
94 ERR("Error locking global\n");
95 ReleaseStgMedium(&medium);
96 return E_FAIL;
97 }
98 pszSrcList = (LPWSTR) (((byte*) lpdf) + lpdf->pFiles);
99 while (*pszSrcList)
100 {
101 if (StrChrW(pszSrcList, L' ') && cchRemaining > 3)
102 StringCchPrintfExW(pszEnd, cchRemaining, &pszEnd, &cchRemaining, 0, L"\"%ls\" ", pszSrcList);
103 else
104 StringCchPrintfExW(pszEnd, cchRemaining, &pszEnd, &cchRemaining, 0, L"%ls ", pszSrcList);
105
106 pszSrcList += wcslen(pszSrcList) + 1;
107 }
108
109 GlobalUnlock(medium.hGlobal);
110 ReleaseStgMedium(&medium);
111 }
112
114
115 return S_OK;
116}
#define shell32_hInstance
#define CF_HDROP
Definition: constants.h:410
#define ERR(fmt,...)
Definition: precomp.h:57
static UINT TrackPopupMenu(HMENU hMenu, const POINTL &pt)
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
Definition: string.c:464
#define MAX_PATH
Definition: compat.h:34
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
Definition: ole2.c:2014
#define pt(x, y)
Definition: drawing.c:79
#define L(x)
Definition: resources.c:13
#define InitFormatEtc(fe, cf, med)
Definition: editor.h:32
unsigned int UINT
Definition: sysinfo.c:13
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
Definition: heapmem.c:1190
HRESULT GetData([in, unique] FORMATETC *pformatetcIn, [out] STGMEDIUM *pmedium)
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static ERESOURCE GlobalLock
Definition: sys_arch.c:8
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
static HMENU hpopupmenu
Definition: msg.c:19998
static HMENU hmenu
Definition: win.c:78
short WCHAR
Definition: pedump.c:58
#define LoadStringW
Definition: utils.h:64
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2787
struct _DROPFILES * LPDROPFILES
#define IDM_DRAGFILE
Definition: shresdef.h:918
#define IDM_MOVEHERE
Definition: shresdef.h:920
#define IDM_LINKHERE
Definition: shresdef.h:921
#define IDS_OPEN_WITH
Definition: shresdef.h:134
#define IDM_COPYHERE
Definition: shresdef.h:919
#define _countof(array)
Definition: sndvol32.h:70
STRSAFEAPI StringCchPrintfExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:585
Definition: ftp_var.h:139
Definition: dsound.c:943
uint16_t * LPWSTR
Definition: typedefs.h:56
#define SW_SHOWNORMAL
Definition: winuser.h:781
#define MK_RBUTTON
Definition: winuser.h:2404
#define MF_BYCOMMAND
Definition: winuser.h:202
BOOL WINAPI SetMenuDefaultItem(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI InsertMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define MF_STRING
Definition: winuser.h:138
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
#define IDOK
Definition: winuser.h:841
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define MF_BYPOSITION
Definition: winuser.h:203
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)

◆ GetClassID()

HRESULT WINAPI CExeDropHandler::GetClassID ( CLSID lpClassId)
override

Implements IPersist.

Definition at line 154 of file CexeDropHandler.cpp.

155{
156 TRACE ("(%p)\n", this);
157
158 if (!lpClassId)
159 return E_POINTER;
160
161 *lpClassId = CLSID_ExeDropHandler;
162
163 return S_OK;
164}
#define E_POINTER
Definition: winerror.h:3480

◆ GetCurFile()

HRESULT WINAPI CExeDropHandler::GetCurFile ( LPOLESTR *  ppszFileName)
override

Implements IPersistFile.

Definition at line 120 of file CexeDropHandler.cpp.

121{
122 FIXME ("(%p)\n", this);
123 return E_NOTIMPL;
124}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IsDirty()

HRESULT WINAPI CExeDropHandler::IsDirty ( void  )
override

Implements IPersistFile.

Definition at line 126 of file CexeDropHandler.cpp.

127{
128 FIXME ("(%p)\n", this);
129 return E_NOTIMPL;
130}

◆ Load()

HRESULT WINAPI CExeDropHandler::Load ( LPCOLESTR  pszFileName,
DWORD  dwMode 
)
override

Implements IPersistFile.

Definition at line 132 of file CexeDropHandler.cpp.

133{
135 m_PathTarget = (WCHAR *)SHAlloc((len + 1) * sizeof(WCHAR));
136 if (!m_PathTarget)
137 return E_OUTOFMEMORY;
138 memcpy(m_PathTarget, pszFileName, (len + 1) * sizeof(WCHAR));
139 return S_OK;
140}
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:348
GLenum GLsizei len
Definition: glext.h:6722
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
WORD WORD PSZ PSZ pszFileName
Definition: vdmdbg.h:44
#define strlenW(s)
Definition: unicode.h:28

◆ Save()

HRESULT WINAPI CExeDropHandler::Save ( LPCOLESTR  pszFileName,
BOOL  fRemember 
)
override

Implements IPersistFile.

Definition at line 142 of file CexeDropHandler.cpp.

143{
144 FIXME ("(%p)\n", this);
145 return E_NOTIMPL;
146}

◆ SaveCompleted()

HRESULT WINAPI CExeDropHandler::SaveCompleted ( LPCOLESTR  pszFileName)
override

Implements IPersistFile.

Definition at line 148 of file CexeDropHandler.cpp.

149{
150 FIXME ("(%p)\n", this);
151 return E_NOTIMPL;
152}

Member Data Documentation

◆ m_grfKeyState

DWORD CExeDropHandler::m_grfKeyState = 0
private

Definition at line 32 of file CexeDropHandler.h.

Referenced by DragEnter(), DragOver(), and Drop().

◆ m_PathTarget

LPWSTR CExeDropHandler::m_PathTarget = NULL
private

Definition at line 31 of file CexeDropHandler.h.

Referenced by Drop(), Load(), and ~CExeDropHandler().


The documentation for this class was generated from the following files: