Added Standard Properties, Methods, Events, and Interfaces

The following table summarizes the added standard dispIDs described in this article.

Control Property Value
DISPID_READYSTATE (-525)
Control Methods Value
none
Control Events Value
DISPID_READYSTATECHANGE (-609)

 

The following table summarizes the new interfaces and other GUID values described in this article, as well as those that are described here—with the exception of category IDs described in a later section.

Symbol Value
IID_IBindHost FC4801A1-2BA9-11CF-A229-00AA003D7352
IID_IServiceProvider 6D5140C1-7436-11CE-8034-00AA006009FA
IID_IObjectWithSite FC4801A3-2BA9-11CF-A229-00AA003D7352
IID_IPersistMemory BD1AE5E0-A6AE-11CE-BD37-504200C10000
IID_IPersistPropertyBag 37D84F60-42CB-11CE-8135-00AA004BB851
IID_IPropertyBag 55272A00-42CB-11CE-8135-00AA004BB851
IID_IPersistPropertyBag2 22F55881-280B-11d0-A8A9-00A0C90C2004
IID_IPropertyBag2 22F55882-280B-11d0-A8A9-00A0C90C2004
IID_IErrorLog 3127CA40-446E-11CE-8135-00AA004BB851
GUID_PathProperty 0002DE80-0000-0000-C000-000000000046
GUID_HasPathProperties 0002DE81-0000-0000-C000-000000000046
SID_SBindHost FC4801A1-2BA9-11CF-A229-00AA003D7352 (same as IID_IBindHost)

 

IPersistMoniker and its IID is documented in URL Monikers.

Requirements for Internet-Aware Controls and Objects

If a control does not use any data paths for BLOB data, working well within Internet-aware containers mostly means that a control supports as many IPersist interfaces as is reasonable for it, giving the container and asynchronous monikers a great deal of flexibility in how they initialize the control in both persistent embedding and persistent linking cases.

Controls that support only one persistence interface must mark themselves as mandatory users of the appropriate category.

Controls with one or more data paths have these requirements:

  • Must support either IOleObject or IObjectWithSite as a siting mechanism.
  • Must mark data path properties in type information with the [bindable] attribute as well as the appropriate custom attribute using GUID_PathProperty.
  • Must mark the coclass entry in the control's type information with the custom attribute using GUID_HasPathProperties.
  • Must follow the rules of moniker creation and persistence, using the container's IBindHost interface as necessary and as it is available.
  • Must understand how to bind with an asynchronous moniker using a container-provided bind context from IBindHost if available and how to receive data through IBindStatusCallback.
  • Must prioritize initialization sequences and data retrieval to render and interact as soon as possible, returning E_PENDING from member functions as appropriate for the control's initialization state.
  • Should supply a ReadyState property, if applicable, and fire onreadystatechange events as needed.
  • Should support IPersistPropertyBag for supporting HTML PARAM

Requirements for Internet-Aware Containers/Clients/Controllers

Whereas much of a control's functionality is optional, with the exception of necessary support for data paths, a container generally wants to support as many features as possible. As guidelines, a container that wants to host Internet-aware controls at run time should meet these requirements:

  • Must expect and handle E_PENDING, especially from IViewObject2::Draw.
  • Must provide a site to a control through either IOleObject or IObjectWithSite mechanisms.
  • Must supply initialized bind contexts and name parsing through IBindHost.
  • Must support at least IPersistStreamInit as a control persistence mechanism.
  • Must support the HTML Extensions for COM Objects if the client is HTML-oriented.
  • Should manage relative creation/initialization priorities for each control in the document.
  • Should supply browsers for common data types required by data paths (authoring tools).
  • Should support as many IPersist interfaces as possible to allow maximum control flexibility.

This article also recommends that controls be OLE accessibility-aware for the benefit of users requiring accessibility services.