In-Place Activation

If your editor view hosts ActiveX or other active controls, you must implement your editor view either as an ActiveX control or as an active document data object using the in-place activation model.

Support for Menus, Toolbars, and Commands

Visual Studio allows your editor view to use the menus and toolbars of the IDE. These extensions are referred to as OLE in-place components. For more information, see the IOleInPlaceComponent and IOleInPlaceComponentUIManager.

If you implement an ActiveX control, you can host other embedded objects. If you implement a document data object, the window frame constrains your ability to use ActiveX controls.

Note

The IOleDocument and IOleDocumentView interfaces allow for a separation of data and view. However, Visual Studio does not support this functionality, and these interfaces are used only to represent the document view object.

Editors that use the SOleComponentUIManager service can provide menu, toolbar, and command integration by calling the methods of the IOleInPlaceComponentUIManager interface implemented by the SOleComponentUIManager service. Editors can also offer other Visual Studio functionality, such as selection tracking and undo management. For more information, see Creating Custom Editors and Designers.

Objects and Interfaces Used

The objects that are used to create in-place activation are shown in the following illustration.

In-place Activation Editor
In-place activation editor

Note

Of the objects in this drawing, only the CYourEditorFactory object is required to create a standard editor. If you are creating a custom editor, you are not required to implement IVsPersistDocData2 because your editor will likely have its own private persistence mechanism. For more information, see Creating Custom Editors and Designers.

All interfaces that are implemented to create an in-place activation editor are shown on the single CYourEditorDocument object, but this configuration only supports a single view of document data. For more information about supporting multiple views of your document data, see Supporting Multiple Document Views.

Interface Type of object Use
IOleInPlaceComponent View Enables in-place VSPackage objects to operate as fully integrated components of the IDE by using the SOleComponentUIManager service. This service integrates the menus, toolbars, and commands of the object into the IDE and issues notifications of state changes.
IOleObject View Principal means by which an embedded object provides basic functionality to its container and communicates with it.
IOleInPlaceActiveObject View Manages the activation and deactivation of in-place objects, and determines how much of the in-place object should be visible.
IOleInPlaceObject View Provides a direct channel of communication between an in-place object, the associated application's outermost frame window, and the document window in the application that contains the embedded object.
IOleDocument View Implements an ActiveX object. Note that the methods of IOleDocument and T:Microsoft.VisualStudio.OLE.Interop.IOleDocumentView that separate document data and view are not used in the IDE .
IOleCommandTarget View/Data Enables the document data object or the document view object or both to participate in command handling.
IVsStatusbarUser View Enables status bar updates.
IVsToolboxUser View Enables adding items to the Toolbox.
IVsFileChangeEvents Data Sends notification of changes to the edited file. (This interface is optional.)
IPersistFileFormat Data Used to enable the Save As feature for a file type.
IVsPersistDocData Data Enables persistence for the document. For read-only files, call SetDocDataReadOnly to provide the "lock" icon that indicates read-only files.
IVsDocDataFileChangeControl Data Determines whether changes to document data should be ignored.