Stubs for DragDropHelper.
This commit is contained in:
parent
03c1f4a032
commit
1166dc733a
|
@ -21,6 +21,7 @@ C_SRCS = \
|
||||||
dataobject.c \
|
dataobject.c \
|
||||||
debughlp.c \
|
debughlp.c \
|
||||||
dialogs.c \
|
dialogs.c \
|
||||||
|
dragdrophelper.c \
|
||||||
enumidlist.c \
|
enumidlist.c \
|
||||||
folders.c \
|
folders.c \
|
||||||
iconcache.c \
|
iconcache.c \
|
||||||
|
|
|
@ -0,0 +1,182 @@
|
||||||
|
/*
|
||||||
|
* file system folder
|
||||||
|
*
|
||||||
|
* Copyright 1997 Marcus Meissner
|
||||||
|
* Copyright 1998, 1999, 2002 Juergen Schmied
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include "wine/port.h"
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "winbase.h"
|
||||||
|
#include "winreg.h"
|
||||||
|
|
||||||
|
#include "oleidl.h"
|
||||||
|
#include "shlguid.h"
|
||||||
|
|
||||||
|
#include "wine/obj_dragdrophelper.h"
|
||||||
|
#include "wine/debug.h"
|
||||||
|
#include "debughlp.h"
|
||||||
|
|
||||||
|
WINE_DEFAULT_DEBUG_CHANNEL (shell);
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* IDropTargetHelper implementation
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
ICOM_VFIELD (IDropTargetHelper);
|
||||||
|
DWORD ref;
|
||||||
|
} IDropTargetHelperImpl;
|
||||||
|
|
||||||
|
static struct ICOM_VTABLE (IDropTargetHelper) vt_IDropTargetHelper;
|
||||||
|
|
||||||
|
#define _IUnknown_(This) (IUnknown*)&(This->lpVtbl)
|
||||||
|
#define _IDropTargetHelper_(This) (IDropTargetHelper*)&(This->lpVtbl)
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* IDropTargetHelper_Constructor
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI IDropTargetHelper_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv)
|
||||||
|
{
|
||||||
|
IDropTargetHelperImpl *dth;
|
||||||
|
|
||||||
|
TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid));
|
||||||
|
|
||||||
|
if (!ppv)
|
||||||
|
return E_POINTER;
|
||||||
|
if (pUnkOuter)
|
||||||
|
return CLASS_E_NOAGGREGATION;
|
||||||
|
|
||||||
|
dth = (IDropTargetHelperImpl *) LocalAlloc (GMEM_ZEROINIT, sizeof (IDropTargetHelperImpl));
|
||||||
|
if (!dth) return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
dth->ref = 0;
|
||||||
|
ICOM_VTBL (dth) = &vt_IDropTargetHelper;
|
||||||
|
|
||||||
|
if (!SUCCEEDED (IUnknown_QueryInterface (_IUnknown_ (dth), riid, ppv))) {
|
||||||
|
IUnknown_Release (_IUnknown_ (dth));
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRACE ("--(%p)\n", dth);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* IDropTargetHelper_fnQueryInterface
|
||||||
|
*/
|
||||||
|
static HRESULT WINAPI IDropTargetHelper_fnQueryInterface (IDropTargetHelper * iface, REFIID riid, LPVOID * ppvObj)
|
||||||
|
{
|
||||||
|
ICOM_THIS (IDropTargetHelperImpl, iface);
|
||||||
|
|
||||||
|
TRACE ("(%p)->(%s,%p)\n", This, shdebugstr_guid (riid), ppvObj);
|
||||||
|
|
||||||
|
*ppvObj = NULL;
|
||||||
|
|
||||||
|
if (IsEqualIID (riid, &IID_IUnknown) || IsEqualIID (riid, &IID_IDropTargetHelper)) {
|
||||||
|
*ppvObj = This;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*ppvObj) {
|
||||||
|
IUnknown_AddRef ((IUnknown *) (*ppvObj));
|
||||||
|
TRACE ("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
FIXME ("-- Interface: E_NOINTERFACE\n");
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI IDropTargetHelper_fnAddRef (IDropTargetHelper * iface)
|
||||||
|
{
|
||||||
|
ICOM_THIS (IDropTargetHelperImpl, iface);
|
||||||
|
|
||||||
|
TRACE ("(%p)->(count=%lu)\n", This, This->ref);
|
||||||
|
|
||||||
|
return ++(This->ref);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI IDropTargetHelper_fnRelease (IDropTargetHelper * iface)
|
||||||
|
{
|
||||||
|
ICOM_THIS (IDropTargetHelperImpl, iface);
|
||||||
|
|
||||||
|
TRACE ("(%p)->(count=%lu)\n", This, This->ref);
|
||||||
|
|
||||||
|
if (!--(This->ref)) {
|
||||||
|
TRACE ("-- destroying (%p)\n", This);
|
||||||
|
LocalFree ((HLOCAL) This);
|
||||||
|
}
|
||||||
|
return This->ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IDropTargetHelper_fnDragEnter (
|
||||||
|
IDropTargetHelper * iface,
|
||||||
|
HWND hwndTarget,
|
||||||
|
IDataObject* pDataObject,
|
||||||
|
POINT* ppt,
|
||||||
|
DWORD dwEffect)
|
||||||
|
{
|
||||||
|
ICOM_THIS (IDropTargetHelperImpl, iface);
|
||||||
|
FIXME ("(%p)->(0x%x %p %p 0x%08lx)\n", This,hwndTarget, pDataObject, ppt, dwEffect);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IDropTargetHelper_fnDragLeave (IDropTargetHelper * iface)
|
||||||
|
{
|
||||||
|
ICOM_THIS (IDropTargetHelperImpl, iface);
|
||||||
|
FIXME ("(%p)->()\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IDropTargetHelper_fnDragOver (IDropTargetHelper * iface, POINT* ppt, DWORD dwEffect)
|
||||||
|
{
|
||||||
|
ICOM_THIS (IDropTargetHelperImpl, iface);
|
||||||
|
FIXME ("(%p)->(%p 0x%08lx)\n", This, ppt, dwEffect);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IDropTargetHelper_fnDrop (IDropTargetHelper * iface, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect)
|
||||||
|
{
|
||||||
|
ICOM_THIS (IDropTargetHelperImpl, iface);
|
||||||
|
FIXME ("(%p)->(%p %p 0x%08lx)\n", This, pDataObject, ppt, dwEffect);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI IDropTargetHelper_fnShow (IDropTargetHelper * iface, BOOL fShow)
|
||||||
|
{
|
||||||
|
ICOM_THIS (IDropTargetHelperImpl, iface);
|
||||||
|
FIXME ("(%p)->(%u)\n", This, fShow);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ICOM_VTABLE (IDropTargetHelper) vt_IDropTargetHelper =
|
||||||
|
{
|
||||||
|
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||||
|
IDropTargetHelper_fnQueryInterface,
|
||||||
|
IDropTargetHelper_fnAddRef,
|
||||||
|
IDropTargetHelper_fnRelease,
|
||||||
|
IDropTargetHelper_fnDragEnter,
|
||||||
|
IDropTargetHelper_fnDragLeave,
|
||||||
|
IDropTargetHelper_fnDragOver,
|
||||||
|
IDropTargetHelper_fnDrop,
|
||||||
|
IDropTargetHelper_fnShow
|
||||||
|
};
|
|
@ -80,6 +80,7 @@ HRESULT WINAPI IFSFolder_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *
|
||||||
HRESULT WINAPI IShellLink_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
HRESULT WINAPI IShellLink_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
||||||
HRESULT WINAPI ISF_Desktop_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
HRESULT WINAPI ISF_Desktop_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
||||||
HRESULT WINAPI ISF_MyComputer_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
HRESULT WINAPI ISF_MyComputer_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
||||||
|
HRESULT WINAPI IDropTargetHelper_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
||||||
|
|
||||||
/* kind of enumidlist */
|
/* kind of enumidlist */
|
||||||
#define EIDL_DESK 0
|
#define EIDL_DESK 0
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include "shlwapi.h"
|
#include "shlwapi.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "debughlp.h"
|
#include "debughlp.h"
|
||||||
|
#include "wine/obj_dragdrophelper.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||||
|
|
||||||
|
@ -58,11 +59,12 @@ IClassFactory * IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll,
|
||||||
struct {
|
struct {
|
||||||
REFIID riid;
|
REFIID riid;
|
||||||
LPFNCREATEINSTANCE lpfnCI;
|
LPFNCREATEINSTANCE lpfnCI;
|
||||||
} InterfaceTable[5] = {
|
} InterfaceTable[6] = {
|
||||||
{&CLSID_ShellFSFolder, &IFSFolder_Constructor},
|
{&CLSID_ShellFSFolder, &IFSFolder_Constructor},
|
||||||
{&CLSID_MyComputer, &ISF_MyComputer_Constructor},
|
{&CLSID_MyComputer, &ISF_MyComputer_Constructor},
|
||||||
{&CLSID_ShellDesktop, &ISF_Desktop_Constructor},
|
{&CLSID_ShellDesktop, &ISF_Desktop_Constructor},
|
||||||
{&CLSID_ShellLink, &IShellLink_Constructor},
|
{&CLSID_ShellLink, &IShellLink_Constructor},
|
||||||
|
{&CLSID_DragDropHelper, &IDropTargetHelper_Constructor},
|
||||||
{NULL,NULL}
|
{NULL,NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -153,6 +153,7 @@ INSTALLED_INCLUDES = \
|
||||||
wine/obj_dataobject.h \
|
wine/obj_dataobject.h \
|
||||||
wine/obj_dockingwindowframe.h \
|
wine/obj_dockingwindowframe.h \
|
||||||
wine/obj_dragdrop.h \
|
wine/obj_dragdrop.h \
|
||||||
|
wine/obj_dragdrophelper.h \
|
||||||
wine/obj_enumguid.h \
|
wine/obj_enumguid.h \
|
||||||
wine/obj_enumidlist.h \
|
wine/obj_enumidlist.h \
|
||||||
wine/obj_errorinfo.h \
|
wine/obj_errorinfo.h \
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
/*
|
||||||
|
* Defines the COM interfaces related to SHELL DragDropHelper
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __WINE_WINE_OBJ_DRAGDROPHELPER_H
|
||||||
|
#define __WINE_WINE_OBJ_DRAGDROPHELPER_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* defined(__cplusplus) */
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Predeclare the interfaces
|
||||||
|
*/
|
||||||
|
DEFINE_GUID(CLSID_DragDropHelper, 0x4657278a, 0x411b, 0x11d2, 0x83, 0x9a, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0);
|
||||||
|
|
||||||
|
DEFINE_GUID(IID_IDropTargetHelper, 0x4657278b, 0x411b, 0x11d2, 0x83, 0x9a, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0);
|
||||||
|
typedef struct IDropTargetHelper IDropTargetHelper,*LPDROPTARGETHELPER;
|
||||||
|
|
||||||
|
DEFINE_GUID(IID_IDragSourceHelper, 0xde5bf786, 0x477a, 0x11d2, 0x83, 0x9d, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0);
|
||||||
|
typedef struct IDragSourceHelper IDragSourceHelper,*LPDRAGSOURCEHELPER;
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* IDragSourceHelper interface
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
SIZE sizeDragImage;
|
||||||
|
POINT ptOffset;
|
||||||
|
HBITMAP hbmpDragImage;
|
||||||
|
COLORREF crColorKey;
|
||||||
|
} SHDRAGIMAGE, *LPSHDRAGIMAGE;
|
||||||
|
|
||||||
|
|
||||||
|
#define ICOM_INTERFACE IDragSourceHelper
|
||||||
|
#define IDragSourceHelper_METHODS \
|
||||||
|
ICOM_METHOD2(HRESULT, InitializeFromBitmap, LPSHDRAGIMAGE, pshdi, IDataObject*, pDataObject) \
|
||||||
|
ICOM_METHOD3(HRESULT, InitializeFromWindow, HWND, hwnd, POINT*, ppt, IDataObject*, pDataObject)
|
||||||
|
#define IDragSourceHelper_IMETHODS \
|
||||||
|
IUnknown_IMETHODS \
|
||||||
|
IDragSourceHelper_METHODS
|
||||||
|
ICOM_DEFINE(IDragSourceHelper,IUnknown)
|
||||||
|
#undef ICOM_INTERFACE
|
||||||
|
|
||||||
|
/*** IUnknown methods ***/
|
||||||
|
#define IDragSourceHelper_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
|
||||||
|
#define IDragSourceHelper_AddRef(p) ICOM_CALL (AddRef,p)
|
||||||
|
#define IDragSourceHelper_Release(p) ICOM_CALL (Release,p)
|
||||||
|
/*** IDropSource methods ***/
|
||||||
|
#define IDragSourceHelper_InitializeFromBitmap(p,a,b) ICOM_CALL2(InitializeFromBitmap,p,a,b)
|
||||||
|
#define IDragSourceHelper_InitializeFromWindow(p,a,b,c) ICOM_CALL1(InitializeFromWindow,p,a,b,c)
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* IDropTargetHelper interface
|
||||||
|
*/
|
||||||
|
#define ICOM_INTERFACE IDropTargetHelper
|
||||||
|
#define IDropTargetHelper_METHODS \
|
||||||
|
ICOM_METHOD4(HRESULT,DragEnter, HWND, hwndTarget, IDataObject*, pDataObject, POINT*, ppt, DWORD, dwEffect) \
|
||||||
|
ICOM_METHOD (HRESULT,DragLeave) \
|
||||||
|
ICOM_METHOD2(HRESULT,DragOver, POINT*, ppt, DWORD, dwEffect) \
|
||||||
|
ICOM_METHOD3(HRESULT,Drop, IDataObject*, pDataObject, POINT*, ppt,DWORD, dwEffect) \
|
||||||
|
ICOM_METHOD1(HRESULT,Show, BOOL, fShow)
|
||||||
|
#define IDropTargetHelper_IMETHODS \
|
||||||
|
IUnknown_IMETHODS \
|
||||||
|
IDropTargetHelper_METHODS
|
||||||
|
ICOM_DEFINE(IDropTargetHelper,IUnknown)
|
||||||
|
#undef ICOM_INTERFACE
|
||||||
|
|
||||||
|
/*** IUnknown methods ***/
|
||||||
|
#define IDropTargetHelper_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
|
||||||
|
#define IDropTargetHelper_AddRef(p) ICOM_CALL (AddRef,p)
|
||||||
|
#define IDropTargetHelper_Release(p) ICOM_CALL (Release,p)
|
||||||
|
/*** IDropTargetHelper methods ***/
|
||||||
|
#define IDropTargetHelper_DragEnter(p,a,b,c,d) ICOM_CALL4(DragEnter,p,a,b,c,d)
|
||||||
|
#define IDropTargetHelper_DragLeave(p) ICOM_CALL (DragLeave,p)
|
||||||
|
#define IDropTargetHelper_DragOver(p,a,b) ICOM_CALL2(DragOver,p,a,b)
|
||||||
|
#define IDropTargetHelper_Drop(p,a,b,c) ICOM_CALL3(Drop,p,a,b,c)
|
||||||
|
#define IDropTargetHelper_Show(p,a) ICOM_CALL4(Show,p,a,b,c,d)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif /* defined(__cplusplus) */
|
||||||
|
|
||||||
|
#endif /* __WINE_WINE_OBJ_DRAGDROPHELPER_H */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
|
||||||
#include "shlguid.h"
|
#include "shlguid.h"
|
||||||
#include "shlobj.h"
|
#include "shlobj.h"
|
||||||
#include "wine/obj_channel.h"
|
#include "wine/obj_channel.h"
|
||||||
|
#include "wine/obj_dragdrophelper.h"
|
||||||
|
|
||||||
#include "comcat.h"
|
#include "comcat.h"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue