blob: 45b887930b4d3443d198fbbdde2fabfc4b77cab6 [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
Marcus Meissner317af321999-02-17 13:51:06 +00008#include "wingdi.h" /* LOGPALETTE */
Alexandre Julliardd90840e1996-06-11 16:02:08 +00009
Alexandre Julliard638f1691999-01-17 16:32:32 +000010/* FIXME: we need to include wtypes.h mainly, it seems, because we need BSTR.
11 * Normally none of the APIs in ole.h depend on it. It is most likey that they should
12 * be moved to ole2.h (which includes objbase.h and thus wtypes.h) or some other
13 * OLE include
14 */
15#include "wtypes.h"
16
Paul Quinnea1640f1999-03-10 18:03:53 +000017#ifdef __cplusplus
18extern "C" {
19#endif
Alexandre Julliarda11d7b11998-03-01 20:05:02 +000020
Alexandre Julliardff8331e1995-09-18 11:19:54 +000021/* object types */
22#define OT_LINK 1
23#define OT_EMBEDDED 2
24#define OT_STATIC 3
25
26/* activate verbs */
27#define OLEVERB_PRIMARY 0
28
Alexandre Julliard6abb89c1995-03-02 17:33:47 +000029typedef enum
30{
Alexandre Julliardff8331e1995-09-18 11:19:54 +000031 OLE_OK,
Alexandre Julliard6abb89c1995-03-02 17:33:47 +000032 OLE_WAIT_FOR_RELEASE,
33 OLE_BUSY,
34 OLE_ERROR_PROTECT_ONLY,
35 OLE_ERROR_MEMORY,
36 OLE_ERROR_STREAM,
37 OLE_ERROR_STATIC,
38 OLE_ERROR_BLANK,
39 OLE_ERROR_DRAW,
40 OLE_ERROR_METAFILE,
41 OLE_ERROR_ABORT,
42 OLE_ERROR_CLIPBOARD,
43 OLE_ERROR_FORMAT,
44 OLE_ERROR_OBJECT,
45 OLE_ERROR_OPTION,
46 OLE_ERROR_PROTOCOL,
47 OLE_ERROR_ADDRESS,
48 OLE_ERROR_NOT_EQUAL,
49 OLE_ERROR_HANDLE,
50 OLE_ERROR_GENERIC,
51 OLE_ERROR_CLASS,
52 OLE_ERROR_SYNTAX,
53 OLE_ERROR_DATATYPE,
54 OLE_ERROR_PALETTE,
55 OLE_ERROR_NOT_LINK,
56 OLE_ERROR_NOT_EMPTY,
57 OLE_ERROR_SIZE,
58 OLE_ERROR_DRIVE,
59 OLE_ERROR_NETWORK,
60 OLE_ERROR_NAME,
61 OLE_ERROR_TEMPLATE,
62 OLE_ERROR_NEW,
63 OLE_ERROR_EDIT,
64 OLE_ERROR_OPEN,
65 OLE_ERROR_NOT_OPEN,
66 OLE_ERROR_LAUNCH,
67 OLE_ERROR_COMM,
68 OLE_ERROR_TERMINATE,
69 OLE_ERROR_COMMAND,
70 OLE_ERROR_SHOW,
71 OLE_ERROR_DOVERB,
72 OLE_ERROR_ADVISE_NATIVE,
73 OLE_ERROR_ADVISE_PICT,
74 OLE_ERROR_ADVISE_RENAME,
75 OLE_ERROR_POKE_NATIVE,
76 OLE_ERROR_REQUEST_NATIVE,
77 OLE_ERROR_REQUEST_PICT,
78 OLE_ERROR_SERVER_BLOCKED,
79 OLE_ERROR_REGISTRATION,
80 OLE_ERROR_ALREADY_REGISTERED,
81 OLE_ERROR_TASK,
82 OLE_ERROR_OUTOFDATE,
83 OLE_ERROR_CANT_UPDATE_CLIENT,
84 OLE_ERROR_UPDATE,
85 OLE_ERROR_SETDATA_FORMAT,
86 OLE_ERROR_STATIC_FROM_OTHER_OS,
87 OLE_WARN_DELETE_DATA = 1000
88} OLESTATUS;
89
Alexandre Julliardff8331e1995-09-18 11:19:54 +000090typedef enum {
Alexandre Julliard6abb89c1995-03-02 17:33:47 +000091 OLE_SERVER_MULTI,
92 OLE_SERVER_SINGLE
Alexandre Julliard808cb041995-08-17 17:11:36 +000093} OLE_SERVER_USE;
Alexandre Julliardff8331e1995-09-18 11:19:54 +000094
Alexandre Julliard808cb041995-08-17 17:11:36 +000095typedef enum {
96 OLE_CHANGED,
Alexandre Julliardff8331e1995-09-18 11:19:54 +000097 OLE_SAVED,
Alexandre Julliard808cb041995-08-17 17:11:36 +000098 OLE_CLOSED,
Alexandre Julliard808cb041995-08-17 17:11:36 +000099 OLE_RENAMED,
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000100 OLE_QUERY_PAINT,
101 OLE_RELEASE,
102 OLE_QUERY_RETRY
Alexandre Julliard808cb041995-08-17 17:11:36 +0000103} OLE_NOTIFICATION;
Alexandre Julliard6abb89c1995-03-02 17:33:47 +0000104
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000105typedef enum {
106 olerender_none,
107 olerender_draw,
108 olerender_format
109} OLEOPT_RENDER;
110
111typedef enum {
112 oleupdate_always,
113 oleupdate_onsave,
114 oleupdate_oncall,
Alexandre Julliarda69b88b1998-03-15 20:29:56 +0000115 oleupdate_onclose
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000116} OLEOPT_UPDATE;
117
Alexandre Julliard6abb89c1995-03-02 17:33:47 +0000118typedef LONG LHSERVER;
119typedef LONG LHSERVERDOC;
120typedef LONG LHCLIENTDOC;
Alexandre Julliard808cb041995-08-17 17:11:36 +0000121typedef LONG OLECLIPFORMAT;/* dunno about this type, please change/add */
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000122typedef OLEOPT_UPDATE* LPOLEOPT_UPDATE;
123
124typedef enum {
125 OLE_NONE, /* none */
126 OLE_DELETE, /* delete object */
127 OLE_LNKPASTE, /* link paste */
128 OLE_EMBPASTE, /* paste(and update) */
129 OLE_SHOW,
130 OLE_RUN,
131 OLE_ACTIVATE,
132 OLE_UPDATE,
133 OLE_CLOSE,
134 OLE_RECONNECT,
135 OLE_SETUPDATEOPTIONS,
136 OLE_SERVERRUNLAUNCH, /* unlaunch (terminate?) server */
137 OLE_LOADFROMSTREAM, /* (auto reconnect) */
138 OLE_SETDATA, /* OleSetData */
139 OLE_REQUESTDATA, /* OleRequestData */
140 OLE_OTHER,
141 OLE_CREATE,
142 OLE_CREATEFROMTEMPLATE,
143 OLE_CREATELINKFROMFILE,
144 OLE_COPYFROMLNK,
145 OLE_CREATREFROMFILE,
146 OLE_CREATEINVISIBLE
147} OLE_RELEASE_METHOD;
Alexandre Julliard808cb041995-08-17 17:11:36 +0000148
149typedef struct _OLETARGETDEVICE {
Alexandre Julliard21979011997-03-05 08:22:35 +0000150 UINT16 otdDeviceNameOffset;
151 UINT16 otdDriverNameOffset;
152 UINT16 otdPortNameOffset;
153 UINT16 otdExtDevmodeOffset;
154 UINT16 otdExtDevmodeSize;
155 UINT16 otdEnvironmentOffset;
156 UINT16 otdEnvironmentSize;
Alexandre Julliard808cb041995-08-17 17:11:36 +0000157 BYTE otdData[1];
158 /* ... */
159} OLETARGETDEVICE;
160typedef struct _OLESTREAM* LPOLESTREAM;
161typedef struct _OLESTREAMVTBL {
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000162 DWORD (CALLBACK *Get)(LPOLESTREAM,LPSTR,DWORD);
163 DWORD (CALLBACK *Put)(LPOLESTREAM,LPSTR,DWORD);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000164} OLESTREAMVTBL;
165typedef OLESTREAMVTBL* LPOLESTREAMVTBL;
166typedef struct _OLESTREAM {
167 LPOLESTREAMVTBL lpstbl;
168} OLESTREAM;
169typedef struct _OLESERVERDOC* LPOLESERVERDOC;
170typedef struct _OLEOBJECT* LPOLEOBJECT;
171typedef struct _OLECLIENT* LPOLECLIENT;
172typedef struct _OLESERVERDOCVTBL {
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000173 OLESTATUS (CALLBACK *Save)(LPOLESERVERDOC);
174 OLESTATUS (CALLBACK *Close)(LPOLESERVERDOC);
Alexandre Julliarda11d7b11998-03-01 20:05:02 +0000175 OLESTATUS (CALLBACK *SetHostNames)(LPOLESERVERDOC,LPCOLESTR16,LPCOLESTR16);
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000176 OLESTATUS (CALLBACK *SetDocDimensions)(LPOLESERVERDOC,LPRECT16);
Alexandre Julliard3d506461999-01-23 12:37:00 +0000177#ifdef __WINE__
178/* GetObject is a WINELIB_NAME macro so it cannot be used in Wine itself */
179 OLESTATUS (CALLBACK *pGetObject)(LPOLESERVERDOC,LPCOLESTR16,LPOLEOBJECT*,LPOLECLIENT);
180#else
Alexandre Julliarda11d7b11998-03-01 20:05:02 +0000181 OLESTATUS (CALLBACK *GetObject)(LPOLESERVERDOC,LPCOLESTR16,LPOLEOBJECT*,LPOLECLIENT);
Alexandre Julliard3d506461999-01-23 12:37:00 +0000182#endif
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000183 OLESTATUS (CALLBACK *Release)(LPOLESERVERDOC);
184 OLESTATUS (CALLBACK *SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE);
185 OLESTATUS (CALLBACK *Execute)(LPOLESERVERDOC,HGLOBAL16);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000186} OLESERVERDOCVTBL;
187typedef OLESERVERDOCVTBL* LPOLESERVERDOCVTBL;
188typedef struct _OLESERVERDOC {
189 LPOLESERVERDOCVTBL lpvtbl;
190 /* server provided state info */
191} OLESERVERDOC;
Alexandre Julliard6abb89c1995-03-02 17:33:47 +0000192
193typedef struct _OLESERVER* LPOLESERVER;
Alexandre Julliard808cb041995-08-17 17:11:36 +0000194typedef struct _OLESERVERVTBL {
Alexandre Julliarda11d7b11998-03-01 20:05:02 +0000195 OLESTATUS (CALLBACK *Open)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPOLESERVERDOC *);
196 OLESTATUS (CALLBACK *Create)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC*);
197 OLESTATUS (CALLBACK *CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC *);
198 OLESTATUS (CALLBACK *Edit)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC *);
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000199 OLESTATUS (CALLBACK *Exit)(LPOLESERVER);
200 OLESTATUS (CALLBACK *Release)(LPOLESERVER);
201 OLESTATUS (CALLBACK *Execute)(LPOLESERVER);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000202} OLESERVERVTBL;
203typedef OLESERVERVTBL *LPOLESERVERVTBL;
204typedef struct _OLESERVER {
205 LPOLESERVERVTBL lpvtbl;
206 /* server specific data */
207} OLESERVER;
208typedef struct _OLECLIENTVTBL {
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000209 int (CALLBACK *CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000210} OLECLIENTVTBL;
211typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
Alexandre Julliard6abb89c1995-03-02 17:33:47 +0000212
Alexandre Julliard808cb041995-08-17 17:11:36 +0000213typedef struct _OLECLIENT {
214 LPOLECLIENTVTBL lpvtbl;
215 /* client data... */
216} OLECLIENT;
217
218typedef struct _OLEOBJECTVTBL {
Alexandre Julliarda11d7b11998-03-01 20:05:02 +0000219 void * (CALLBACK *QueryProtocol)(LPOLEOBJECT,LPCOLESTR16);
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000220 OLESTATUS (CALLBACK *Release)(LPOLEOBJECT);
221 OLESTATUS (CALLBACK *Show)(LPOLEOBJECT,BOOL16);
222 OLESTATUS (CALLBACK *DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16);
223 OLESTATUS (CALLBACK *GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *);
224 OLESTATUS (CALLBACK *SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16);
225 OLESTATUS (CALLBACK *SetTargetDevice)(LPOLEOBJECT,HGLOBAL16);
226 OLESTATUS (CALLBACK *SetBounds)(LPOLEOBJECT,LPRECT16);
227 OLESTATUS (CALLBACK *EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
228 OLESTATUS (CALLBACK *SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE);
229 OLESTATUS (CALLBACK *Delete)(LPOLEOBJECT);
Alexandre Julliarda11d7b11998-03-01 20:05:02 +0000230 OLESTATUS (CALLBACK *SetHostNames)(LPOLEOBJECT,LPCOLESTR16,LPCOLESTR16);
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000231 OLESTATUS (CALLBACK *SaveToStream)(LPOLEOBJECT,LPOLESTREAM);
Alexandre Julliarda11d7b11998-03-01 20:05:02 +0000232 OLESTATUS (CALLBACK *Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *);
233 OLESTATUS (CALLBACK *CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *);
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000234 OLESTATUS (CALLBACK *Equal)(LPOLEOBJECT,LPOLEOBJECT);
235 OLESTATUS (CALLBACK *CopyToClipBoard)(LPOLEOBJECT);
236 OLESTATUS (CALLBACK *Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16);
237 OLESTATUS (CALLBACK *Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16);
238 OLESTATUS (CALLBACK *Execute)(LPOLEOBJECT,HGLOBAL16,UINT16);
239 OLESTATUS (CALLBACK *Close)(LPOLEOBJECT);
240 OLESTATUS (CALLBACK *Update)(LPOLEOBJECT);
241 OLESTATUS (CALLBACK *Reconnect)(LPOLEOBJECT);
Alexandre Julliarda11d7b11998-03-01 20:05:02 +0000242 OLESTATUS (CALLBACK *ObjectConvert)(LPOLEOBJECT,LPCOLESTR16,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT*);
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000243 OLESTATUS (CALLBACK *GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE);
244 OLESTATUS (CALLBACK *SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
Alexandre Julliarda11d7b11998-03-01 20:05:02 +0000245 OLESTATUS (CALLBACK *Rename)(LPOLEOBJECT,LPCOLESTR16);
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000246 OLESTATUS (CALLBACK *QueryName)(LPOLEOBJECT,LPSTR,LPUINT16);
247 OLESTATUS (CALLBACK *QueryType)(LPOLEOBJECT,LPLONG);
248 OLESTATUS (CALLBACK *QueryBounds)(LPOLEOBJECT,LPRECT16);
249 OLESTATUS (CALLBACK *QuerySize)(LPOLEOBJECT,LPDWORD);
250 OLESTATUS (CALLBACK *QueryOpen)(LPOLEOBJECT);
251 OLESTATUS (CALLBACK *QueryOutOfDate)(LPOLEOBJECT);
252 OLESTATUS (CALLBACK *QueryReleaseStatus)(LPOLEOBJECT);
253 OLESTATUS (CALLBACK *QueryReleaseError)(LPOLEOBJECT);
254 OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(LPOLEOBJECT);
255 OLESTATUS (CALLBACK *RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
256 OLESTATUS (CALLBACK *ObjectLong)(LPOLEOBJECT,UINT16,LPLONG);
Alexandre Julliard808cb041995-08-17 17:11:36 +0000257} OLEOBJECTVTBL;
258typedef OLEOBJECTVTBL* LPOLEOBJECTVTBL;
259
260typedef struct _OLEOBJECT {
261 LPOLEOBJECTVTBL lpvtbl;
262} OLEOBJECT;
263
264
Bertho Stultiens231dfa21999-02-13 17:56:28 +0000265OLESTATUS WINAPI OleRegisterServer16(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE16,OLE_SERVER_USE);
266OLESTATUS WINAPI OleUnblockServer16(LHSERVER,BOOL16 *);
267OLESTATUS WINAPI OleRegisterServerDoc16(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *);
268OLESTATUS WINAPI OleRegisterClientDoc16(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *);
269OLESTATUS WINAPI OleRenameClientDoc16(LHCLIENTDOC,LPCSTR);
270OLESTATUS WINAPI OleRevokeServerDoc16(LHSERVERDOC);
271OLESTATUS WINAPI OleRevokeClientDoc16(LHCLIENTDOC);
272OLESTATUS WINAPI OleRevokeServer16(LHSERVER);
Pavel Roskincbb95491999-03-13 12:51:19 +0000273OLESTATUS WINAPI OleRevertClientDoc16(LHCLIENTDOC hServerDoc);
274OLESTATUS WINAPI OleEnumObjects16(LHCLIENTDOC hServerDoc, SEGPTR data);
275OLESTATUS WINAPI OleCreateLinkFromClip16(
276 LPCSTR name, LPOLECLIENT olecli, LHCLIENTDOC hclientdoc, LPCSTR xname,
277 LPOLEOBJECT *lpoleob, UINT16 render, UINT16 clipformat);
278OLESTATUS WINAPI OleQueryLinkFromClip16(LPCSTR name, UINT16 render, UINT16 clipformat);
279OLESTATUS WINAPI OleQueryCreateFromClip16(LPCSTR name, UINT16 render, UINT16 clipformat);
280OLESTATUS WINAPI OleQueryType16(LPOLEOBJECT oleob, SEGPTR xlong);
281OLESTATUS WINAPI OleCreateFromClip16(
282 LPCSTR name, LPOLECLIENT olecli, LHCLIENTDOC hclientdoc, LPCSTR xname,
283 LPOLEOBJECT *lpoleob, UINT16 render, UINT16 clipformat);
Alexandre Julliardd90840e1996-06-11 16:02:08 +0000284
John Richardson2660e6a1998-11-07 12:19:26 +0000285/* com functions */
286void WINAPI CoFreeUnusedLibraries(void);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000287HINSTANCE WINAPI CoLoadLibrary(LPSTR lpszLibName, BOOL bAutoFree);
John Richardson2660e6a1998-11-07 12:19:26 +0000288void WINAPI CoFreeUnusedLibraries(void);
289void WINAPI CoFreeAllLibraries(void);
290
Paul Quinnea1640f1999-03-10 18:03:53 +0000291#ifdef __cplusplus
292} /*extern*/
293#endif
294
Alexandre Julliardd90840e1996-06-11 16:02:08 +0000295#endif /* __WINE_OLE_H */