Partilhar via


Usando a funcionalidade do contêiner

As seções anteriores descreveram alguns dos suportes necessários do lado do chamador que um controle ActiveX deve ter para acessar determinados recursos de seu contêiner. A tabela a seguir descreve o uso de interfaces do lado do contêiner por um controle e quando esse uso ocorreria.

Interface Objeto de contêiner Utilização
IOleClientSite
Sítio
Os controlos que implementam IOleObject chamam os métodos IOleClientSite como parte do protocolo de incorporação OLE padrão, especificamente os métodos SaveObject, ShowObject, OnShowWindow (somente se um estado de ativação de janela separada for suportado), RequestNewObjectLayoute GetContainer (se a comunicação com outros controlos for desejada). O GetMoniker método só é usado quando o controle pode ser vinculado externamente, ou seja, o controle não está marcado com OLEMISC_CANTLINKINSIDE.
IOleInPlaceSite
Sítio
Os controlos que possuem uma ativação no local e, possivelmente, um estado ativo da interface do utilizador, chamarão os métodos IOleInPlaceSite (geralmente todos eles, com exceção de ContextSensitiveHelp) como parte do protocolo padrão de ativação no local OLE.
IAdviseSink
Sítio
O controlo chama OnDataChange se o controlo suportar IDataObject, OnViewChange se o controlo suportar IViewObject2, e chama OnClose, OnSave, e OnRename se o controlo suportar IOleObject.
IOleControlSite
Sítio
Se suportado, o controlo chama OnControlInfoChanged quando os mnemónicos mudam, LockInPlaceActive e TransformCoords se os eventos forem disparados (o último método só é utilizado se as coordenadas forem passadas como argumentos de eventos), OnFocus e TranslateAccelerator se o controlo estiver num estado ativo da interface do utilizador, e GetExtendedControl se o controlo quiser examinar as propriedades de controlo estendidas (pertencentes ao contêiner).
IDispatch (propriedades ambientais)
Sítio
Usado para acessar propriedades ambientais.
IPropertyNotifySink
Varia
Um controle deve gerar OnChanged e OnRequestEdit para todas as propriedades de controle marcadas como [vinculável] e [request], respectivamente.
Outras interfaces de coletor de eventos
Varia
Um controlo que tenha interfaces de saída diferentes de IPropertyNotifySink receberá ponteiros de outras interfaces com o IID correto para as implementações de IConnectionPoint::Advise (que geralmente são encontrados em sub-objetos do controlo). Um controle sempre sabe como chamar suas próprias interfaces de evento porque o controle define essas interfaces.
IOleInPlaceFrame
Moldura
Usado quando um controlo possui um estado ativo da interface do utilizador integrado que requer ferramentas a nível de estrutura ou itens de menu.
IOleInPlaceUIWindow
Documento
Usado somente quando um controle tem um estado ativo da interface do usuário integrada que requer ferramentas de interface no nível do documento ou do painel. Isto é raro.

Controles