oleaut32: Introduce a new helper function, TLB_FreeCustData, for freeing custom data.
[wine] / include / docobj.idl
1 /*
2  * Copyright (C) 1999 Paul Quinn
3  * Copyright (C) 2003 Alexandre Julliard
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19
20 import "ocidl.idl";
21 import "objidl.idl";
22 import "oleidl.idl";
23 import "oaidl.idl";
24 import "servprov.idl";
25
26
27 interface IOleDocumentView;
28 interface IEnumOleDocumentViews;
29
30
31 /*****************************************************************************
32  * IOleDocument interface
33  */
34 [
35     object,
36     uuid(b722bcc5-4e68-101b-a2bc-00aa00404770),
37     pointer_default(unique)
38 ]
39 interface IOleDocument : IUnknown
40 {
41     typedef [unique] IOleDocument *LPOLEDOCUMENT;
42
43     typedef enum
44     {
45         DOCMISC_CANCREATEMULTIPLEVIEWS = 1,
46         DOCMISC_SUPPORTCOMPLEXRECTANGLES = 2,
47         DOCMISC_CANTOPENEDIT = 4,
48         DOCMISC_NOFILESUPPORT = 8
49     } DOCMISC;
50
51     HRESULT CreateView(
52         [in, unique] IOleInPlaceSite *pIPSite,
53         [in, unique] IStream *pstm,
54         [in] DWORD dwReserved,
55         [out] IOleDocumentView **ppView);
56
57     HRESULT GetDocMiscStatus(
58         [out] DWORD *pdwStatus);
59
60     HRESULT EnumViews(
61         [out] IEnumOleDocumentViews **ppEnum,
62         [out] IOleDocumentView **ppView);
63 }
64
65
66 /*****************************************************************************
67  * IOleDocumentSite interface
68  */
69 [
70     object,
71     uuid(b722bcc7-4e68-101b-a2bc-00aa00404770),
72     pointer_default(unique)
73 ]
74 interface IOleDocumentSite : IUnknown
75 {
76     typedef [unique] IOleDocumentSite *LPOLEDOCUMENTSITE;
77
78     HRESULT ActivateMe( [in] IOleDocumentView *pViewToActivate );
79 }
80
81
82 /*****************************************************************************
83  * IOleDocumentView interface
84  */
85 [
86     object,
87     uuid(b722bcc6-4e68-101b-a2bc-00aa00404770),
88     pointer_default(unique)
89 ]
90 interface IOleDocumentView : IUnknown
91 {
92     typedef [unique] IOleDocumentView *LPOLEDOCUMENTVIEW;
93
94     HRESULT SetInPlaceSite( [in, unique] IOleInPlaceSite *pIPSite );
95
96     HRESULT GetInPlaceSite( [out] IOleInPlaceSite **ppIPSite );
97
98     HRESULT GetDocument( [out] IUnknown **ppunk );
99
100     HRESULT SetRect( [in] LPRECT prcView );
101
102     HRESULT GetRect( [out] LPRECT prcView );
103
104     HRESULT SetRectComplex(
105         [in, unique] LPRECT prcView,
106         [in, unique] LPRECT prcHScroll,
107         [in, unique] LPRECT prcVScroll,
108         [in, unique] LPRECT prcSizeBox);
109
110     HRESULT Show( [in] BOOL fShow );
111
112     HRESULT UIActivate( [in] BOOL fUIActivate );
113
114     HRESULT Open();
115
116     HRESULT CloseView( [in] DWORD dwReserved );
117
118     HRESULT SaveViewState( [in] LPSTREAM pstm );
119
120     HRESULT ApplyViewState( [in] LPSTREAM pstm );
121
122     HRESULT Clone(
123         [in] IOleInPlaceSite *pIPSiteNew,
124         [out] IOleDocumentView **ppViewNew);
125 }
126
127
128 /*****************************************************************************
129  * IEnumOleDocumentViews interface
130  */
131 [
132     object,
133     uuid(b722bcc8-4e68-101b-a2bc-00aa00404770),
134     pointer_default(unique)
135 ]
136 interface IEnumOleDocumentViews : IUnknown
137 {
138     typedef [unique] IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS;
139
140     [local]
141     HRESULT Next(
142         [in] ULONG cViews,
143         [out] IOleDocumentView **rgpView,
144         [out] ULONG *pcFetched);
145
146     [call_as(Next)]
147     HRESULT RemoteNext(
148         [in] ULONG cViews,
149         [out, size_is(cViews), length_is(*pcFetched)] IOleDocumentView **rgpView,
150         [out] ULONG *pcFetched);
151
152     HRESULT Skip( [in] ULONG cViews );
153
154     HRESULT Reset();
155
156     HRESULT Clone( [out] IEnumOleDocumentViews **ppEnum );
157 }
158
159
160 /*****************************************************************************
161  * IOleCommandTarget interface
162  */
163 [
164     object,
165     uuid(b722bccb-4e68-101b-a2bc-00aa00404770),
166     pointer_default(unique)
167 ]
168 interface IOleCommandTarget : IUnknown
169 {
170     typedef [unique] IOleCommandTarget *LPOLECOMMANDTARGET;
171
172     typedef enum OLECMDF
173     {
174         OLECMDF_SUPPORTED = 0x1,
175         OLECMDF_ENABLED = 0x2,
176         OLECMDF_LATCHED = 0x4,
177         OLECMDF_NINCHED = 0x8,
178         OLECMDF_INVISIBLE = 0x10,
179         OLECMDF_DEFHIDEONCTXTMENU = 0x20
180     } OLECMDF;
181
182     typedef struct _tagOLECMD
183     {
184         ULONG cmdID;
185         DWORD cmdf;
186     } OLECMD;
187
188     typedef struct _tagOLECMDTEXT
189     {
190         DWORD cmdtextf;
191         ULONG cwActual;
192         ULONG cwBuf;
193         [size_is(cwBuf)] WCHAR rgwz[];
194     } OLECMDTEXT;
195
196     typedef enum OLECMDTEXTF
197     {
198         OLECMDTEXTF_NONE = 0,
199         OLECMDTEXTF_NAME = 1,
200         OLECMDTEXTF_STATUS = 2
201     } OLECMDTEXTF;
202
203     typedef enum OLECMDEXECOPT
204     {
205         OLECMDEXECOPT_DODEFAULT = 0,
206         OLECMDEXECOPT_PROMPTUSER = 1,
207         OLECMDEXECOPT_DONTPROMPTUSER = 2,
208         OLECMDEXECOPT_SHOWHELP = 3
209     } OLECMDEXECOPT;
210
211     typedef enum OLECMDID
212     {
213         OLECMDID_OPEN = 1,
214         OLECMDID_NEW = 2,
215         OLECMDID_SAVE = 3,
216         OLECMDID_SAVEAS = 4,
217         OLECMDID_SAVECOPYAS = 5,
218         OLECMDID_PRINT = 6,
219         OLECMDID_PRINTPREVIEW = 7,
220         OLECMDID_PAGESETUP = 8,
221         OLECMDID_SPELL = 9,
222         OLECMDID_PROPERTIES = 10,
223         OLECMDID_CUT = 11,
224         OLECMDID_COPY = 12,
225         OLECMDID_PASTE = 13,
226         OLECMDID_PASTESPECIAL = 14,
227         OLECMDID_UNDO = 15,
228         OLECMDID_REDO = 16,
229         OLECMDID_SELECTALL = 17,
230         OLECMDID_CLEARSELECTION = 18,
231         OLECMDID_ZOOM = 19,
232         OLECMDID_GETZOOMRANGE = 20,
233         OLECMDID_UPDATECOMMANDS = 21,
234         OLECMDID_REFRESH = 22,
235         OLECMDID_STOP = 23,
236         OLECMDID_HIDETOOLBARS = 24,
237         OLECMDID_SETPROGRESSMAX = 25,
238         OLECMDID_SETPROGRESSPOS = 26,
239         OLECMDID_SETPROGRESSTEXT = 27,
240         OLECMDID_SETTITLE = 28,
241         OLECMDID_SETDOWNLOADSTATE = 29,
242         OLECMDID_STOPDOWNLOAD = 30,
243         OLECMDID_ONTOOLBARACTIVATED = 31,
244         OLECMDID_FIND = 32,
245         OLECMDID_DELETE = 33,
246         OLECMDID_HTTPEQUIV = 34,
247         OLECMDID_HTTPEQUIV_DONE = 35,
248         OLECMDID_ENABLE_INTERACTION = 36,
249         OLECMDID_ONUNLOAD = 37,
250         OLECMDID_PROPERTYBAG2 = 38,
251         OLECMDID_PREREFRESH = 39,
252         /* iexplorer uses ... 44 */
253         OLECMDID_SHOWSCRIPTERROR = 40,
254         OLECMDID_SHOWMESSAGE = 41,
255         OLECMDID_SHOWFIND = 42,
256         OLECMDID_SHOWPAGESETUP = 43,
257         OLECMDID_SHOWPRINT = 44,
258         OLECMDID_CLOSE = 45,
259         OLECMDID_ALLOWUILESSSAVEAS = 46,
260         OLECMDID_DONTDOWNLOADCSS = 47,
261         OLECMDID_UPDATEPAGESTATUS = 48,
262         OLECMDID_PRINT2 = 49,
263         OLECMDID_PRINTPREVIEW2 = 50,
264         OLECMDID_SETPRINTTEMPLATE = 51,
265         OLECMDID_GETPRINTTEMPLATE = 52
266     } OLECMDID;
267
268     HRESULT QueryStatus(
269         [in, unique] const GUID *pguidCmdGroup,
270         [in] ULONG cCmds,
271         [in, out, size_is(cCmds)] OLECMD prgCmds[],
272         [in, out, unique] OLECMDTEXT *pCmdText);
273
274     HRESULT Exec(
275         [in, unique] const GUID *pguidCmdGroup,
276         [in] DWORD nCmdID,
277         [in] DWORD nCmdexecopt,
278         [in, unique] VARIANT *pvaIn,
279         [in, out, unique] VARIANT *pvaOut);
280 }
281
282
283 /*****************************************************************************
284  * IContinueCallback interface
285  */
286 [
287    object,
288    uuid(b722bcca-4e68-101b-a2bc-00aa00404770),
289    pointer_default(unique)
290 ]
291 interface IContinueCallback : IUnknown
292 {
293     typedef [unique] IContinueCallback *LPCONTINUECALLBACK;
294
295     HRESULT FContinue();
296
297     HRESULT FContinuePrinting(
298         [in] LONG nCntPrinted,
299         [in] LONG nCurPage,
300         [in, unique] WCHAR *pwszPrintStatus);
301 }
302
303
304 /*****************************************************************************
305  * IPrint interface
306  */
307 [
308    object,
309    uuid(b722bcc9-4e68-101b-a2bc-00aa00404770),
310    pointer_default(unique)
311 ]
312 interface IPrint : IUnknown
313 {
314     typedef [unique] IPrint *LPPRINT;
315
316     typedef enum
317     {
318         PRINTFLAG_MAYBOTHERUSER = 1,
319         PRINTFLAG_PROMPTUSER  = 2,
320         PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
321         PRINTFLAG_RECOMPOSETODEVICE = 8,
322         PRINTFLAG_DONTACTUALLYPRINT = 16,
323         PRINTFLAG_FORCEPROPERTIES = 32,
324         PRINTFLAG_PRINTTOFILE = 64
325     } PRINTFLAG;
326
327     typedef struct tagPAGERANGE
328     {
329         LONG nFromPage;
330         LONG nToPage;
331     } PAGERANGE;
332
333     typedef struct tagPAGESET
334     {
335         ULONG cbStruct;
336         BOOL fOddPages;
337         BOOL fEvenPages;
338         ULONG cPageRange;
339         [size_is(cPageRange)] PAGERANGE rgPages[];
340     } PAGESET;
341
342     HRESULT SetInitialPageNum(
343         [in] LONG nFirstPage);
344
345     HRESULT GetPageInfo(
346         [out] LONG *pnFirstPage,
347         [out] LONG *pcPages);
348
349     [local]
350     HRESULT Print(
351         [in] DWORD grfFlags,
352         [in, out] DVTARGETDEVICE **pptd,
353         [in, out] PAGESET **ppPageSet,
354         [in, out, unique] STGMEDIUM *pstgmOptions,
355         [in] IContinueCallback *pcallback,
356         [in]  LONG nFirstPage,
357         [out] LONG *pcPagesPrinted,
358         [out] LONG *pnLastPage);
359
360     [call_as(Print)]
361     HRESULT RemotePrint(
362         [in] DWORD grfFlags,
363         [in, out] DVTARGETDEVICE **pptd,
364         [in, out] PAGESET **pppageset,
365         [in, out, unique] RemSTGMEDIUM *pstgmOptions,
366         [in] IContinueCallback *pcallback,
367         [in]  LONG nFirstPage,
368         [out] LONG *pcPagesPrinted,
369         [out] LONG *pnLastPage);
370 }
371
372
373 cpp_quote("#define OLECMDERR_E_FIRST            (OLE_E_LAST+1)")
374 cpp_quote("#define OLECMDERR_E_NOTSUPPORTED     (OLECMDERR_E_FIRST)")
375 cpp_quote("#define OLECMDERR_E_DISABLED         (OLECMDERR_E_FIRST+1)")
376 cpp_quote("#define OLECMDERR_E_NOHELP           (OLECMDERR_E_FIRST+2)")
377 cpp_quote("#define OLECMDERR_E_CANCELED         (OLECMDERR_E_FIRST+3)")
378 cpp_quote("#define OLECMDERR_E_UNKNOWNGROUP     (OLECMDERR_E_FIRST+4)")
379
380 cpp_quote("#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST")
381 cpp_quote("#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED")
382 cpp_quote("#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED")
383 cpp_quote("#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP")
384 cpp_quote("#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED")
385 cpp_quote("#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP")
386
387 cpp_quote("#define LPMSODOCUMENT                  LPOLEDOCUMENT")
388 cpp_quote("#define LPMSODOCUMENTSITE              LPOLEDOCUMENTSITE")
389 cpp_quote("#define LPMSOVIEW                      LPOLEDOCUMENTVIEW")
390 cpp_quote("#define LPENUMMSOVIEW                  LPENUMOLEDOCUMENTVIEWS")
391 cpp_quote("#define LPMSOCOMMANDTARGET             LPOLECOMMANDTARGET")
392 cpp_quote("#define IID_IMsoDocument               IID_IOleDocument")
393 cpp_quote("#define IID_IMsoDocumentSite           IID_IOleDocumentSite")
394 cpp_quote("#define IID_IMsoView                   IID_IOleDocumentView")
395 cpp_quote("#define IID_IEnumMsoView               IID_IEnumOleDocumentViews")
396 cpp_quote("#define IID_IMsoCommandTarget          IID_IOleCommandTarget")