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