Get rid of the ICOM_CALL macros.
[wine] / include / docobj.h
1 /*
2  * Copyright (C) 1999 Paul Quinn
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #include "rpc.h"
20 #include "rpcndr.h"
21 #ifndef COM_NO_WINDOWS_H
22 #include "windows.h"
23 #include "ole2.h"
24 #endif
25
26 #ifndef __WINE_DOCOBJ_H
27 #define __WINE_DOCOBJ_H
28
29 #include "winbase.h"
30 #include "windef.h"
31 #include "wingdi.h"
32 #include "winuser.h"
33 #include "ole2.h"
34 #define __WINE_INCLUDE_OAIDL
35 #include "oaidl.h"
36 #undef __WINE_INCLUDE_OAIDL
37
38 /*****************************************************************************
39  * Declare the structures
40  */
41 typedef enum
42 {
43         OLECMDF_SUPPORTED = 0x1,
44         OLECMDF_ENABLED = 0x2,
45         OLECMDF_LATCHED = 0x4,
46         OLECMDF_NINCHED = 0x8
47 } OLECMDF;
48
49 typedef struct _tagOLECMD
50 {
51         ULONG cmdID;
52         DWORD cmdf;
53 } OLECMD;
54
55 typedef struct _tagOLECMDTEXT
56 {
57         DWORD cmdtextf;
58         ULONG cwActual;
59         ULONG cwBuf;
60         WCHAR rgwz[1];
61 } OLECMDTEXT;
62
63 typedef enum
64 {
65         PRINTFLAG_MAYBOTHERUSER = 1,
66         PRINTFLAG_PROMPTUSER  = 2,
67         PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
68         PRINTFLAG_RECOMPOSETODEVICE = 8,
69         PRINTFLAG_DONTACTUALLYPRINT = 16,
70         PRINTFLAG_FORCEPROPERTIES = 32,
71         PRINTFLAG_PRINTTOFILE = 64
72 } PRINTFLAG;
73
74 typedef struct tagPAGERANGE
75 {
76         LONG nFromPage;
77         LONG nToPage;
78 } PAGERANGE;
79
80 typedef struct  tagPAGESET
81 {
82         ULONG cbStruct;
83         BOOL fOddPages;
84         BOOL fEvenPages;
85         ULONG cPageRange;
86         PAGERANGE rgPages[ 1 ];
87 } PAGESET;
88
89 typedef enum
90 {
91         OLECMDTEXTF_NONE  = 0,
92         OLECMDTEXTF_NAME  = 1,
93         OLECMDTEXTF_STATUS  = 2
94 } OLECMDTEXTF;
95
96 typedef enum
97 {
98         OLECMDEXECOPT_DODEFAULT = 0,
99         OLECMDEXECOPT_PROMPTUSER  = 1,
100         OLECMDEXECOPT_DONTPROMPTUSER  = 2,
101         OLECMDEXECOPT_SHOWHELP  = 3
102 } OLECMDEXECOPT;
103
104 typedef enum OLECMDID
105 {
106         OLECMDID_OPEN = 1,
107         OLECMDID_NEW = 2,
108         OLECMDID_SAVE = 3,
109         OLECMDID_SAVEAS = 4,
110         OLECMDID_SAVECOPYAS = 5,
111         OLECMDID_PRINT = 6,
112         OLECMDID_PRINTPREVIEW = 7,
113         OLECMDID_PAGESETUP = 8,
114         OLECMDID_SPELL = 9,
115         OLECMDID_PROPERTIES = 10,
116         OLECMDID_CUT = 11,
117         OLECMDID_COPY = 12,
118         OLECMDID_PASTE = 13,
119         OLECMDID_PASTESPECIAL = 14,
120         OLECMDID_UNDO = 15,
121         OLECMDID_REDO = 16,
122         OLECMDID_SELECTALL = 17,
123         OLECMDID_CLEARSELECTION = 18,
124         OLECMDID_ZOOM = 19,
125         OLECMDID_GETZOOMRANGE = 20,
126         OLECMDID_UPDATECOMMANDS = 21,
127         OLECMDID_REFRESH = 22,
128         OLECMDID_STOP = 23,
129         OLECMDID_HIDETOOLBARS = 24,
130         OLECMDID_SETPROGRESSMAX = 25,
131         OLECMDID_SETPROGRESSPOS = 26,
132         OLECMDID_SETPROGRESSTEXT = 27,
133         OLECMDID_SETTITLE = 28,
134         OLECMDID_SETDOWNLOADSTATE = 29,
135         OLECMDID_STOPDOWNLOAD = 30,
136         OLECMDID_ONTOOLBARACTIVATED = 31,
137         OLECMDID_FIND = 32,
138         OLECMDID_DELETE = 33,
139         OLECMDID_HTTPEQUIV = 34,
140         OLECMDID_HTTPEQUIV_DONE = 35,
141         OLECMDID_ENABLE_INTERACTION = 36,
142         OLECMDID_ONUNLOAD = 37,
143         OLECMDID_PROPERTYBAG2 = 38,
144         OLECMDID_PREREFRESH = 39,
145         /* iexplorer uses ... 44 */
146         OLECMDID_SHOWSCRIPTERROR        = 40,
147        OLECMDID_SHOWMESSAGE    = 41,
148        OLECMDID_SHOWFIND       = 42,
149        OLECMDID_SHOWPAGESETUP  = 43,
150        OLECMDID_SHOWPRINT      = 44,
151        OLECMDID_CLOSE  = 45,
152        OLECMDID_ALLOWUILESSSAVEAS      = 46,
153        OLECMDID_DONTDOWNLOADCSS        = 47,
154        OLECMDID_UPDATEPAGESTATUS       = 48,
155        OLECMDID_PRINT2 = 49,
156        OLECMDID_PRINTPREVIEW2  = 50,
157        OLECMDID_SETPRINTTEMPLATE       = 51,
158        OLECMDID_GETPRINTTEMPLATE       = 52
159 }       OLECMDID;
160
161 #define OLECMDERR_E_FIRST            (OLE_E_LAST+1)
162 #define OLECMDERR_E_NOTSUPPORTED     (OLECMDERR_E_FIRST)
163 #define OLECMDERR_E_DISABLED         (OLECMDERR_E_FIRST+1)
164 #define OLECMDERR_E_NOHELP           (OLECMDERR_E_FIRST+2)
165 #define OLECMDERR_E_CANCELED         (OLECMDERR_E_FIRST+3)
166 #define OLECMDERR_E_UNKNOWNGROUP     (OLECMDERR_E_FIRST+4)
167
168 /*****************************************************************************
169  * Predeclare the interfaces
170  */
171 DEFINE_GUID(IID_IOleDocument, 0xb722bcc5,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
172 typedef struct IOleDocument IOleDocument, *LPOLEDOCUMENT;
173
174 DEFINE_GUID(IID_IOleDocumentSite, 0xb722bcc7,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
175 typedef struct IOleDocumentSite IOleDocumentSite, *LPOLEDOCUMENTSITE;
176
177 DEFINE_GUID(IID_IOleDocumentView, 0xb722bcc6,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
178 typedef struct IOleDocumentView IOleDocumentView, *LPOLEDOCUMENTVIEW;
179
180 DEFINE_GUID(IID_IEnumOleDocumentViews, 0xb722bcc6,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
181 typedef struct IEnumOleDocumentViews IEnumOleDocumentViews, *LPENUMOLEDOCUMENTVIEWS;
182
183 DEFINE_GUID(IID_IOleCommandTarget, 0xb722bccb,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
184 typedef struct IOleCommandTarget IOleCommandTarget, *LPOLECOMMANDTARGET;
185
186 DEFINE_GUID(IID_IContinueCallback, 0xb722bcca,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
187 typedef struct IContinueCallback IContinueCallback, *LPCONTINUECALLBACK;
188
189 DEFINE_GUID(IID_IPrint, 0xb722bcc9,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
190 typedef struct IPrint IPrint, *LPPRINT;
191
192
193 /*****************************************************************************
194  * IOleDocument interface
195  */
196 #define INTERFACE IOleDocument
197 #define IOleDocument_METHODS \
198         STDMETHOD(CreateView)(THIS_ IOleInPlaceSite *pIPSite, IStream *pstm, DWORD dwReserved, IOleDocumentView **ppView) PURE; \
199         STDMETHOD(GetDocMiscStatus)(THIS_ DWORD *pdwStatus) PURE; \
200         STDMETHOD(EnumViews)(THIS_ IEnumOleDocumentViews **ppEnum, IOleDocumentView **ppView) PURE;
201 #define IOleDocument_IMETHODS \
202         IUnknown_IMETHODS \
203         IOleDocument_METHODS
204 ICOM_DEFINE(IOleDocument,IUnknown)
205 #undef INTERFACE
206
207 #ifdef COBJMACROS
208 /*** IUnknown methods ***/
209 #define IOleDocument_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
210 #define IOleDocument_AddRef(p)                  (p)->lpVtbl->AddRef(p)
211 #define IOleDocument_Release(p)                 (p)->lpVtbl->Release(p)
212 /*** IOleDocument methods ***/
213 #define IOleDocument_CreateView(p,a,b,c,d)      (p)->lpVtbl->CreateView(p,a,b,c,d)
214 #define IOleDocument_GetDocMiscStatus(p,a)      (p)->lpVtbl->GetDocMiscStatus(p,a)
215 #define IOleDocument_EnumViews(p,a,b)           (p)->lpVtbl->EnumViews(p,a,b)
216 #endif
217
218
219 /*****************************************************************************
220  * IOleDocumentSite interface
221  */
222 #define INTERFACE IOleDocumentSite
223 #define IOleDocumentSite_METHODS \
224         STDMETHOD(ActivateMe)(THIS_ IOleDocumentView *pViewToActivate) PURE;
225 #define IOleDocumentSite_IMETHODS \
226         IUnknown_IMETHODS \
227         IOleDocumentSite_METHODS
228 ICOM_DEFINE(IOleDocumentSite,IUnknown)
229 #undef INTERFACE
230
231 #ifdef COBJMACROS
232 /*** IUnknown methods ***/
233 #define IOleDocumentSite_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
234 #define IOleDocumentSite_AddRef(p)                  (p)->lpVtbl->AddRef(p)
235 #define IOleDocumentSite_Release(p)                 (p)->lpVtbl->Release(p)
236 /*** IOleDocumentSite methods ***/
237 #define IOleDocumentSite_ActivateMe(p,a)            (p)->lpVtbl->ActivateMe(p,a)
238 #endif
239
240
241 /*****************************************************************************
242  * IOleDocumentSite interface
243  */
244 #define INTERFACE IOleDocumentView
245 #define IOleDocumentView_METHODS \
246         STDMETHOD(SetInPlaceSite)(THIS_ IOleInPlaceSite *pIPSite) PURE; \
247         STDMETHOD(GetInPlaceSite)(THIS_ IOleInPlaceSite **ppIPSite) PURE; \
248         STDMETHOD(GetDocument)(THIS_ IUnknown **ppunk) PURE; \
249         STDMETHOD(SetRect)(THIS_ LPRECT prcView) PURE; \
250         STDMETHOD(GetRect)(THIS_ LPRECT prcView) PURE; \
251         STDMETHOD(SetRectComplex)(THIS_ LPRECT prcView, LPRECT prcHScroll, LPRECT prcVScroll, LPRECT prcSizeBox) PURE; \
252         STDMETHOD(Show)(THIS_ BOOL fShow) PURE; \
253         STDMETHOD(UIActivate)(THIS_ BOOL fUIActivate) PURE; \
254         STDMETHOD(Open)(THIS) PURE; \
255         STDMETHOD(CloseView)(THIS_ DWORD dwReserved) PURE; \
256         STDMETHOD(SaveViewState)(THIS_ LPSTREAM pstm) PURE; \
257         STDMETHOD(ApplyViewState)(THIS_ LPSTREAM pstm) PURE; \
258         STDMETHOD(Clone)(THIS_ IOleInPlaceSite *pIPSiteNew, IOleDocumentView **ppViewNew) PURE;
259 #define IOleDocumentView_IMETHODS \
260         IUnknown_IMETHODS \
261         IOleDocumentView_METHODS
262 ICOM_DEFINE(IOleDocumentView,IUnknown)
263 #undef INTERFACE
264
265 #ifdef COBJMACROS
266 /*** IUnknown methods ***/
267 #define IOleDocumentView_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
268 #define IOleDocumentView_AddRef(p)                  (p)->lpVtbl->AddRef(p)
269 #define IOleDocumentView_Release(p)                 (p)->lpVtbl->Release(p)
270 /*** IOleDocumentView methods ***/
271 #define IOleDocumentView_SetInPlaceSite(p,a)        (p)->lpVtbl->SetInPlaceSite(p,a)
272 #define IOleDocumentView_GetInPlaceSite(p,a)        (p)->lpVtbl->GetInPlaceSite(p,a)
273 #define IOleDocumentView_GetDocument(p,a)           (p)->lpVtbl->GetDocument(p,a)
274 #define IOleDocumentView_SetRect(p,a)               (p)->lpVtbl->SetRect(p,a)
275 #define IOleDocumentView_GetRect(p,a)               (p)->lpVtbl->GetRect(p,a)
276 #define IOleDocumentView_GetRectComplex(p,a,b,c,d)  (p)->lpVtbl->GetRectComplex(p,a,b,c,d)
277 #define IOleDocumentView_Show(p,a)                  (p)->lpVtbl->Show(p,a)
278 #define IOleDocumentView_UIActivate(p,a)            (p)->lpVtbl->UIActivate(p,a)
279 #define IOleDocumentView_Open(p)                    (p)->lpVtbl->Open(p)
280 #define IOleDocumentView_CloseView(p,a)             (p)->lpVtbl->CloseView(p,a)
281 #define IOleDocumentView_SaveViewState(p,a)         (p)->lpVtbl->SaveViewState(p,a)
282 #define IOleDocumentView_ApplyViewState(p,a)        (p)->lpVtbl->ApplyViewState(p,a)
283 #define IOleDocumentView_Clone(p,a,b)               (p)->lpVtbl->Clone(p,a,b)
284 #endif
285
286
287 /*****************************************************************************
288  * IOleDocumentSite interface
289  */
290 #define INTERFACE IEnumOleDocumentViews
291 #define IEnumOleDocumentViews_METHODS \
292         STDMETHOD(Next)(THIS_ ULONG cViews, IOleDocumentView **rgpView, ULONG *pcFetched) PURE; \
293         STDMETHOD(Skip)(THIS_ ULONG cViews) PURE; \
294         STDMETHOD(Reset)(THIS) PURE; \
295         STDMETHOD(Clone)(THIS_ IEnumOleDocumentViews **ppEnum) PURE;
296 #define IEnumOleDocumentViews_IMETHODS \
297         IUnknown_IMETHODS \
298         IEnumOleDocumentViews_METHODS
299 ICOM_DEFINE(IEnumOleDocumentViews,IUnknown)
300 #undef INTERFACE
301
302 #ifdef COBJMACROS
303 /*** IUnknown methods ***/
304 #define IEnumOleDocumentViews_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
305 #define IEnumOleDocumentViews_AddRef(p)               (p)->lpVtbl->AddRef(p)
306 #define IEnumOleDocumentViews_Release(p)              (p)->lpVtbl->Release(p)
307 /*** IEnumOleDocumentViews methods ***/
308 #define IEnumOleDocumentViews_Next(p,a,b,c)           (p)->lpVtbl->Next(p,a,b,c)
309 #define IEnumOleDocumentViews_Skip(p,a)               (p)->lpVtbl->Skip(p,a)
310 #define IEnumOleDocumentViews_Reset(p)                (p)->lpVtbl->Reset(p)
311 #define IEnumOleDocumentViews_Clone(p,a)              (p)->lpVtbl->Clone(p,a)
312 #endif
313
314
315 /*****************************************************************************
316  * IOleCommandTarget interface
317  */
318 #define INTERFACE IOleCommandTarget
319 #define IOleCommandTarget_METHODS \
320         STDMETHOD(QueryStatus)(THIS_ const GUID *pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText) PURE; \
321         STDMETHOD(Exec)(THIS_ const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) PURE;
322 #define IOleCommandTarget_IMETHODS \
323         IUnknown_IMETHODS \
324         IOleCommandTarget_METHODS
325 ICOM_DEFINE(IOleCommandTarget,IUnknown)
326 #undef INTERFACE
327
328 #ifdef COBJMACROS
329 /*** IUnknown methods ***/
330 #define IOleCommandTarget_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
331 #define IOleCommandTarget_AddRef(p)               (p)->lpVtbl->AddRef(p)
332 #define IOleCommandTarget_Release(p)              (p)->lpVtbl->Release(p)
333 /*** IOleCommandTarget methods ***/
334 #define IOleCommandTarget_QueryStatus(p,a,b,c,d)  (p)->lpVtbl->QueryStatus(p,a,b,c,d)
335 #define IOleCommandTarget_Exec(p,a,b,c,d,e)       (p)->lpVtbl->Exec(p,a,b,c,d,e)
336 #endif
337
338
339 /*****************************************************************************
340  * IContinueCallback interface
341  */
342 #define INTERFACE IContinueCallback
343 #define IContinueCallback_METHODS \
344         STDMETHOD(FContinue)(THIS) PURE; \
345         STDMETHOD(FContinuePrinting)(THIS_ LONG nCntPrinted, LONG nCurPage, WCHAR *pwszPrintStatus) PURE;
346 #define IContinueCallback_IMETHODS \
347         IUnknown_IMETHODS \
348         IContinueCallback_METHODS
349 ICOM_DEFINE(IContinueCallback,IUnknown)
350 #undef INTERFACE
351
352 #ifdef COBJMACROS
353 /*** IUnknown methods ***/
354 #define IContinueCallback_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
355 #define IContinueCallback_AddRef(p)               (p)->lpVtbl->AddRef(p)
356 #define IContinueCallback_Release(p)              (p)->lpVtbl->Release(p)
357 /*** IContinueCallback methods ***/
358 #define IContinueCallback_FContinue(p)               (p)->lpVtbl->FContinue(p)
359 #define IContinueCallback_FContinuePrinting(p,a,b,c) (p)->lpVtbl->FContinuePrinting(p,a,b,c)
360 #endif
361
362
363 /*****************************************************************************
364  * IPrint interface
365  */
366 #define INTERFACE IPrint
367 #define IPrint_METHODS \
368         STDMETHOD(SetInitialPageNum)(THIS_ LONG nFirstPage) PURE; \
369         STDMETHOD(GetPageInfo)(THIS_ LONG *pnFirstPage, LONG *pcPages) PURE; \
370         STDMETHOD(Print)(THIS_ DWORD grfFlags, DVTARGETDEVICE **pptd, PAGESET **ppPageSet, STGMEDIUM *pstgmOptions, IContinueCallback *pcallback, LONG nFirstPage, LONG *pcPagesPrinted, LONG *pnLastPage) PURE;
371 #define IPrint_IMETHODS \
372         IUnknown_IMETHODS \
373         IPrint_METHODS
374 ICOM_DEFINE(IPrint,IUnknown)
375 #undef INTERFACE
376
377 #ifdef COBJMACROS
378 /*** IUnknown methods ***/
379 #define IPrint_QueryInterface(p,a,b)   (p)->lpVtbl->QueryInterface(p,a,b)
380 #define IPrint_AddRef(p)               (p)->lpVtbl->AddRef(p)
381 #define IPrint_Release(p)              (p)->lpVtbl->Release(p)
382 /*** Iprint methods ***/
383 #define IPrint_SetInitialPageNum(p,a)  (p)->lpVtbl->SetInitialPageNum(p,a)
384 #define IPrint_GetPageInfo(p,a,b)      (p)->lpVtbl->GetPageInfo(p,a,b)
385 #define IPrint_Print(p,a,b,c,d,e,f,g)  (p)->lpVtbl->Print(p,a,b,c,d,e,f,g)
386 #endif
387
388
389 #define LPMSODOCUMENT                  LPOLEDOCUMENT
390 #define LPMSODOCUMENTSITE              LPOLEDOCUMENTSITE
391 #define LPMSOVIEW                      LPOLEDOCUMENTVIEW
392 #define LPENUMMSOVIEW                  LPENUMOLEDOCUMENTVIEWS
393 #define LPMSOCOMMANDTARGET             LPOLECOMMANDTARGET
394 #define IID_IMsoDocument               IID_IOleDocument
395 #define IID_IMsoDocumentSite           IID_IOleDocumentSite
396 #define IID_IMsoView                   IID_IOleDocumentView
397 #define IID_IEnumMsoView               IID_IEnumOleDocumentViews
398 #define IID_IMsoCommandTarget          IID_IOleCommandTarget
399
400
401 #endif /* __WINE_DOCOBJ_H */