Creating the Visual Designer

The visual designer negotiates the interaction between the ActiveX designer, the host, and the end user. It includes a visual user interface, which collects and saves information from the end user to create a run-time object.

The following table summarizes the functions of the visual designer. Not all of these capabilities must be provided by every designer.

Function

What you must do

Be an embedded object (required).

Implement IOleObject.

Provide a visual designer (required).

Implement IOleInPlaceObject and IOleInPlaceActiveObject.

Save and load persistent data (required).

Implement IPersist, and IPersistStream, IPersistStreamInit, or IPersistStorage.

Use services (optional).

Use IServiceProvider.

Handle events (required).

Implement IConnectionPointContainer and IConnectionPoint.

Support a property browsing mechanism (optional).

Implement IDispatch, IConnectionPointContainer, IConnectionPoint, IPropertyNotifySink, IPerPropertyBrowsing, IPropertyPage, IPropertyPage2, ISpecifyPropertyPages.

Use IPropertyPageSite.

Provide convenient navigation to and from code (optional).

Use SCodeNavigate.

Provide type information to the host (required).

Implement IProvideClassInfo or IProvideDynamicClassInfo.

Create a different run-time object (optional).

Implement IActiveDesigner.

Support programmability by add-in objects (optional).

Implement IActiveDesigner.

Support "Save As Text" (optional).

Implement IPersistPropertyBag.

Use ambient properties (optional).

Implement IOleControl.
Use IOleControlSite.