Change notification fixes.
[wine/hacks.git] / include / docobj.h
blobac856b38c3c4484bca1b41bd6ae57bf7ac1f4e3b
1 /*
2 * Copyright (C) 1999 Paul Quinn
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.
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.
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
19 #include "rpc.h"
20 #include "rpcndr.h"
21 #ifndef COM_NO_WINDOWS_H
22 #include "windows.h"
23 #include "ole2.h"
24 #endif
26 #ifndef __WINE_DOCOBJ_H
27 #define __WINE_DOCOBJ_H
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
38 /*****************************************************************************
39 * Declare the structures
41 typedef enum
43 OLECMDF_SUPPORTED = 0x1,
44 OLECMDF_ENABLED = 0x2,
45 OLECMDF_LATCHED = 0x4,
46 OLECMDF_NINCHED = 0x8
47 } OLECMDF;
49 typedef struct _tagOLECMD
51 ULONG cmdID;
52 DWORD cmdf;
53 } OLECMD;
55 typedef struct _tagOLECMDTEXT
57 DWORD cmdtextf;
58 ULONG cwActual;
59 ULONG cwBuf;
60 WCHAR rgwz[1];
61 } OLECMDTEXT;
63 typedef enum
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;
74 typedef struct tagPAGERANGE
76 LONG nFromPage;
77 LONG nToPage;
78 } PAGERANGE;
80 typedef struct tagPAGESET
82 ULONG cbStruct;
83 BOOL fOddPages;
84 BOOL fEvenPages;
85 ULONG cPageRange;
86 PAGERANGE rgPages[ 1 ];
87 } PAGESET;
89 typedef enum
91 OLECMDTEXTF_NONE = 0,
92 OLECMDTEXTF_NAME = 1,
93 OLECMDTEXTF_STATUS = 2
94 } OLECMDTEXTF;
96 typedef enum
98 OLECMDEXECOPT_DODEFAULT = 0,
99 OLECMDEXECOPT_PROMPTUSER = 1,
100 OLECMDEXECOPT_DONTPROMPTUSER = 2,
101 OLECMDEXECOPT_SHOWHELP = 3
102 } OLECMDEXECOPT;
104 typedef enum OLECMDID
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;
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)
168 /*****************************************************************************
169 * Predeclare the interfaces
171 DEFINE_GUID(IID_IOleDocument, 0xb722bcc5,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
172 typedef struct IOleDocument IOleDocument, *LPOLEDOCUMENT;
174 DEFINE_GUID(IID_IOleDocumentSite, 0xb722bcc7,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
175 typedef struct IOleDocumentSite IOleDocumentSite, *LPOLEDOCUMENTSITE;
177 DEFINE_GUID(IID_IOleDocumentView, 0xb722bcc6,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
178 typedef struct IOleDocumentView IOleDocumentView, *LPOLEDOCUMENTVIEW;
180 DEFINE_GUID(IID_IEnumOleDocumentViews, 0xb722bcc6,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
181 typedef struct IEnumOleDocumentViews IEnumOleDocumentViews, *LPENUMOLEDOCUMENTVIEWS;
183 DEFINE_GUID(IID_IOleCommandTarget, 0xb722bccb,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
184 typedef struct IOleCommandTarget IOleCommandTarget, *LPOLECOMMANDTARGET;
186 DEFINE_GUID(IID_IContinueCallback, 0xb722bcca,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
187 typedef struct IContinueCallback IContinueCallback, *LPCONTINUECALLBACK;
189 DEFINE_GUID(IID_IPrint, 0xb722bcc9,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
190 typedef struct IPrint IPrint, *LPPRINT;
193 /*****************************************************************************
194 * IOleDocument interface
196 #define INTERFACE IOleDocument
197 #define IOleDocument_METHODS \
198 IUnknown_METHODS \
199 STDMETHOD(CreateView)(THIS_ IOleInPlaceSite *pIPSite, IStream *pstm, DWORD dwReserved, IOleDocumentView **ppView) PURE; \
200 STDMETHOD(GetDocMiscStatus)(THIS_ DWORD *pdwStatus) PURE; \
201 STDMETHOD(EnumViews)(THIS_ IEnumOleDocumentViews **ppEnum, IOleDocumentView **ppView) PURE;
202 ICOM_DEFINE(IOleDocument,IUnknown)
203 #undef INTERFACE
205 #ifdef COBJMACROS
206 /*** IUnknown methods ***/
207 #define IOleDocument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
208 #define IOleDocument_AddRef(p) (p)->lpVtbl->AddRef(p)
209 #define IOleDocument_Release(p) (p)->lpVtbl->Release(p)
210 /*** IOleDocument methods ***/
211 #define IOleDocument_CreateView(p,a,b,c,d) (p)->lpVtbl->CreateView(p,a,b,c,d)
212 #define IOleDocument_GetDocMiscStatus(p,a) (p)->lpVtbl->GetDocMiscStatus(p,a)
213 #define IOleDocument_EnumViews(p,a,b) (p)->lpVtbl->EnumViews(p,a,b)
214 #endif
217 /*****************************************************************************
218 * IOleDocumentSite interface
220 #define INTERFACE IOleDocumentSite
221 #define IOleDocumentSite_METHODS \
222 IUnknown_METHODS \
223 STDMETHOD(ActivateMe)(THIS_ IOleDocumentView *pViewToActivate) PURE;
224 ICOM_DEFINE(IOleDocumentSite,IUnknown)
225 #undef INTERFACE
227 #ifdef COBJMACROS
228 /*** IUnknown methods ***/
229 #define IOleDocumentSite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
230 #define IOleDocumentSite_AddRef(p) (p)->lpVtbl->AddRef(p)
231 #define IOleDocumentSite_Release(p) (p)->lpVtbl->Release(p)
232 /*** IOleDocumentSite methods ***/
233 #define IOleDocumentSite_ActivateMe(p,a) (p)->lpVtbl->ActivateMe(p,a)
234 #endif
237 /*****************************************************************************
238 * IOleDocumentSite interface
240 #define INTERFACE IOleDocumentView
241 #define IOleDocumentView_METHODS \
242 IUnknown_METHODS \
243 STDMETHOD(SetInPlaceSite)(THIS_ IOleInPlaceSite *pIPSite) PURE; \
244 STDMETHOD(GetInPlaceSite)(THIS_ IOleInPlaceSite **ppIPSite) PURE; \
245 STDMETHOD(GetDocument)(THIS_ IUnknown **ppunk) PURE; \
246 STDMETHOD(SetRect)(THIS_ LPRECT prcView) PURE; \
247 STDMETHOD(GetRect)(THIS_ LPRECT prcView) PURE; \
248 STDMETHOD(SetRectComplex)(THIS_ LPRECT prcView, LPRECT prcHScroll, LPRECT prcVScroll, LPRECT prcSizeBox) PURE; \
249 STDMETHOD(Show)(THIS_ BOOL fShow) PURE; \
250 STDMETHOD(UIActivate)(THIS_ BOOL fUIActivate) PURE; \
251 STDMETHOD(Open)(THIS) PURE; \
252 STDMETHOD(CloseView)(THIS_ DWORD dwReserved) PURE; \
253 STDMETHOD(SaveViewState)(THIS_ LPSTREAM pstm) PURE; \
254 STDMETHOD(ApplyViewState)(THIS_ LPSTREAM pstm) PURE; \
255 STDMETHOD(Clone)(THIS_ IOleInPlaceSite *pIPSiteNew, IOleDocumentView **ppViewNew) PURE;
256 ICOM_DEFINE(IOleDocumentView,IUnknown)
257 #undef INTERFACE
259 #ifdef COBJMACROS
260 /*** IUnknown methods ***/
261 #define IOleDocumentView_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
262 #define IOleDocumentView_AddRef(p) (p)->lpVtbl->AddRef(p)
263 #define IOleDocumentView_Release(p) (p)->lpVtbl->Release(p)
264 /*** IOleDocumentView methods ***/
265 #define IOleDocumentView_SetInPlaceSite(p,a) (p)->lpVtbl->SetInPlaceSite(p,a)
266 #define IOleDocumentView_GetInPlaceSite(p,a) (p)->lpVtbl->GetInPlaceSite(p,a)
267 #define IOleDocumentView_GetDocument(p,a) (p)->lpVtbl->GetDocument(p,a)
268 #define IOleDocumentView_SetRect(p,a) (p)->lpVtbl->SetRect(p,a)
269 #define IOleDocumentView_GetRect(p,a) (p)->lpVtbl->GetRect(p,a)
270 #define IOleDocumentView_GetRectComplex(p,a,b,c,d) (p)->lpVtbl->GetRectComplex(p,a,b,c,d)
271 #define IOleDocumentView_Show(p,a) (p)->lpVtbl->Show(p,a)
272 #define IOleDocumentView_UIActivate(p,a) (p)->lpVtbl->UIActivate(p,a)
273 #define IOleDocumentView_Open(p) (p)->lpVtbl->Open(p)
274 #define IOleDocumentView_CloseView(p,a) (p)->lpVtbl->CloseView(p,a)
275 #define IOleDocumentView_SaveViewState(p,a) (p)->lpVtbl->SaveViewState(p,a)
276 #define IOleDocumentView_ApplyViewState(p,a) (p)->lpVtbl->ApplyViewState(p,a)
277 #define IOleDocumentView_Clone(p,a,b) (p)->lpVtbl->Clone(p,a,b)
278 #endif
281 /*****************************************************************************
282 * IOleDocumentSite interface
284 #define INTERFACE IEnumOleDocumentViews
285 #define IEnumOleDocumentViews_METHODS \
286 IUnknown_METHODS \
287 STDMETHOD(Next)(THIS_ ULONG cViews, IOleDocumentView **rgpView, ULONG *pcFetched) PURE; \
288 STDMETHOD(Skip)(THIS_ ULONG cViews) PURE; \
289 STDMETHOD(Reset)(THIS) PURE; \
290 STDMETHOD(Clone)(THIS_ IEnumOleDocumentViews **ppEnum) PURE;
291 ICOM_DEFINE(IEnumOleDocumentViews,IUnknown)
292 #undef INTERFACE
294 #ifdef COBJMACROS
295 /*** IUnknown methods ***/
296 #define IEnumOleDocumentViews_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
297 #define IEnumOleDocumentViews_AddRef(p) (p)->lpVtbl->AddRef(p)
298 #define IEnumOleDocumentViews_Release(p) (p)->lpVtbl->Release(p)
299 /*** IEnumOleDocumentViews methods ***/
300 #define IEnumOleDocumentViews_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
301 #define IEnumOleDocumentViews_Skip(p,a) (p)->lpVtbl->Skip(p,a)
302 #define IEnumOleDocumentViews_Reset(p) (p)->lpVtbl->Reset(p)
303 #define IEnumOleDocumentViews_Clone(p,a) (p)->lpVtbl->Clone(p,a)
304 #endif
307 /*****************************************************************************
308 * IOleCommandTarget interface
310 #define INTERFACE IOleCommandTarget
311 #define IOleCommandTarget_METHODS \
312 IUnknown_METHODS \
313 STDMETHOD(QueryStatus)(THIS_ const GUID *pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText) PURE; \
314 STDMETHOD(Exec)(THIS_ const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) PURE;
315 ICOM_DEFINE(IOleCommandTarget,IUnknown)
316 #undef INTERFACE
318 #ifdef COBJMACROS
319 /*** IUnknown methods ***/
320 #define IOleCommandTarget_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
321 #define IOleCommandTarget_AddRef(p) (p)->lpVtbl->AddRef(p)
322 #define IOleCommandTarget_Release(p) (p)->lpVtbl->Release(p)
323 /*** IOleCommandTarget methods ***/
324 #define IOleCommandTarget_QueryStatus(p,a,b,c,d) (p)->lpVtbl->QueryStatus(p,a,b,c,d)
325 #define IOleCommandTarget_Exec(p,a,b,c,d,e) (p)->lpVtbl->Exec(p,a,b,c,d,e)
326 #endif
329 /*****************************************************************************
330 * IContinueCallback interface
332 #define INTERFACE IContinueCallback
333 #define IContinueCallback_METHODS \
334 IUnknown_METHODS \
335 STDMETHOD(FContinue)(THIS) PURE; \
336 STDMETHOD(FContinuePrinting)(THIS_ LONG nCntPrinted, LONG nCurPage, WCHAR *pwszPrintStatus) PURE;
337 ICOM_DEFINE(IContinueCallback,IUnknown)
338 #undef INTERFACE
340 #ifdef COBJMACROS
341 /*** IUnknown methods ***/
342 #define IContinueCallback_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
343 #define IContinueCallback_AddRef(p) (p)->lpVtbl->AddRef(p)
344 #define IContinueCallback_Release(p) (p)->lpVtbl->Release(p)
345 /*** IContinueCallback methods ***/
346 #define IContinueCallback_FContinue(p) (p)->lpVtbl->FContinue(p)
347 #define IContinueCallback_FContinuePrinting(p,a,b,c) (p)->lpVtbl->FContinuePrinting(p,a,b,c)
348 #endif
351 /*****************************************************************************
352 * IPrint interface
354 #define INTERFACE IPrint
355 #define IPrint_METHODS \
356 IUnknown_METHODS \
357 STDMETHOD(SetInitialPageNum)(THIS_ LONG nFirstPage) PURE; \
358 STDMETHOD(GetPageInfo)(THIS_ LONG *pnFirstPage, LONG *pcPages) PURE; \
359 STDMETHOD(Print)(THIS_ DWORD grfFlags, DVTARGETDEVICE **pptd, PAGESET **ppPageSet, STGMEDIUM *pstgmOptions, IContinueCallback *pcallback, LONG nFirstPage, LONG *pcPagesPrinted, LONG *pnLastPage) PURE;
360 ICOM_DEFINE(IPrint,IUnknown)
361 #undef INTERFACE
363 #ifdef COBJMACROS
364 /*** IUnknown methods ***/
365 #define IPrint_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
366 #define IPrint_AddRef(p) (p)->lpVtbl->AddRef(p)
367 #define IPrint_Release(p) (p)->lpVtbl->Release(p)
368 /*** Iprint methods ***/
369 #define IPrint_SetInitialPageNum(p,a) (p)->lpVtbl->SetInitialPageNum(p,a)
370 #define IPrint_GetPageInfo(p,a,b) (p)->lpVtbl->GetPageInfo(p,a,b)
371 #define IPrint_Print(p,a,b,c,d,e,f,g) (p)->lpVtbl->Print(p,a,b,c,d,e,f,g)
372 #endif
375 #define LPMSODOCUMENT LPOLEDOCUMENT
376 #define LPMSODOCUMENTSITE LPOLEDOCUMENTSITE
377 #define LPMSOVIEW LPOLEDOCUMENTVIEW
378 #define LPENUMMSOVIEW LPENUMOLEDOCUMENTVIEWS
379 #define LPMSOCOMMANDTARGET LPOLECOMMANDTARGET
380 #define IID_IMsoDocument IID_IOleDocument
381 #define IID_IMsoDocumentSite IID_IOleDocumentSite
382 #define IID_IMsoView IID_IOleDocumentView
383 #define IID_IEnumMsoView IID_IEnumOleDocumentViews
384 #define IID_IMsoCommandTarget IID_IOleCommandTarget
387 #endif /* __WINE_DOCOBJ_H */