Optional
Methods
An OLE
component can implement an interface without implementing all the semantics of
every method in the interface, instead returning E_NOTIMPL or S_OK as
appropriate. The following table describes those methods that an ActiveX
Control container is not required to implement (i.e. the control container can
return E_NOTIMPL).
The table
below describes optional methods; note that the method must still exist, but
can simply return E_NOTIMPL instead of implementing real semantics. Note that
any method from a mandatory interface that is not listed below must be
considered mandatory and may not return E_NOTIMPL.
Method |
Comments |
IOleClientSite |
|
SaveObject |
Necessary
for persistence to be successfully supported. |
GetMoniker |
Necessary
only if the container supports linking to controls within its own form or
document. |
|
|
IOleInPlaceSite |
|
ContextSensitiveHelp |
Optional |
Scroll |
May return
S_FALSE with no action. |
DiscardUndoState |
Can return
S_OK with no action. |
DeactivateAndUndo |
Deactivation
is mandatory; Undo is optional. |
|
|
IOleControlSite |
|
GetExtendedControl |
Necessary
for containers that support extended controls. |
ShowPropertyFrame |
Necessary
for containers that wish to include their own property pages to handle
extended control properties in addition to those provided by a control. |
TranslateAccelerator |
May return
S_FALSE with no action. |
LockInPlaceActive |
Optional |
|
|
IDispatch (Ambient properties) |
|
GetTypeInfoCount |
Necessary
for containers that support non-standard ambient properties. |
GetTypeInfo |
Necessary
for containers that support non-standard ambient properties. |
GetIDsOfNames |
Necessary
for containers that support non-standard ambient properties. |
|
|
IDispatch (Event sink) |
|
GetTypeInfoCount |
The control
knows its own type information, so it has no need to call this. |
GetTypeInfo |
The control
knows its own type information, so it has no need to call this. |
GetIDsOfNames |
The control
knows its own type information, so it has no need to call this. |
|
|
IOleInPlaceFrame |
|
ContextSensitiveHelp |
|
GetBorder |
Necessary
for containers with toolbar UI (which is optional) |
RequestBorderSpace |
Necessary
for containers with toolbar UI (which is optional) |
SetBorderSpace |
Necessary
for containers with toolbar UI (which is optional) |
InsertMenus |
Necessary
for containers with menu UI (which is optional) |
SetMenu |
Necessary
for containers with menu UI (which is optional) |
RemoveMenus |
Necessary
for containers with menu UI (which is optional) |
SetStatusText |
Necessary
only for containers that have a status line |
EnableModeless |
Optional |
TranslateAccelerator |
Optional |
|
|
IOleContainer |
|
ParseDisplayName |
Only if
linking to controls or other embeddings in the container is supported, as
this is necessary for moniker binding. |
LockContainer |
As for ParseDisplayName |
EnumObjects |
Returns all
ActiveX Controls through an enumerator with IEnumUnknown, but not
necessarily all objects (since there s no guarantee that all objects are
ActiveX Controls; some may be regular Windows controls). |