Release 960521
[wine/multimedia.git] / include / ole.h
blob9cc310a2ae731bcc7ac17efd7fa120a1b65cc301
1 /*
2 * ole.h - Declarations for OLESVR and OLECLI
3 */
5 typedef LPCSTR OLE_LPCSTR;
7 /* object types */
8 #define OT_LINK 1
9 #define OT_EMBEDDED 2
10 #define OT_STATIC 3
12 /* activate verbs */
13 #define OLEVERB_PRIMARY 0
15 typedef enum
17 OLE_OK,
18 OLE_WAIT_FOR_RELEASE,
19 OLE_BUSY,
20 OLE_ERROR_PROTECT_ONLY,
21 OLE_ERROR_MEMORY,
22 OLE_ERROR_STREAM,
23 OLE_ERROR_STATIC,
24 OLE_ERROR_BLANK,
25 OLE_ERROR_DRAW,
26 OLE_ERROR_METAFILE,
27 OLE_ERROR_ABORT,
28 OLE_ERROR_CLIPBOARD,
29 OLE_ERROR_FORMAT,
30 OLE_ERROR_OBJECT,
31 OLE_ERROR_OPTION,
32 OLE_ERROR_PROTOCOL,
33 OLE_ERROR_ADDRESS,
34 OLE_ERROR_NOT_EQUAL,
35 OLE_ERROR_HANDLE,
36 OLE_ERROR_GENERIC,
37 OLE_ERROR_CLASS,
38 OLE_ERROR_SYNTAX,
39 OLE_ERROR_DATATYPE,
40 OLE_ERROR_PALETTE,
41 OLE_ERROR_NOT_LINK,
42 OLE_ERROR_NOT_EMPTY,
43 OLE_ERROR_SIZE,
44 OLE_ERROR_DRIVE,
45 OLE_ERROR_NETWORK,
46 OLE_ERROR_NAME,
47 OLE_ERROR_TEMPLATE,
48 OLE_ERROR_NEW,
49 OLE_ERROR_EDIT,
50 OLE_ERROR_OPEN,
51 OLE_ERROR_NOT_OPEN,
52 OLE_ERROR_LAUNCH,
53 OLE_ERROR_COMM,
54 OLE_ERROR_TERMINATE,
55 OLE_ERROR_COMMAND,
56 OLE_ERROR_SHOW,
57 OLE_ERROR_DOVERB,
58 OLE_ERROR_ADVISE_NATIVE,
59 OLE_ERROR_ADVISE_PICT,
60 OLE_ERROR_ADVISE_RENAME,
61 OLE_ERROR_POKE_NATIVE,
62 OLE_ERROR_REQUEST_NATIVE,
63 OLE_ERROR_REQUEST_PICT,
64 OLE_ERROR_SERVER_BLOCKED,
65 OLE_ERROR_REGISTRATION,
66 OLE_ERROR_ALREADY_REGISTERED,
67 OLE_ERROR_TASK,
68 OLE_ERROR_OUTOFDATE,
69 OLE_ERROR_CANT_UPDATE_CLIENT,
70 OLE_ERROR_UPDATE,
71 OLE_ERROR_SETDATA_FORMAT,
72 OLE_ERROR_STATIC_FROM_OTHER_OS,
73 OLE_WARN_DELETE_DATA = 1000
74 } OLESTATUS;
76 typedef enum {
77 OLE_SERVER_MULTI,
78 OLE_SERVER_SINGLE
79 } OLE_SERVER_USE;
81 typedef enum {
82 OLE_CHANGED,
83 OLE_SAVED,
84 OLE_CLOSED,
85 OLE_RENAMED,
86 OLE_QUERY_PAINT,
87 OLE_RELEASE,
88 OLE_QUERY_RETRY
89 } OLE_NOTIFICATION;
91 typedef enum {
92 olerender_none,
93 olerender_draw,
94 olerender_format
95 } OLEOPT_RENDER;
97 typedef enum {
98 oleupdate_always,
99 oleupdate_onsave,
100 oleupdate_oncall,
101 oleupdate_onclose,
102 } OLEOPT_UPDATE;
104 typedef LONG LHSERVER;
105 typedef LONG LHSERVERDOC;
106 typedef LONG LHCLIENTDOC;
107 typedef LONG OLECLIPFORMAT;/* dunno about this type, please change/add */
108 typedef OLEOPT_UPDATE* LPOLEOPT_UPDATE;
110 typedef enum {
111 OLE_NONE, /* none */
112 OLE_DELETE, /* delete object */
113 OLE_LNKPASTE, /* link paste */
114 OLE_EMBPASTE, /* paste(and update) */
115 OLE_SHOW,
116 OLE_RUN,
117 OLE_ACTIVATE,
118 OLE_UPDATE,
119 OLE_CLOSE,
120 OLE_RECONNECT,
121 OLE_SETUPDATEOPTIONS,
122 OLE_SERVERRUNLAUNCH, /* unlaunch (terminate?) server */
123 OLE_LOADFROMSTREAM, /* (auto reconnect) */
124 OLE_SETDATA, /* OleSetData */
125 OLE_REQUESTDATA, /* OleRequestData */
126 OLE_OTHER,
127 OLE_CREATE,
128 OLE_CREATEFROMTEMPLATE,
129 OLE_CREATELINKFROMFILE,
130 OLE_COPYFROMLNK,
131 OLE_CREATREFROMFILE,
132 OLE_CREATEINVISIBLE
133 } OLE_RELEASE_METHOD;
135 typedef struct _OLETARGETDEVICE {
136 UINT otdDeviceNameOffset;
137 UINT otdDriverNameOffset;
138 UINT otdPortNameOffset;
139 UINT otdExtDevmodeOffset;
140 UINT otdExtDevmodeSize;
141 UINT otdEnvironmentOffset;
142 UINT otdEnvironmentSize;
143 BYTE otdData[1];
144 /* ... */
145 } OLETARGETDEVICE;
146 typedef struct _OLESTREAM* LPOLESTREAM;
147 typedef struct _OLESTREAMVTBL {
148 DWORD (*Get)(LPOLESTREAM,LPSTR,DWORD);
149 DWORD (*Put)(LPOLESTREAM,LPSTR,DWORD);
150 } OLESTREAMVTBL;
151 typedef OLESTREAMVTBL* LPOLESTREAMVTBL;
152 typedef struct _OLESTREAM {
153 LPOLESTREAMVTBL lpstbl;
154 } OLESTREAM;
155 typedef struct _OLESERVERDOC* LPOLESERVERDOC;
156 typedef struct _OLEOBJECT* LPOLEOBJECT;
157 typedef struct _OLECLIENT* LPOLECLIENT;
158 typedef struct _OLESERVERDOCVTBL {
159 OLESTATUS (*Save)(LPOLESERVERDOC);
160 OLESTATUS (*Close)(LPOLESERVERDOC);
161 OLESTATUS (*SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR);
162 OLESTATUS (*SetDocDimensions)(LPOLESERVERDOC,LPRECT16);
163 OLESTATUS (*GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT);
164 OLESTATUS (*Release)(LPOLESERVERDOC);
165 OLESTATUS (*SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE);
166 OLESTATUS (*Execute)(LPOLESERVERDOC,HGLOBAL);
167 } OLESERVERDOCVTBL;
168 typedef OLESERVERDOCVTBL* LPOLESERVERDOCVTBL;
169 typedef struct _OLESERVERDOC {
170 LPOLESERVERDOCVTBL lpvtbl;
171 /* server provided state info */
172 } OLESERVERDOC;
174 typedef struct _OLESERVER* LPOLESERVER;
175 typedef struct _OLESERVERVTBL {
176 OLESTATUS (*Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC *);
177 OLESTATUS (*Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
178 OLESTATUS (*CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *);
179 OLESTATUS (*Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *);
180 OLESTATUS (*Exit)(LPOLESERVER);
181 OLESTATUS (*Release)(LPOLESERVER);
182 OLESTATUS (*Execute)(LPOLESERVER);
183 } OLESERVERVTBL;
184 typedef OLESERVERVTBL *LPOLESERVERVTBL;
185 typedef struct _OLESERVER {
186 LPOLESERVERVTBL lpvtbl;
187 /* server specific data */
188 } OLESERVER;
189 typedef struct _OLECLIENTVTBL {
190 int (*CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT);
191 } OLECLIENTVTBL;
192 typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
194 typedef struct _OLECLIENT {
195 LPOLECLIENTVTBL lpvtbl;
196 /* client data... */
197 } OLECLIENT;
199 typedef struct _OLEOBJECTVTBL {
200 void * (*QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR);
201 OLESTATUS (*Release)(LPOLEOBJECT);
202 OLESTATUS (*Show)(LPOLEOBJECT,BOOL);
203 OLESTATUS (*DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL);
204 OLESTATUS (*GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE *);
205 OLESTATUS (*SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
206 OLESTATUS (*SetTargetDevice)(LPOLEOBJECT,HGLOBAL);
207 OLESTATUS (*SetBounds)(LPOLEOBJECT,LPRECT16);
208 OLESTATUS (*EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
209 OLESTATUS (*SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE);
210 OLESTATUS (*Delete)(LPOLEOBJECT);
211 OLESTATUS (*SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR);
212 OLESTATUS (*SaveToStream)(LPOLEOBJECT,LPOLESTREAM);
213 OLESTATUS (*Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *);
214 OLESTATUS (*CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *);
215 OLESTATUS (*Equal)(LPOLEOBJECT,LPOLEOBJECT);
216 OLESTATUS (*CopyToClipBoard)(LPOLEOBJECT);
217 OLESTATUS (*Draw)(LPOLEOBJECT,HDC,LPRECT16,LPRECT16,HDC);
218 OLESTATUS (*Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPRECT16);
219 OLESTATUS (*Execute)(LPOLEOBJECT,HGLOBAL,UINT);
220 OLESTATUS (*Close)(LPOLEOBJECT);
221 OLESTATUS (*Update)(LPOLEOBJECT);
222 OLESTATUS (*Reconnect)(LPOLEOBJECT);
223 OLESTATUS (*ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
224 OLESTATUS (*GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE);
225 OLESTATUS (*SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
226 OLESTATUS (*Rename)(LPOLEOBJECT,OLE_LPCSTR);
227 OLESTATUS (*QueryName)(LPOLEOBJECT,LPSTR,LPUINT16);
228 OLESTATUS (*QueryType)(LPOLEOBJECT,LPLONG);
229 OLESTATUS (*QueryBounds)(LPOLEOBJECT,LPRECT16);
230 OLESTATUS (*QuerySize)(LPOLEOBJECT,LPDWORD);
231 OLESTATUS (*QueryOpen)(LPOLEOBJECT);
232 OLESTATUS (*QueryOutOfDate)(LPOLEOBJECT);
233 OLESTATUS (*QueryReleaseStatus)(LPOLEOBJECT);
234 OLESTATUS (*QueryReleaseError)(LPOLEOBJECT);
235 OLE_RELEASE_METHOD (*QueryReleaseMethod)(LPOLEOBJECT);
236 OLESTATUS (*RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
237 OLESTATUS (*ObjectLong)(LPOLEOBJECT,UINT,LPLONG);
238 } OLEOBJECTVTBL;
239 typedef OLEOBJECTVTBL* LPOLEOBJECTVTBL;
241 typedef struct _OLEOBJECT {
242 LPOLEOBJECTVTBL lpvtbl;
243 } OLEOBJECT;
246 OLESTATUS OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE,OLE_SERVER_USE);
247 OLESTATUS OleUnblockServer(LHSERVER,BOOL *);
248 OLESTATUS OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *);
249 OLESTATUS OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *);
250 OLESTATUS OleRenameClientDoc(LHCLIENTDOC,LPCSTR);
251 OLESTATUS OleRevokeServerDoc(LHSERVERDOC);
252 OLESTATUS OleRevokeClientDoc(LHCLIENTDOC);
253 OLESTATUS OleRevokeServer(LHSERVER);