Interfaces necessárias (COM)
A tabela abaixo lista as interfaces de contêiner de controle ActiveX e indica quais interfaces são opcionais e quais são obrigatórias e devem ser implementadas por contêineres de controle.
Interface | Necessário? | Observações |
---|---|---|
IOleClientSite |
Sim |
|
IAdviseSink |
Não |
Somente quando o contêiner deseja (a) notificações de alteração de dados (controles com IDataObject), (b) notificação de alteração de exibição (controles que não estão ativos e têm IViewObject ou IViewObject2) e (c) outras notificações de controles que atuam como objetos incorporados padrão. |
IOleInPlaceSite |
Sim |
|
IOleControlSite |
Sim |
|
IOleInPlaceFrame |
Sim |
|
IOleContainer |
Sim |
Ver nota 1 |
IDispatch para propriedades ambientais |
Sim |
Consulte a nota 2 e Propriedades ambientais para controles |
Controlar conjuntos de eventos |
Sim |
Ver nota 2 |
ISimpleFrameSite |
Não |
ISimpleFrameSite e suporte para quadros simples aninhados é opcional. |
IPropertyNotifySink |
Não |
Necessário apenas para contêineres que (a) têm sua própria interface do usuário de edição de propriedade, o que exigiria atualização sempre que um controle alterasse uma propriedade em si, ou (b) desejasse controlar [requestedit] alterações de propriedade e outros recursos de vinculação de dados. |
IErrorInfo |
Sim |
Obrigatório se o contêiner suportar interfaces duplas. Ver nota 2. |
IClassFactory2 |
Não |
O suporte é altamente recomendado. |
- IOleContainer é implementado no objeto de documento ou formulário (ou analógico apropriado) que contém os sites de contêiner. Os controles usam IOleContainer para navegar para outros controles no mesmo documento ou formulário.
- O suporte para interfaces duplas não é obrigatório, mas é altamente recomendado. Escrever contêineres de controle ActiveX para tirar proveito de interfaces duplas proporcionará um melhor desempenho com controles que oferecem suporte a interface dupla.
Os contêineres de controle ActiveX devem oferecer suporte a exceções de automação OLE. Se um contêiner de controle suportar interfaces duplas, ele deverá capturar exceções de automação por meio IErrorInfo.