blob: 451c3f5f4b726533f8bc80251e788f9fd077af4f [file] [log] [blame]
Alexandre Julliard6abb89c1995-03-02 17:33:47 +00001/*
2 * ole.h - Declarations for OLESVR and OLECLI
3 */
4
Alexandre Julliardd90840e1996-06-11 16:02:08 +00005#ifndef __WINE_OLE_H
6#define __WINE_OLE_H
7
Paul Quinnea1640f1999-03-10 18:03:53 +00008#ifdef __cplusplus
9extern "C" {
10#endif
Alexandre Julliarda11d7b11998-03-01 20:05:02 +000011
Alexandre Julliard83f52d12000-09-26 22:20:14 +000012#include "windef.h"
13#include "wine/windef16.h"
14#include "wine/obj_base.h"
15#include "wine/obj_misc.h"
16#include "wine/obj_storage.h"
17#include "wine/obj_moniker.h"
18#include "wine/obj_dataobject.h"
19#include "wine/obj_dragdrop.h"
20
21struct tagLOGPALETTE;
22
Alexandre Julliardff8331e1995-09-18 11:19:54 +000023/* object types */
24#define OT_LINK 1
25#define OT_EMBEDDED 2
26#define OT_STATIC 3
27
28/* activate verbs */
29#define OLEVERB_PRIMARY 0
30
Alexandre Julliard6abb89c1995-03-02 17:33:47 +000031typedef enum
32{
Alexandre Julliardff8331e1995-09-18 11:19:54 +000033 OLE_OK,
Alexandre Julliard6abb89c1995-03-02 17:33:47 +000034 OLE_WAIT_FOR_RELEASE,
35 OLE_BUSY,
36 OLE_ERROR_PROTECT_ONLY,
37 OLE_ERROR_MEMORY,
38 OLE_ERROR_STREAM,
39 OLE_ERROR_STATIC,
40 OLE_ERROR_BLANK,
41 OLE_ERROR_DRAW,
42 OLE_ERROR_METAFILE,
43 OLE_ERROR_ABORT,
44 OLE_ERROR_CLIPBOARD,
45 OLE_ERROR_FORMAT,
46 OLE_ERROR_OBJECT,
47 OLE_ERROR_OPTION,
48 OLE_ERROR_PROTOCOL,
49 OLE_ERROR_ADDRESS,
50 OLE_ERROR_NOT_EQUAL,
51 OLE_ERROR_HANDLE,
52 OLE_ERROR_GENERIC,
53 OLE_ERROR_CLASS,
54 OLE_ERROR_SYNTAX,
55 OLE_ERROR_DATATYPE,
56 OLE_ERROR_PALETTE,
57 OLE_ERROR_NOT_LINK,
58 OLE_ERROR_NOT_EMPTY,
59 OLE_ERROR_SIZE,
60 OLE_ERROR_DRIVE,
61 OLE_ERROR_NETWORK,
62 OLE_ERROR_NAME,
63 OLE_ERROR_TEMPLATE,
64 OLE_ERROR_NEW,
65 OLE_ERROR_EDIT,
66 OLE_ERROR_OPEN,
67 OLE_ERROR_NOT_OPEN,
68 OLE_ERROR_LAUNCH,
69 OLE_ERROR_COMM,
70 OLE_ERROR_TERMINATE,
71 OLE_ERROR_COMMAND,
72 OLE_ERROR_SHOW,
73 OLE_ERROR_DOVERB,
74 OLE_ERROR_ADVISE_NATIVE,
75 OLE_ERROR_ADVISE_PICT,
76 OLE_ERROR_ADVISE_RENAME,
77 OLE_ERROR_POKE_NATIVE,
78 OLE_ERROR_REQUEST_NATIVE,
79 OLE_ERROR_REQUEST_PICT,
80 OLE_ERROR_SERVER_BLOCKED,
81 OLE_ERROR_REGISTRATION,
82 OLE_ERROR_ALREADY_REGISTERED,
83 OLE_ERROR_TASK,
84 OLE_ERROR_OUTOFDATE,
85 OLE_ERROR_CANT_UPDATE_CLIENT,
86 OLE_ERROR_UPDATE,
87 OLE_ERROR_SETDATA_FORMAT,
88 OLE_ERROR_STATIC_FROM_OTHER_OS,
89 OLE_WARN_DELETE_DATA = 1000
90} OLESTATUS;
91
Alexandre Julliardff8331e1995-09-18 11:19:54 +000092typedef enum {
Alexandre Julliard6abb89c1995-03-02 17:33:47 +000093 OLE_SERVER_MULTI,
94 OLE_SERVER_SINGLE
Alexandre Julliard808cb041995-08-17 17:11:36 +000095} OLE_SERVER_USE;
Alexandre Julliardff8331e1995-09-18 11:19:54 +000096
Alexandre Julliard808cb041995-08-17 17:11:36 +000097typedef enum {
98 OLE_CHANGED,
Alexandre Julliardff8331e1995-09-18 11:19:54 +000099 OLE_SAVED,
Alexandre Julliard808cb041995-08-17 17:11:36 +0000100 OLE_CLOSED,
Alexandre Julliard808cb041995-08-17 17:11:36 +0000101 OLE_RENAMED,
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000102 OLE_QUERY_PAINT,
103 OLE_RELEASE,
104 OLE_QUERY_RETRY
Alexandre Julliard808cb041995-08-17 17:11:36 +0000105} OLE_NOTIFICATION;
Alexandre Julliard6abb89c1995-03-02 17:33:47 +0000106
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000107typedef enum {
108 olerender_none,
109 olerender_draw,
110 olerender_format
111} OLEOPT_RENDER;
112
113typedef enum {
114 oleupdate_always,
115 oleupdate_onsave,
116 oleupdate_oncall,
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000117 oleupdate_onclose
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000118} OLEOPT_UPDATE;
119
Alexandre Julliard6abb89c1995-03-02 17:33:47 +0000120typedef LONG LHSERVER;
121typedef LONG LHSERVERDOC;
122typedef LONG LHCLIENTDOC;
Alexandre Julliard808cb041995-08-17 17:11:36 +0000123typedef LONG OLECLIPFORMAT;/* dunno about this type, please change/add */
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000124typedef OLEOPT_UPDATE* LPOLEOPT_UPDATE;
125
126typedef enum {
127 OLE_NONE, /* none */
128 OLE_DELETE, /* delete object */
129 OLE_LNKPASTE, /* link paste */
130 OLE_EMBPASTE, /* paste(and update) */
131 OLE_SHOW,
132 OLE_RUN,
133 OLE_ACTIVATE,
134 OLE_UPDATE,
135 OLE_CLOSE,
136 OLE_RECONNECT,
137 OLE_SETUPDATEOPTIONS,
138 OLE_SERVERRUNLAUNCH, /* unlaunch (terminate?) server */
139 OLE_LOADFROMSTREAM, /* (auto reconnect) */
140 OLE_SETDATA, /* OleSetData */
141 OLE_REQUESTDATA, /* OleRequestData */
142 OLE_OTHER,
143 OLE_CREATE,
144 OLE_CREATEFROMTEMPLATE,
145 OLE_CREATELINKFROMFILE,
146 OLE_COPYFROMLNK,
147 OLE_CREATREFROMFILE,
148 OLE_CREATEINVISIBLE
149} OLE_RELEASE_METHOD;
Alexandre Julliard808cb041995-08-17 17:11:36 +0000150
151typedef struct _OLETARGETDEVICE {
Alexandre Julliard21979011997-03-05 08:22:35 +0000152 UINT16 otdDeviceNameOffset;
153 UINT16 otdDriverNameOffset;
154 UINT16 otdPortNameOffset;
155 UINT16 otdExtDevmodeOffset;
156 UINT16 otdExtDevmodeSize;
157 UINT16 otdEnvironmentOffset;
158 UINT16 otdEnvironmentSize;
Alexandre Julliard808cb041995-08-17 17:11:36 +0000159 BYTE otdData[1];
160 /* ... */
161} OLETARGETDEVICE;
Alexandre Julliard83f52d12000-09-26 22:20:14 +0000162
Alexandre Julliard808cb041995-08-17 17:11:36 +0000163typedef struct _OLESERVERDOC* LPOLESERVERDOC;
164typedef struct _OLEOBJECT* LPOLEOBJECT;
165typedef struct _OLECLIENT* LPOLECLIENT;
166typedef struct _OLESERVERDOCVTBL {
Francois Gougetae41e8c2000-06-11 20:07:58 +0000167 OLESTATUS CALLBACK (*Save)(LPOLESERVERDOC);
168 OLESTATUS CALLBACK (*Close)(LPOLESERVERDOC);
169 OLESTATUS CALLBACK (*SetHostNames)(LPOLESERVERDOC,LPCOLESTR16,LPCOLESTR16);
170 OLESTATUS CALLBACK (*SetDocDimensions)(LPOLESERVERDOC,LPRECT16);
Alexandre Julliard3d506461999-01-23 12:37:00 +0000171#ifdef __WINE__
172/* GetObject is a WINELIB_NAME macro so it cannot be used in Wine itself */
Francois Gougetae41e8c2000-06-11 20:07:58 +0000173 OLESTATUS CALLBACK (*pGetObject)(LPOLESERVERDOC,LPCOLESTR16,LPOLEOBJECT*,LPOLECLIENT);
Alexandre Julliard3d506461999-01-23 12:37:00 +0000174#else
Francois Gougetae41e8c2000-06-11 20:07:58 +0000175 OLESTATUS CALLBACK (*GetObject)(LPOLESERVERDOC,LPCOLESTR16,LPOLEOBJECT*,LPOLECLIENT);
Alexandre Julliard3d506461999-01-23 12:37:00 +0000176#endif
Francois Gougetae41e8c2000-06-11 20:07:58 +0000177 OLESTATUS CALLBACK (*Release)(LPOLESERVERDOC);
Alexandre Julliard83f52d12000-09-26 22:20:14 +0000178 OLESTATUS CALLBACK (*SetColorScheme)(LPOLESERVERDOC,struct tagLOGPALETTE*);
Francois Gougetae41e8c2000-06-11 20:07:58 +0000179 OLESTATUS CALLBACK (*Execute)(LPOLESERVERDOC,HGLOBAL16);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000180} OLESERVERDOCVTBL;
181typedef OLESERVERDOCVTBL* LPOLESERVERDOCVTBL;
182typedef struct _OLESERVERDOC {
183 LPOLESERVERDOCVTBL lpvtbl;
184 /* server provided state info */
185} OLESERVERDOC;
Alexandre Julliard6abb89c1995-03-02 17:33:47 +0000186
187typedef struct _OLESERVER* LPOLESERVER;
Alexandre Julliard808cb041995-08-17 17:11:36 +0000188typedef struct _OLESERVERVTBL {
Francois Gougetae41e8c2000-06-11 20:07:58 +0000189 OLESTATUS CALLBACK (*Open)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPOLESERVERDOC *);
190 OLESTATUS CALLBACK (*Create)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC*);
191 OLESTATUS CALLBACK (*CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC *);
192 OLESTATUS CALLBACK (*Edit)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC *);
193 OLESTATUS CALLBACK (*Exit)(LPOLESERVER);
194 OLESTATUS CALLBACK (*Release)(LPOLESERVER);
195 OLESTATUS CALLBACK (*Execute)(LPOLESERVER);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000196} OLESERVERVTBL;
197typedef OLESERVERVTBL *LPOLESERVERVTBL;
198typedef struct _OLESERVER {
199 LPOLESERVERVTBL lpvtbl;
200 /* server specific data */
201} OLESERVER;
202typedef struct _OLECLIENTVTBL {
Francois Gougetae41e8c2000-06-11 20:07:58 +0000203 int CALLBACK (*CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000204} OLECLIENTVTBL;
205typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
Alexandre Julliard6abb89c1995-03-02 17:33:47 +0000206
Alexandre Julliard808cb041995-08-17 17:11:36 +0000207typedef struct _OLECLIENT {
208 LPOLECLIENTVTBL lpvtbl;
209 /* client data... */
210} OLECLIENT;
211
Alexandre Julliard83f52d12000-09-26 22:20:14 +0000212struct _OLESTREAM;
213
Alexandre Julliard808cb041995-08-17 17:11:36 +0000214typedef struct _OLEOBJECTVTBL {
Francois Gougetae41e8c2000-06-11 20:07:58 +0000215 void CALLBACK *(*QueryProtocol)(LPOLEOBJECT,LPCOLESTR16);
216 OLESTATUS CALLBACK (*Release)(LPOLEOBJECT);
217 OLESTATUS CALLBACK (*Show)(LPOLEOBJECT,BOOL16);
218 OLESTATUS CALLBACK (*DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16);
219 OLESTATUS CALLBACK (*GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *);
220 OLESTATUS CALLBACK (*SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16);
221 OLESTATUS CALLBACK (*SetTargetDevice)(LPOLEOBJECT,HGLOBAL16);
222 OLESTATUS CALLBACK (*SetBounds)(LPOLEOBJECT,LPRECT16);
223 OLESTATUS CALLBACK (*EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
Alexandre Julliard83f52d12000-09-26 22:20:14 +0000224 OLESTATUS CALLBACK (*SetColorScheme)(LPOLEOBJECT,struct tagLOGPALETTE*);
Francois Gougetae41e8c2000-06-11 20:07:58 +0000225 OLESTATUS CALLBACK (*Delete)(LPOLEOBJECT);
226 OLESTATUS CALLBACK (*SetHostNames)(LPOLEOBJECT,LPCOLESTR16,LPCOLESTR16);
Alexandre Julliard83f52d12000-09-26 22:20:14 +0000227 OLESTATUS CALLBACK (*SaveToStream)(LPOLEOBJECT,struct _OLESTREAM*);
Francois Gougetae41e8c2000-06-11 20:07:58 +0000228 OLESTATUS CALLBACK (*Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *);
229 OLESTATUS CALLBACK (*CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *);
230 OLESTATUS CALLBACK (*Equal)(LPOLEOBJECT,LPOLEOBJECT);
231 OLESTATUS CALLBACK (*CopyToClipBoard)(LPOLEOBJECT);
232 OLESTATUS CALLBACK (*Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16);
233 OLESTATUS CALLBACK (*Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16);
234 OLESTATUS CALLBACK (*Execute)(LPOLEOBJECT,HGLOBAL16,UINT16);
235 OLESTATUS CALLBACK (*Close)(LPOLEOBJECT);
236 OLESTATUS CALLBACK (*Update)(LPOLEOBJECT);
237 OLESTATUS CALLBACK (*Reconnect)(LPOLEOBJECT);
238 OLESTATUS CALLBACK (*ObjectConvert)(LPOLEOBJECT,LPCOLESTR16,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT*);
239 OLESTATUS CALLBACK (*GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE);
240 OLESTATUS CALLBACK (*SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
241 OLESTATUS CALLBACK (*Rename)(LPOLEOBJECT,LPCOLESTR16);
242 OLESTATUS CALLBACK (*QueryName)(LPOLEOBJECT,LPSTR,LPUINT16);
243 OLESTATUS CALLBACK (*QueryType)(LPOLEOBJECT,LPLONG);
244 OLESTATUS CALLBACK (*QueryBounds)(LPOLEOBJECT,LPRECT16);
245 OLESTATUS CALLBACK (*QuerySize)(LPOLEOBJECT,LPDWORD);
246 OLESTATUS CALLBACK (*QueryOpen)(LPOLEOBJECT);
247 OLESTATUS CALLBACK (*QueryOutOfDate)(LPOLEOBJECT);
248 OLESTATUS CALLBACK (*QueryReleaseStatus)(LPOLEOBJECT);
249 OLESTATUS CALLBACK (*QueryReleaseError)(LPOLEOBJECT);
250 OLE_RELEASE_METHOD CALLBACK (*QueryReleaseMethod)(LPOLEOBJECT);
251 OLESTATUS CALLBACK (*RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
252 OLESTATUS CALLBACK (*ObjectLong)(LPOLEOBJECT,UINT16,LPLONG);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000253} OLEOBJECTVTBL;
254typedef OLEOBJECTVTBL* LPOLEOBJECTVTBL;
255
256typedef struct _OLEOBJECT {
257 LPOLEOBJECTVTBL lpvtbl;
258} OLEOBJECT;
259
Paul Quinnea1640f1999-03-10 18:03:53 +0000260#ifdef __cplusplus
261} /*extern*/
262#endif
263
Alexandre Julliardd90840e1996-06-11 16:02:08 +0000264#endif /* __WINE_OLE_H */