Partilhar via


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.
  1. 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.
  2. 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.

Contentores