Converted docobj.h to IDL.

diff --git a/include/docobj.idl b/include/docobj.idl
new file mode 100644
index 0000000..f313992
--- /dev/null
+++ b/include/docobj.idl
@@ -0,0 +1,396 @@
+/*
+ * Copyright (C) 1999 Paul Quinn
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+import "ocidl.idl";
+import "objidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+import "servprov.idl";
+
+
+interface IOleDocumentView;
+interface IEnumOleDocumentViews;
+
+
+/*****************************************************************************
+ * IOleDocument interface
+ */
+[
+    object,
+    uuid(b722bcc5-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IOleDocument : IUnknown
+{
+    typedef [unique] IOleDocument *LPOLEDOCUMENT;
+
+    typedef enum
+    {
+        DOCMISC_CANCREATEMULTIPLEVIEWS = 1,
+        DOCMISC_SUPPORTCOMPLEXRECTANGLES = 2,
+        DOCMISC_CANTOPENEDIT = 4,
+        DOCMISC_NOFILESUPPORT = 8
+    } DOCMISC;
+
+    HRESULT CreateView(
+        [in, unique] IOleInPlaceSite *pIPSite,
+        [in, unique] IStream *pstm,
+        [in] DWORD dwReserved,
+        [out] IOleDocumentView **ppView);
+
+    HRESULT GetDocMiscStatus(
+        [out] DWORD *pdwStatus);
+
+    HRESULT EnumViews(
+        [out] IEnumOleDocumentViews **ppEnum,
+        [out] IOleDocumentView **ppView);
+}
+
+
+/*****************************************************************************
+ * IOleDocumentSite interface
+ */
+[
+    object,
+    uuid(b722bcc7-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IOleDocumentSite : IUnknown
+{
+    typedef [unique] IOleDocumentSite *LPOLEDOCUMENTSITE;
+
+    HRESULT ActivateMe( [in] IOleDocumentView *pViewToActivate );
+}
+
+
+/*****************************************************************************
+ * IOleDocumentView interface
+ */
+[
+    object,
+    uuid(b722bcc6-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IOleDocumentView : IUnknown
+{
+    typedef [unique] IOleDocumentView *LPOLEDOCUMENTVIEW;
+
+    HRESULT SetInPlaceSite( [in, unique] IOleInPlaceSite *pIPSite );
+
+    HRESULT GetInPlaceSite( [out] IOleInPlaceSite **ppIPSite );
+
+    HRESULT GetDocument( [out] IUnknown **ppunk );
+
+    HRESULT SetRect( [in] LPRECT prcView );
+
+    HRESULT GetRect( [out] LPRECT prcView );
+
+    HRESULT SetRectComplex(
+        [in, unique] LPRECT prcView,
+        [in, unique] LPRECT prcHScroll,
+        [in, unique] LPRECT prcVScroll,
+        [in, unique] LPRECT prcSizeBox);
+
+    HRESULT Show( [in] BOOL fShow );
+
+    HRESULT UIActivate( [in] BOOL fUIActivate );
+
+    HRESULT Open();
+
+    HRESULT CloseView( [in] DWORD dwReserved );
+
+    HRESULT SaveViewState( [in] LPSTREAM pstm );
+
+    HRESULT ApplyViewState( [in] LPSTREAM pstm );
+
+    HRESULT Clone(
+        [in] IOleInPlaceSite *pIPSiteNew,
+        [out] IOleDocumentView **ppViewNew);
+}
+
+
+/*****************************************************************************
+ * IEnumOleDocumentViews interface
+ */
+[
+    object,
+    uuid(b722bcc8-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IEnumOleDocumentViews : IUnknown
+{
+    typedef [unique] IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS;
+
+    [local]
+    HRESULT Next(
+        [in] ULONG cViews,
+        [out] IOleDocumentView **rgpView,
+        [out] ULONG *pcFetched);
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in] ULONG cViews,
+        [out, size_is(cViews), length_is(*pcFetched)] IOleDocumentView **rgpView,
+        [out] ULONG *pcFetched);
+
+    HRESULT Skip( [in] ULONG cViews );
+
+    HRESULT Reset();
+
+    HRESULT Clone( [out] IEnumOleDocumentViews **ppEnum );
+}
+
+
+/*****************************************************************************
+ * IOleCommandTarget interface
+ */
+[
+    object,
+    uuid(b722bccb-4e68-101b-a2bc-00aa00404770),
+    pointer_default(unique)
+]
+interface IOleCommandTarget : IUnknown
+{
+    typedef [unique] IOleCommandTarget *LPOLECOMMANDTARGET;
+
+    typedef enum
+    {
+        OLECMDF_SUPPORTED = 0x1,
+        OLECMDF_ENABLED = 0x2,
+        OLECMDF_LATCHED = 0x4,
+        OLECMDF_NINCHED = 0x8,
+        OLECMDF_INVISIBLE = 0x10,
+        OLECMDF_DEFHIDEONCTXTMENU = 0x20
+    } OLECMDF;
+
+    typedef struct _tagOLECMD
+    {
+        ULONG cmdID;
+        DWORD cmdf;
+    } OLECMD;
+
+    typedef struct _tagOLECMDTEXT
+    {
+        DWORD cmdtextf;
+        ULONG cwActual;
+        ULONG cwBuf;
+        [size_is(cwBuf)] WCHAR rgwz[];
+    } OLECMDTEXT;
+
+    typedef enum
+    {
+        OLECMDTEXTF_NONE = 0,
+        OLECMDTEXTF_NAME = 1,
+        OLECMDTEXTF_STATUS = 2
+    } OLECMDTEXTF;
+
+    typedef enum
+    {
+        OLECMDEXECOPT_DODEFAULT = 0,
+        OLECMDEXECOPT_PROMPTUSER = 1,
+        OLECMDEXECOPT_DONTPROMPTUSER = 2,
+        OLECMDEXECOPT_SHOWHELP = 3
+    } OLECMDEXECOPT;
+
+    typedef enum OLECMDID
+    {
+        OLECMDID_OPEN = 1,
+        OLECMDID_NEW = 2,
+        OLECMDID_SAVE = 3,
+        OLECMDID_SAVEAS = 4,
+        OLECMDID_SAVECOPYAS = 5,
+        OLECMDID_PRINT = 6,
+        OLECMDID_PRINTPREVIEW = 7,
+        OLECMDID_PAGESETUP = 8,
+        OLECMDID_SPELL = 9,
+        OLECMDID_PROPERTIES = 10,
+        OLECMDID_CUT = 11,
+        OLECMDID_COPY = 12,
+        OLECMDID_PASTE = 13,
+        OLECMDID_PASTESPECIAL = 14,
+        OLECMDID_UNDO = 15,
+        OLECMDID_REDO = 16,
+        OLECMDID_SELECTALL = 17,
+        OLECMDID_CLEARSELECTION = 18,
+        OLECMDID_ZOOM = 19,
+        OLECMDID_GETZOOMRANGE = 20,
+        OLECMDID_UPDATECOMMANDS = 21,
+        OLECMDID_REFRESH = 22,
+        OLECMDID_STOP = 23,
+        OLECMDID_HIDETOOLBARS = 24,
+        OLECMDID_SETPROGRESSMAX = 25,
+        OLECMDID_SETPROGRESSPOS = 26,
+        OLECMDID_SETPROGRESSTEXT = 27,
+        OLECMDID_SETTITLE = 28,
+        OLECMDID_SETDOWNLOADSTATE = 29,
+        OLECMDID_STOPDOWNLOAD = 30,
+        OLECMDID_ONTOOLBARACTIVATED = 31,
+        OLECMDID_FIND = 32,
+        OLECMDID_DELETE = 33,
+        OLECMDID_HTTPEQUIV = 34,
+        OLECMDID_HTTPEQUIV_DONE = 35,
+        OLECMDID_ENABLE_INTERACTION = 36,
+        OLECMDID_ONUNLOAD = 37,
+        OLECMDID_PROPERTYBAG2 = 38,
+        OLECMDID_PREREFRESH = 39,
+        /* iexplorer uses ... 44 */
+        OLECMDID_SHOWSCRIPTERROR = 40,
+        OLECMDID_SHOWMESSAGE = 41,
+        OLECMDID_SHOWFIND = 42,
+        OLECMDID_SHOWPAGESETUP = 43,
+        OLECMDID_SHOWPRINT = 44,
+        OLECMDID_CLOSE = 45,
+        OLECMDID_ALLOWUILESSSAVEAS = 46,
+        OLECMDID_DONTDOWNLOADCSS = 47,
+        OLECMDID_UPDATEPAGESTATUS = 48,
+        OLECMDID_PRINT2 = 49,
+        OLECMDID_PRINTPREVIEW2 = 50,
+        OLECMDID_SETPRINTTEMPLATE = 51,
+        OLECMDID_GETPRINTTEMPLATE = 52
+    } OLECMDID;
+
+    HRESULT QueryStatus(
+        [in, unique] const GUID *pguidCmdGroup,
+        [in] ULONG cCmds,
+        [in, out, size_is(cCmds)] OLECMD prgCmds[],
+        [in, out, unique] OLECMDTEXT *pCmdText);
+
+    HRESULT Exec(
+        [in, unique] const GUID *pguidCmdGroup,
+        [in] DWORD nCmdID,
+        [in] DWORD nCmdexecopt,
+        [in, unique] VARIANT *pvaIn,
+        [in, out, unique] VARIANT *pvaOut);
+}
+
+
+/*****************************************************************************
+ * IContinueCallback interface
+ */
+[
+   object,
+   uuid(b722bcca-4e68-101b-a2bc-00aa00404770),
+   pointer_default(unique)
+]
+interface IContinueCallback : IUnknown
+{
+    typedef [unique] IContinueCallback *LPCONTINUECALLBACK;
+
+    HRESULT FContinue();
+
+    HRESULT FContinuePrinting(
+        [in] LONG nCntPrinted,
+        [in] LONG nCurPage,
+        [in, unique] WCHAR *pwszPrintStatus);
+}
+
+
+/*****************************************************************************
+ * IPrint interface
+ */
+[
+   object,
+   uuid(b722bcc9-4e68-101b-a2bc-00aa00404770),
+   pointer_default(unique)
+]
+interface IPrint : IUnknown
+{
+    typedef [unique] IPrint *LPPRINT;
+
+    typedef enum
+    {
+        PRINTFLAG_MAYBOTHERUSER = 1,
+        PRINTFLAG_PROMPTUSER  = 2,
+        PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
+        PRINTFLAG_RECOMPOSETODEVICE = 8,
+        PRINTFLAG_DONTACTUALLYPRINT = 16,
+        PRINTFLAG_FORCEPROPERTIES = 32,
+        PRINTFLAG_PRINTTOFILE = 64
+    } PRINTFLAG;
+
+    typedef struct tagPAGERANGE
+    {
+        LONG nFromPage;
+        LONG nToPage;
+    } PAGERANGE;
+
+    typedef struct tagPAGESET
+    {
+        ULONG cbStruct;
+        BOOL fOddPages;
+        BOOL fEvenPages;
+        ULONG cPageRange;
+        [size_is(cPageRange)] PAGERANGE rgPages[];
+    } PAGESET;
+
+    HRESULT SetInitialPageNum(
+        [in] LONG nFirstPage);
+
+    HRESULT GetPageInfo(
+        [out] LONG *pnFirstPage,
+        [out] LONG *pcPages);
+
+    [local]
+    HRESULT Print(
+        [in] DWORD grfFlags,
+        [in, out] DVTARGETDEVICE **pptd,
+        [in, out] PAGESET **ppPageSet,
+        [in, out, unique] STGMEDIUM *pstgmOptions,
+        [in] IContinueCallback *pcallback,
+        [in]  LONG nFirstPage,
+        [out] LONG *pcPagesPrinted,
+        [out] LONG *pnLastPage);
+
+    [call_as(Print)]
+    HRESULT RemotePrint(
+        [in] DWORD grfFlags,
+        [in, out] DVTARGETDEVICE **pptd,
+        [in, out] PAGESET **pppageset,
+        [in, out, unique] RemSTGMEDIUM *pstgmOptions,
+        [in] IContinueCallback *pcallback,
+        [in]  LONG nFirstPage,
+        [out] LONG *pcPagesPrinted,
+        [out] LONG *pnLastPage);
+}
+
+
+cpp_quote("#define OLECMDERR_E_FIRST            (OLE_E_LAST+1)")
+cpp_quote("#define OLECMDERR_E_NOTSUPPORTED     (OLECMDERR_E_FIRST)")
+cpp_quote("#define OLECMDERR_E_DISABLED         (OLECMDERR_E_FIRST+1)")
+cpp_quote("#define OLECMDERR_E_NOHELP           (OLECMDERR_E_FIRST+2)")
+cpp_quote("#define OLECMDERR_E_CANCELED         (OLECMDERR_E_FIRST+3)")
+cpp_quote("#define OLECMDERR_E_UNKNOWNGROUP     (OLECMDERR_E_FIRST+4)")
+
+cpp_quote("#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST")
+cpp_quote("#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED")
+cpp_quote("#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED")
+cpp_quote("#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP")
+cpp_quote("#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED")
+cpp_quote("#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP")
+
+cpp_quote("#define LPMSODOCUMENT                  LPOLEDOCUMENT")
+cpp_quote("#define LPMSODOCUMENTSITE              LPOLEDOCUMENTSITE")
+cpp_quote("#define LPMSOVIEW                      LPOLEDOCUMENTVIEW")
+cpp_quote("#define LPENUMMSOVIEW                  LPENUMOLEDOCUMENTVIEWS")
+cpp_quote("#define LPMSOCOMMANDTARGET             LPOLECOMMANDTARGET")
+cpp_quote("#define IID_IMsoDocument               IID_IOleDocument")
+cpp_quote("#define IID_IMsoDocumentSite           IID_IOleDocumentSite")
+cpp_quote("#define IID_IMsoView                   IID_IOleDocumentView")
+cpp_quote("#define IID_IEnumMsoView               IID_IEnumOleDocumentViews")
+cpp_quote("#define IID_IMsoCommandTarget          IID_IOleCommandTarget")