wineoss.drv: Add mmdevapi driver.
[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_PAGEACTIONBLOCKED = 55,
267         OLECMDID_PAGEACTIONUIQUERY = 56,
268         OLECMDID_FOCUSVIEWCONTROLS = 57,
269         OLECMDID_FOCUSVIEWCONTROLSQUERY = 58,
270         OLECMDID_SHOWPAGEACTIONMENU = 59,
271         OLECMDID_ADDTRAVELENTRY = 60,
272         OLECMDID_UPDATETRAVELENTRY = 61,
273         OLECMDID_UPDATEBACKFORWARDSTATE = 62,
274         OLECMDID_OPTICAL_ZOOM = 63,
275         OLECMDID_OPTICAL_GETZOOMRANGE = 64,
276         OLECMDID_WINDOWSTATECHANGED = 65,
277         OLECMDID_ACTIVEXINSTALLSCOPE = 66,
278         OLECMDID_UPDATETRAVELENTRY_DATARECOVERY = 67
279     } OLECMDID;
280
281     HRESULT QueryStatus(
282         [in, unique] const GUID *pguidCmdGroup,
283         [in] ULONG cCmds,
284         [in, out, size_is(cCmds)] OLECMD prgCmds[],
285         [in, out, unique] OLECMDTEXT *pCmdText);
286
287     HRESULT Exec(
288         [in, unique] const GUID *pguidCmdGroup,
289         [in] DWORD nCmdID,
290         [in] DWORD nCmdexecopt,
291         [in, unique] VARIANT *pvaIn,
292         [in, out, unique] VARIANT *pvaOut);
293 }
294
295
296 /*****************************************************************************
297  * IContinueCallback interface
298  */
299 [
300    object,
301    uuid(b722bcca-4e68-101b-a2bc-00aa00404770),
302    pointer_default(unique)
303 ]
304 interface IContinueCallback : IUnknown
305 {
306     typedef [unique] IContinueCallback *LPCONTINUECALLBACK;
307
308     HRESULT FContinue();
309
310     HRESULT FContinuePrinting(
311         [in] LONG nCntPrinted,
312         [in] LONG nCurPage,
313         [in, unique] WCHAR *pwszPrintStatus);
314 }
315
316
317 /*****************************************************************************
318  * IPrint interface
319  */
320 [
321    object,
322    uuid(b722bcc9-4e68-101b-a2bc-00aa00404770),
323    pointer_default(unique)
324 ]
325 interface IPrint : IUnknown
326 {
327     typedef [unique] IPrint *LPPRINT;
328
329     typedef enum
330     {
331         PRINTFLAG_MAYBOTHERUSER = 1,
332         PRINTFLAG_PROMPTUSER  = 2,
333         PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
334         PRINTFLAG_RECOMPOSETODEVICE = 8,
335         PRINTFLAG_DONTACTUALLYPRINT = 16,
336         PRINTFLAG_FORCEPROPERTIES = 32,
337         PRINTFLAG_PRINTTOFILE = 64
338     } PRINTFLAG;
339
340     typedef struct tagPAGERANGE
341     {
342         LONG nFromPage;
343         LONG nToPage;
344     } PAGERANGE;
345
346     typedef struct tagPAGESET
347     {
348         ULONG cbStruct;
349         BOOL fOddPages;
350         BOOL fEvenPages;
351         ULONG cPageRange;
352         [size_is(cPageRange)] PAGERANGE rgPages[];
353     } PAGESET;
354
355     HRESULT SetInitialPageNum(
356         [in] LONG nFirstPage);
357
358     HRESULT GetPageInfo(
359         [out] LONG *pnFirstPage,
360         [out] LONG *pcPages);
361
362     [local]
363     HRESULT Print(
364         [in] DWORD grfFlags,
365         [in, out] DVTARGETDEVICE **pptd,
366         [in, out] PAGESET **ppPageSet,
367         [in, out, unique] STGMEDIUM *pstgmOptions,
368         [in] IContinueCallback *pcallback,
369         [in]  LONG nFirstPage,
370         [out] LONG *pcPagesPrinted,
371         [out] LONG *pnLastPage);
372
373     [call_as(Print)]
374     HRESULT RemotePrint(
375         [in] DWORD grfFlags,
376         [in, out] DVTARGETDEVICE **pptd,
377         [in, out] PAGESET **pppageset,
378         [in, out, unique] RemSTGMEDIUM *pstgmOptions,
379         [in] IContinueCallback *pcallback,
380         [in]  LONG nFirstPage,
381         [out] LONG *pcPagesPrinted,
382         [out] LONG *pnLastPage);
383 }
384
385
386 cpp_quote("#define OLECMDERR_E_FIRST            (OLE_E_LAST+1)")
387 cpp_quote("#define OLECMDERR_E_NOTSUPPORTED     (OLECMDERR_E_FIRST)")
388 cpp_quote("#define OLECMDERR_E_DISABLED         (OLECMDERR_E_FIRST+1)")
389 cpp_quote("#define OLECMDERR_E_NOHELP           (OLECMDERR_E_FIRST+2)")
390 cpp_quote("#define OLECMDERR_E_CANCELED         (OLECMDERR_E_FIRST+3)")
391 cpp_quote("#define OLECMDERR_E_UNKNOWNGROUP     (OLECMDERR_E_FIRST+4)")
392
393 cpp_quote("#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST")
394 cpp_quote("#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED")
395 cpp_quote("#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED")
396 cpp_quote("#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP")
397 cpp_quote("#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED")
398 cpp_quote("#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP")
399
400 cpp_quote("#define LPMSODOCUMENT                  LPOLEDOCUMENT")
401 cpp_quote("#define LPMSODOCUMENTSITE              LPOLEDOCUMENTSITE")
402 cpp_quote("#define LPMSOVIEW                      LPOLEDOCUMENTVIEW")
403 cpp_quote("#define LPENUMMSOVIEW                  LPENUMOLEDOCUMENTVIEWS")
404 cpp_quote("#define LPMSOCOMMANDTARGET             LPOLECOMMANDTARGET")
405 cpp_quote("#define IID_IMsoDocument               IID_IOleDocument")
406 cpp_quote("#define IID_IMsoDocumentSite           IID_IOleDocumentSite")
407 cpp_quote("#define IID_IMsoView                   IID_IOleDocumentView")
408 cpp_quote("#define IID_IEnumMsoView               IID_IEnumOleDocumentViews")
409 cpp_quote("#define IID_IMsoCommandTarget          IID_IOleCommandTarget")