ole32: Fix buffer overrun in CLIPFORMAT_UserMarshal.
[wine] / include / richole.idl
1 /*
2  * Copyright (C) 2002 Andriy Palamarchuk
3  * Copyright (C) 2004 Mike McCormack
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19
20 cpp_quote("#if 0")  /* not included on Windows */
21 import "oleidl.idl";
22 cpp_quote("#endif")
23
24 /* REOBJECT structure flags */
25 cpp_quote("#define REO_GETOBJ_NO_INTERFACES        0x00000000")
26 cpp_quote("#define REO_GETOBJ_POLEOBJ              0x00000001")
27 cpp_quote("#define REO_GETOBJ_PSTG                 0x00000002")
28 cpp_quote("#define REO_GETOBJ_POLESITE             0x00000004")
29 cpp_quote("#define REO_GETOBJ_ALL_INTERFACES       0x00000007")
30 cpp_quote("#define REO_CP_SELECTION                0xFFFFFFFF")
31 cpp_quote("#define REO_IOB_SELECTION               0xFFFFFFFF")
32 cpp_quote("#define REO_IOB_USE_CP                  0xFFFFFFFE")
33 cpp_quote("#define REO_NULL                        0x00000000")
34 cpp_quote("#define REO_READWRITEMASK               0x0000003F")
35 cpp_quote("#define REO_DONTNEEDPALETTE             0x00000020")
36 cpp_quote("#define REO_BLANK                       0x00000010")
37 cpp_quote("#define REO_DYNAMICSIZE                 0x00000008")
38 cpp_quote("#define REO_INVERTEDSELECT              0x00000004")
39 cpp_quote("#define REO_BELOWBASELINE               0x00000002")
40 cpp_quote("#define REO_RESIZABLE                   0x00000001")
41 cpp_quote("#define REO_LINK                        0x80000000")
42 cpp_quote("#define REO_STATIC                      0x40000000")
43 cpp_quote("#define REO_SELECTED                    0x08000000")
44 cpp_quote("#define REO_OPEN                        0x04000000")
45 cpp_quote("#define REO_INPLACEACTIVE               0x02000000")
46 cpp_quote("#define REO_HILITED                     0x01000000")
47 cpp_quote("#define REO_LINKAVAILABLE               0x00800000")
48 cpp_quote("#define REO_GETMETAFILE                 0x00400000")
49
50 /* clipboard operation flags */
51 cpp_quote("#define RECO_PASTE            0x00000000")
52 cpp_quote("#define RECO_DROP             0x00000001")
53 cpp_quote("#define RECO_COPY             0x00000002")
54 cpp_quote("#define RECO_CUT              0x00000003")
55 cpp_quote("#define RECO_DRAG             0x00000004")
56
57 typedef struct _reobject {
58     DWORD cbStruct;
59     LONG cp;
60     CLSID clsid;
61     LPOLEOBJECT poleobj;
62     LPSTORAGE pstg;
63     LPOLECLIENTSITE polesite;
64     SIZEL sizel;
65     DWORD dvaspect;
66     DWORD dwFlags;
67     DWORD dwUser;
68 } REOBJECT;
69
70 cpp_quote("#ifndef __RICHEDIT_CHARRANGE_DEFINED")
71 cpp_quote("#define __RICHEDIT_CHARRANGE_DEFINED")
72
73 typedef struct _charrange
74 {
75     LONG cpMin;
76     LONG cpMax;
77 } CHARRANGE;
78
79 cpp_quote("#endif /* __RICHEDIT_CHARRANGE_DEFINED */")
80
81 /*****************************************************************************
82  * IRichEditOle
83  */
84 [
85   object,
86   uuid(00020d00-0000-0000-c000-000000000046),
87   pointer_default(unique)
88 ]
89 interface IRichEditOle : IUnknown
90 {
91     typedef [unique] IRichEditOle *LPRICHEDITOLE;
92
93     HRESULT GetClientSite(LPOLECLIENTSITE *lplpolesite);
94     HRESULT GetObjectCount();
95     HRESULT GetLinkCount();
96     HRESULT GetObject(LONG iob, REOBJECT *lpreobject, DWORD dwFlags);
97     HRESULT InsertObject(REOBJECT *lpreobject);
98     HRESULT ConvertObject(LONG iob, REFCLSID rclsidNew, LPCSTR lpstrUserTypeNew);
99     HRESULT ActivateAs(REFCLSID rclsid, REFCLSID rclsidAs);
100     HRESULT SetHostNames(LPCSTR lpstrContainerApp, LPCSTR lpstrContainerObj);
101     HRESULT SetLinkAvailable(LONG iob, BOOL fAvailable);
102     HRESULT SetDvaspect(LONG iob, DWORD dvaspect);
103     HRESULT HandsOffStorage(LONG iob);
104     HRESULT SaveCompleted(LONG iob, LPSTORAGE lpstg);
105     HRESULT InPlaceDeactivate();
106     HRESULT ContextSensitiveHelp(BOOL fEnterMode);
107     HRESULT GetClipboardData(CHARRANGE* lpchrg, DWORD reco, LPDATAOBJECT *lplpdataobj);
108     HRESULT ImportDataObject(LPDATAOBJECT lpdataobj, CLIPFORMAT cf, HGLOBAL hMetaPict);
109 }
110
111 /*****************************************************************************
112  * IRichEditOleCallback
113  */
114 [
115   object,
116   uuid(00020d03-0000-0000-c000-000000000046),
117   pointer_default(unique)
118 ]
119 interface IRichEditOleCallback : IUnknown
120 {
121     typedef [unique] IRichEditOleCallback *LPRICHEDITOLECALLBACK;
122
123     HRESULT GetNewStorage(LPSTORAGE *lplpstg);
124     HRESULT GetInPlaceContext(LPOLEINPLACEFRAME *lplpFrame, LPOLEINPLACEUIWINDOW *lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
125     HRESULT ShowContainerUI(BOOL fShow);
126     HRESULT QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp);
127     HRESULT DeleteObject(LPOLEOBJECT lpoleobj);
128     HRESULT QueryAcceptData(LPDATAOBJECT lpdataobj, CLIPFORMAT *lpcfFormat, DWORD reco, BOOL fReally, HGLOBAL hMetaPict);
129     HRESULT ContextSensitiveHelp(BOOL fEnterMode);
130     HRESULT GetClipboardData(CHARRANGE *lpchrg, DWORD reco, LPDATAOBJECT *lplpdataobj);
131     HRESULT GetDragDropEffect(BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect);
132     HRESULT GetContextMenu(WORD seltype, LPOLEOBJECT lpoleobj, CHARRANGE *lpchrg, HMENU *lphmenu);
133 }