GetExtensibilityObject Method

Returns the Automation interface for the design-time control that should be exposed through the design-time tools Automation object model.

Visual Basic Syntax

Not needed in Visual Basic

Visual C++ Syntax

HRESULT GetExtensibilityObject(IDispatch **ppvObjOut);

Parameter

ppvObjOut

[out] Pointer to an IDispatch interface.

Return Values

The return value obtained from the returned HRESULT is one of the following:

Return Value Meaning
S_OK

Success

E_FAIL

The method failed for an unknown reason.

E_NOTIMPL

The run-time and design-time objects are the same, or the designer does not support programmatic manipulation.

E_OUTOFMEMORY

Not enough memory to complete the operation.

E_POINTER

The ppvObjOut parameter is not a valid pointer.


Remarks

If the ActiveX designer can be programmatically manipulated, its IDispatch interface is available in two ways. If the visual designer implements IActiveDesigner, the IDispatch interface is available through GetExtensibilityObject. If the visual designer does not implement IActiveDesigner, objects must call QueryInterface to get the IDispatch interface.

In Visual Basic 5.0, the extensibility object for the visual designer is available to add-ins (servers that extend the integrated development environment (IDE)) through the extensibility object of the IDE.

You may implement this method without implementing the other methods of the interface.

Visual C++ Example

The following example creates a new extensibility object and returns its address to the caller:

STDMETHODIMP CMyDesigner::GetExtensibilityObject(IDispatch **ppExtensibilityObject)
{
if (!ppExtensibilityObject) return E_POINTER;

*ppExtensibilityObject = new CMyAddInTopLevelAutomationObject;
return (*ppExtensibilityObject) ? S_OK : E_OUTOFMEMORY;
}