||This article may be confusing or unclear to readers. (June 2012) (Learn how and when to remove this template message)|
ActiveX Document (also known as DocObject or DocObj) is a Microsoft technology that allows users to view and edit Microsoft Word, Excel, and PDF documents inside web browsers. It defines a set of Component Object Model coding contracts between hosting programs like Internet Explorer or Microsoft Office Binder  and hosted documents from programs like Microsoft Word, Microsoft Excel and Adobe Reader. This allows them to negotiate communications about commands like save and navigate, as well as merging user interface elements such as menu, to provide a unified user experience.
Initially designed for compound documents based on COM Structured Storage, the technology allows one single hosting program like Office Binder to contain unlimited type of documents. The server program that provides an ActiveX document can be an EXE or a DLL server.
There are a few code contracts that ActiveX documents and their container need to implement in order to communicate about their capabilities and requirements.
An ActiveX document server application needs to implement the following code contracts that are expected by an ActiveX document container that is going to host the document:
- IPersistStorage, if use compound files as the storage
- Standard OLE interfaces like IPersistFile, IOleObject, and IDataObject, for creating a document that supports object linking and embedding from file
- IOleInPlaceObject and IOleInPlaceActiveObject, for editing inline
- IOleDocument, IOleCommandTarget, and IPrint, for talking to document container, command routing, and printing
An ActiveX document container application needs to implement the following code contracts
- Provide storage for documents via IStorage
- Implement IOleClientSite and IAdviseSink, for standard object linking and embedding
- Implement IOleInPlaceSite and IOleInPlaceFrame, for editing inline
- Implement IOleDocumentSite, IOleCommandTarget, IPrint and IContinueCallback, for document hosting, command routing and printing
Microsoft has ActiveX Document support in its developer tools to help programmers in creating ActiveX Document applications.
In Visual C++, programmers can include Microsoft Foundation Classes's support for ActiveX Documents in the MFC project wizard. A programmer can choose to add ActiveX document server and/or container support to the new program by checking a checkbox during the project creation process.
- Definition of ActiveX Documents
- Microsoft readies DocObject; technology will allow document editing in Web browsers, InfoWorld, April 29, 1996, page 49
- Microsoft promises compound documents. (Win95 Suites Set to Clash) by Greenberg, Ilan, InfoWorld June 5, 1995 http://www.accessmylibrary.com/article-1G1-17053478/microsoft-promises-compound-documents.html
- Menus in Active Documents, Visual FoxPro 7.0 documentation, by Microsoft https://msdn.microsoft.com/en-us/library/aa903362(v=VS.71).aspx
- The Visual Programmer Puts ActiveX Document Objects Through Their Paces, by Joshua Trupin, Microsoft Systems Journal, June 1996, http://www.microsoft.com/msj/archive/S37B.aspx
- Active Document Containers, Visual Studio 2012 documentation, by Microsoft, https://msdn.microsoft.com/en-us/library/644x1yy6.aspx
- Compound Document Support, MFC Application Wizard, Visual Studio 2012 documentation, by Microsoft, https://msdn.microsoft.com/en-us/library/fa2f8zdk.aspx
- You can't go there today. (ActiveX application development; Microsoft's Visual Basic 5.0 and Visual C++ 5.0, Borland's Delphi 3.0) by Blumenthal, Holly, InfoWorld | May 19, 1997 http://www.accessmylibrary.com/article-1G1-19431766/you-cant-go-there.html
- Creating an Active Document, Visual Studio 7.0 documentation, by Microsoft https://msdn.microsoft.com/en-us/library/aa903396(v=vs.71).aspx