Release 980201
[wine/multimedia.git] / include / ole.h
blob71c1659c25178dbb7646c39dbe6b8471988ceba4
1 /*
2 * ole.h - Declarations for OLESVR and OLECLI
3 */
5 #ifndef __WINE_OLE_H
6 #define __WINE_OLE_H
8 #include "windows.h"
10 typedef CHAR OLE_CHAR,OLECHAR;
11 typedef LPCSTR OLE_LPCSTR;
12 typedef LPSTR LPOLESTR;
13 typedef LPCSTR LPCOLESTR;
15 typedef unsigned short VARTYPE;
16 typedef LONG DISPID;
19 /* object types */
20 #define OT_LINK 1
21 #define OT_EMBEDDED 2
22 #define OT_STATIC 3
24 /* activate verbs */
25 #define OLEVERB_PRIMARY 0
27 typedef enum
29 OLE_OK,
30 OLE_WAIT_FOR_RELEASE,
31 OLE_BUSY,
32 OLE_ERROR_PROTECT_ONLY,
33 OLE_ERROR_MEMORY,
34 OLE_ERROR_STREAM,
35 OLE_ERROR_STATIC,
36 OLE_ERROR_BLANK,
37 OLE_ERROR_DRAW,
38 OLE_ERROR_METAFILE,
39 OLE_ERROR_ABORT,
40 OLE_ERROR_CLIPBOARD,
41 OLE_ERROR_FORMAT,
42 OLE_ERROR_OBJECT,
43 OLE_ERROR_OPTION,
44 OLE_ERROR_PROTOCOL,
45 OLE_ERROR_ADDRESS,
46 OLE_ERROR_NOT_EQUAL,
47 OLE_ERROR_HANDLE,
48 OLE_ERROR_GENERIC,
49 OLE_ERROR_CLASS,
50 OLE_ERROR_SYNTAX,
51 OLE_ERROR_DATATYPE,
52 OLE_ERROR_PALETTE,
53 OLE_ERROR_NOT_LINK,
54 OLE_ERROR_NOT_EMPTY,
55 OLE_ERROR_SIZE,
56 OLE_ERROR_DRIVE,
57 OLE_ERROR_NETWORK,
58 OLE_ERROR_NAME,
59 OLE_ERROR_TEMPLATE,
60 OLE_ERROR_NEW,
61 OLE_ERROR_EDIT,
62 OLE_ERROR_OPEN,
63 OLE_ERROR_NOT_OPEN,
64 OLE_ERROR_LAUNCH,
65 OLE_ERROR_COMM,
66 OLE_ERROR_TERMINATE,
67 OLE_ERROR_COMMAND,
68 OLE_ERROR_SHOW,
69 OLE_ERROR_DOVERB,
70 OLE_ERROR_ADVISE_NATIVE,
71 OLE_ERROR_ADVISE_PICT,
72 OLE_ERROR_ADVISE_RENAME,
73 OLE_ERROR_POKE_NATIVE,
74 OLE_ERROR_REQUEST_NATIVE,
75 OLE_ERROR_REQUEST_PICT,
76 OLE_ERROR_SERVER_BLOCKED,
77 OLE_ERROR_REGISTRATION,
78 OLE_ERROR_ALREADY_REGISTERED,
79 OLE_ERROR_TASK,
80 OLE_ERROR_OUTOFDATE,
81 OLE_ERROR_CANT_UPDATE_CLIENT,
82 OLE_ERROR_UPDATE,
83 OLE_ERROR_SETDATA_FORMAT,
84 OLE_ERROR_STATIC_FROM_OTHER_OS,
85 OLE_WARN_DELETE_DATA = 1000
86 } OLESTATUS;
88 typedef enum {
89 OLE_SERVER_MULTI,
90 OLE_SERVER_SINGLE
91 } OLE_SERVER_USE;
93 typedef enum {
94 OLE_CHANGED,
95 OLE_SAVED,
96 OLE_CLOSED,
97 OLE_RENAMED,
98 OLE_QUERY_PAINT,
99 OLE_RELEASE,
100 OLE_QUERY_RETRY
101 } OLE_NOTIFICATION;
103 typedef enum {
104 olerender_none,
105 olerender_draw,
106 olerender_format
107 } OLEOPT_RENDER;
109 typedef enum {
110 oleupdate_always,
111 oleupdate_onsave,
112 oleupdate_oncall,
113 oleupdate_onclose,
114 } OLEOPT_UPDATE;
116 typedef LONG LHSERVER;
117 typedef LONG LHSERVERDOC;
118 typedef LONG LHCLIENTDOC;
119 typedef LONG OLECLIPFORMAT;/* dunno about this type, please change/add */
120 typedef OLEOPT_UPDATE* LPOLEOPT_UPDATE;
122 typedef enum {
123 OLE_NONE, /* none */
124 OLE_DELETE, /* delete object */
125 OLE_LNKPASTE, /* link paste */
126 OLE_EMBPASTE, /* paste(and update) */
127 OLE_SHOW,
128 OLE_RUN,
129 OLE_ACTIVATE,
130 OLE_UPDATE,
131 OLE_CLOSE,
132 OLE_RECONNECT,
133 OLE_SETUPDATEOPTIONS,
134 OLE_SERVERRUNLAUNCH, /* unlaunch (terminate?) server */
135 OLE_LOADFROMSTREAM, /* (auto reconnect) */
136 OLE_SETDATA, /* OleSetData */
137 OLE_REQUESTDATA, /* OleRequestData */
138 OLE_OTHER,
139 OLE_CREATE,
140 OLE_CREATEFROMTEMPLATE,
141 OLE_CREATELINKFROMFILE,
142 OLE_COPYFROMLNK,
143 OLE_CREATREFROMFILE,
144 OLE_CREATEINVISIBLE
145 } OLE_RELEASE_METHOD;
147 typedef struct _OLETARGETDEVICE {
148 UINT16 otdDeviceNameOffset;
149 UINT16 otdDriverNameOffset;
150 UINT16 otdPortNameOffset;
151 UINT16 otdExtDevmodeOffset;
152 UINT16 otdExtDevmodeSize;
153 UINT16 otdEnvironmentOffset;
154 UINT16 otdEnvironmentSize;
155 BYTE otdData[1];
156 /* ... */
157 } OLETARGETDEVICE;
158 typedef struct _OLESTREAM* LPOLESTREAM;
159 typedef struct _OLESTREAMVTBL {
160 DWORD (CALLBACK *Get)(LPOLESTREAM,LPSTR,DWORD);
161 DWORD (CALLBACK *Put)(LPOLESTREAM,LPSTR,DWORD);
162 } OLESTREAMVTBL;
163 typedef OLESTREAMVTBL* LPOLESTREAMVTBL;
164 typedef struct _OLESTREAM {
165 LPOLESTREAMVTBL lpstbl;
166 } OLESTREAM;
167 typedef struct _OLESERVERDOC* LPOLESERVERDOC;
168 typedef struct _OLEOBJECT* LPOLEOBJECT;
169 typedef struct _OLECLIENT* LPOLECLIENT;
170 typedef struct _OLESERVERDOCVTBL {
171 OLESTATUS (CALLBACK *Save)(LPOLESERVERDOC);
172 OLESTATUS (CALLBACK *Close)(LPOLESERVERDOC);
173 OLESTATUS (CALLBACK *SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR);
174 OLESTATUS (CALLBACK *SetDocDimensions)(LPOLESERVERDOC,LPRECT16);
175 #undef GetObject /* FIXME */
176 OLESTATUS (CALLBACK *GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT);
177 OLESTATUS (CALLBACK *Release)(LPOLESERVERDOC);
178 OLESTATUS (CALLBACK *SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE);
179 OLESTATUS (CALLBACK *Execute)(LPOLESERVERDOC,HGLOBAL16);
180 } OLESERVERDOCVTBL;
181 typedef OLESERVERDOCVTBL* LPOLESERVERDOCVTBL;
182 typedef struct _OLESERVERDOC {
183 LPOLESERVERDOCVTBL lpvtbl;
184 /* server provided state info */
185 } OLESERVERDOC;
187 typedef struct _OLESERVER* LPOLESERVER;
188 typedef struct _OLESERVERVTBL {
189 OLESTATUS (CALLBACK *Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC *);
190 OLESTATUS (CALLBACK *Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
191 OLESTATUS (CALLBACK *CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *);
192 OLESTATUS (CALLBACK *Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *);
193 OLESTATUS (CALLBACK *Exit)(LPOLESERVER);
194 OLESTATUS (CALLBACK *Release)(LPOLESERVER);
195 OLESTATUS (CALLBACK *Execute)(LPOLESERVER);
196 } OLESERVERVTBL;
197 typedef OLESERVERVTBL *LPOLESERVERVTBL;
198 typedef struct _OLESERVER {
199 LPOLESERVERVTBL lpvtbl;
200 /* server specific data */
201 } OLESERVER;
202 typedef struct _OLECLIENTVTBL {
203 int (CALLBACK *CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT);
204 } OLECLIENTVTBL;
205 typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
207 typedef struct _OLECLIENT {
208 LPOLECLIENTVTBL lpvtbl;
209 /* client data... */
210 } OLECLIENT;
212 typedef struct _OLEOBJECTVTBL {
213 void * (CALLBACK *QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR);
214 OLESTATUS (CALLBACK *Release)(LPOLEOBJECT);
215 OLESTATUS (CALLBACK *Show)(LPOLEOBJECT,BOOL16);
216 OLESTATUS (CALLBACK *DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16);
217 OLESTATUS (CALLBACK *GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *);
218 OLESTATUS (CALLBACK *SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16);
219 OLESTATUS (CALLBACK *SetTargetDevice)(LPOLEOBJECT,HGLOBAL16);
220 OLESTATUS (CALLBACK *SetBounds)(LPOLEOBJECT,LPRECT16);
221 OLESTATUS (CALLBACK *EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
222 OLESTATUS (CALLBACK *SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE);
223 OLESTATUS (CALLBACK *Delete)(LPOLEOBJECT);
224 OLESTATUS (CALLBACK *SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR);
225 OLESTATUS (CALLBACK *SaveToStream)(LPOLEOBJECT,LPOLESTREAM);
226 OLESTATUS (CALLBACK *Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *);
227 OLESTATUS (CALLBACK *CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *);
228 OLESTATUS (CALLBACK *Equal)(LPOLEOBJECT,LPOLEOBJECT);
229 OLESTATUS (CALLBACK *CopyToClipBoard)(LPOLEOBJECT);
230 OLESTATUS (CALLBACK *Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16);
231 OLESTATUS (CALLBACK *Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16);
232 OLESTATUS (CALLBACK *Execute)(LPOLEOBJECT,HGLOBAL16,UINT16);
233 OLESTATUS (CALLBACK *Close)(LPOLEOBJECT);
234 OLESTATUS (CALLBACK *Update)(LPOLEOBJECT);
235 OLESTATUS (CALLBACK *Reconnect)(LPOLEOBJECT);
236 OLESTATUS (CALLBACK *ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
237 OLESTATUS (CALLBACK *GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE);
238 OLESTATUS (CALLBACK *SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
239 OLESTATUS (CALLBACK *Rename)(LPOLEOBJECT,OLE_LPCSTR);
240 OLESTATUS (CALLBACK *QueryName)(LPOLEOBJECT,LPSTR,LPUINT16);
241 OLESTATUS (CALLBACK *QueryType)(LPOLEOBJECT,LPLONG);
242 OLESTATUS (CALLBACK *QueryBounds)(LPOLEOBJECT,LPRECT16);
243 OLESTATUS (CALLBACK *QuerySize)(LPOLEOBJECT,LPDWORD);
244 OLESTATUS (CALLBACK *QueryOpen)(LPOLEOBJECT);
245 OLESTATUS (CALLBACK *QueryOutOfDate)(LPOLEOBJECT);
246 OLESTATUS (CALLBACK *QueryReleaseStatus)(LPOLEOBJECT);
247 OLESTATUS (CALLBACK *QueryReleaseError)(LPOLEOBJECT);
248 OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(LPOLEOBJECT);
249 OLESTATUS (CALLBACK *RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
250 OLESTATUS (CALLBACK *ObjectLong)(LPOLEOBJECT,UINT16,LPLONG);
251 } OLEOBJECTVTBL;
252 typedef OLEOBJECTVTBL* LPOLEOBJECTVTBL;
254 typedef struct _OLEOBJECT {
255 LPOLEOBJECTVTBL lpvtbl;
256 } OLEOBJECT;
259 OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE16,OLE_SERVER_USE);
260 OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL16 *);
261 OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *);
262 OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *);
263 OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR);
264 OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC);
265 OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC);
266 OLESTATUS WINAPI OleRevokeServer(LHSERVER);
268 typedef enum tagCALLCONV {
269 CC_CDECL = 1,
270 CC_MSCPASCAL = CC_CDECL + 1,
271 CC_PASCAL = CC_MSCPASCAL,
272 CC_MACPASCAL = CC_PASCAL + 1,
273 CC_STDCALL = CC_MACPASCAL + 1,
274 CC_RESERVED = CC_STDCALL + 1,
275 CC_SYSCALL = CC_RESERVED + 1,
276 CC_MPWCDECL = CC_SYSCALL + 1,
277 CC_MPWPASCAL = CC_MPWCDECL + 1,
278 CC_MAX = CC_MPWPASCAL + 1
279 } CALLCONV;
281 typedef struct tagPARAMDATA {
282 OLECHAR * szName; /* parameter name */
283 VARTYPE vt; /* parameter type */
284 } PARAMDATA, * LPPARAMDATA;
286 typedef struct tagMETHODDATA {
287 OLECHAR * szName; /* method name */
288 PARAMDATA * ppdata; /* pointer to an array of PARAMDATAs */
289 DISPID dispid; /* method ID */
290 UINT16 iMeth; /* method index */
291 CALLCONV cc; /* calling convention */
292 UINT16 cArgs; /* count of arguments */
293 WORD wFlags; /* same wFlags as on IDispatch::Invoke() */
294 VARTYPE vtReturn;
295 } METHODDATA, * LPMETHODDATA;
297 typedef struct tagINTERFACEDATA {
298 METHODDATA * pmethdata; /* pointer to an array of METHODDATAs */
299 UINT16 cMembers; /* count of members */
300 } INTERFACEDATA, * LPINTERFACEDATA;
303 #endif /* __WINE_OLE_H */