Fixed gcc varargs macro syntax (reported by Gabriele Giorgetti).
[wine] / include / wine / obj_dragdrophelper.h
1 /*
2  * Defines the COM interfaces related to SHELL DragDropHelper
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #ifndef __WINE_WINE_OBJ_DRAGDROPHELPER_H
20 #define __WINE_WINE_OBJ_DRAGDROPHELPER_H
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif /* defined(__cplusplus) */
25
26 /*****************************************************************************
27  * Predeclare the interfaces
28  */
29 DEFINE_GUID(CLSID_DragDropHelper, 0x4657278a, 0x411b, 0x11d2, 0x83, 0x9a, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0);
30
31 DEFINE_GUID(IID_IDropTargetHelper, 0x4657278b, 0x411b, 0x11d2, 0x83, 0x9a, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0);
32 typedef struct IDropTargetHelper IDropTargetHelper,*LPDROPTARGETHELPER;
33
34 DEFINE_GUID(IID_IDragSourceHelper,  0xde5bf786, 0x477a, 0x11d2, 0x83, 0x9d, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0);
35 typedef struct IDragSourceHelper IDragSourceHelper,*LPDRAGSOURCEHELPER;
36
37 /*****************************************************************************
38  * IDragSourceHelper interface
39  */
40
41 typedef struct {
42     SIZE        sizeDragImage;
43     POINT       ptOffset;
44     HBITMAP     hbmpDragImage;
45     COLORREF    crColorKey;
46 } SHDRAGIMAGE, *LPSHDRAGIMAGE;
47
48
49 #define INTERFACE IDragSourceHelper
50 #define IDragSourceHelper_METHODS \
51     IUnknown_METHODS \
52     STDMETHOD(InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE  pshdi, IDataObject * pDataObject) PURE; \
53     STDMETHOD(InitializeFromWindow)(THIS_ HWND  hwnd, POINT * ppt, IDataObject * pDataObject) PURE;
54 ICOM_DEFINE(IDragSourceHelper,IUnknown)
55 #undef INTERFACE
56
57 #ifdef COBJMACROS
58 /*** IUnknown methods ***/
59 #define IDragSourceHelper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
60 #define IDragSourceHelper_AddRef(p)             (p)->lpVtbl->AddRef(p)
61 #define IDragSourceHelper_Release(p)            (p)->lpVtbl->Release(p)
62 /*** IDropSource methods ***/
63 #define IDragSourceHelper_InitializeFromBitmap(p,a,b)   (p)->lpVtbl->InitializeFromBitmap(p,a,b)
64 #define IDragSourceHelper_InitializeFromWindow(p,a,b,c) (p)->lpVtbl->InitializeFromWindow(p,a,b,c)
65 #endif
66
67
68 /*****************************************************************************
69  * IDropTargetHelper interface
70  */
71 #define INTERFACE IDropTargetHelper
72 #define IDropTargetHelper_METHODS \
73     IUnknown_METHODS \
74     STDMETHOD(DragEnter)(THIS_ HWND  hwndTarget, IDataObject * pDataObject, POINT * ppt, DWORD  dwEffect) PURE; \
75     STDMETHOD(DragLeave)(THIS) PURE; \
76     STDMETHOD(DragOver)(THIS_ POINT * ppt, DWORD  dwEffect) PURE; \
77     STDMETHOD(Drop)(THIS_ IDataObject * pDataObject, POINT * ppt,DWORD  dwEffect) PURE; \
78     STDMETHOD(Show)(THIS_ BOOL  fShow) PURE;
79 ICOM_DEFINE(IDropTargetHelper,IUnknown)
80 #undef INTERFACE
81
82 #ifdef COBJMACROS
83 /*** IUnknown methods ***/
84 #define IDropTargetHelper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
85 #define IDropTargetHelper_AddRef(p)             (p)->lpVtbl->AddRef(p)
86 #define IDropTargetHelper_Release(p)            (p)->lpVtbl->Release(p)
87 /*** IDropTargetHelper methods ***/
88 #define IDropTargetHelper_DragEnter(p,a,b,c,d)  (p)->lpVtbl->DragEnter(p,a,b,c,d)
89 #define IDropTargetHelper_DragLeave(p)          (p)->lpVtbl->DragLeave(p)
90 #define IDropTargetHelper_DragOver(p,a,b)       (p)->lpVtbl->DragOver(p,a,b)
91 #define IDropTargetHelper_Drop(p,a,b,c)         (p)->lpVtbl->Drop(p,a,b,c)
92 #define IDropTargetHelper_Show(p,a)             (p)->lpVtbl->Show(p,a,b,c,d)
93 #endif
94
95
96 #ifdef __cplusplus
97 } /* extern "C" */
98 #endif /* defined(__cplusplus) */
99
100 #endif /*  __WINE_WINE_OBJ_DRAGDROPHELPER_H */