Compartilhar 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 Uso
IOleClientSite
Site
Os controles 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), RequestNewObjectLayout e GetContainer (se a comunicação com outros controles for desejada). O método GetMoniker só é usado quando o controle pode ser vinculado externamente, ou seja, o controle não é marcado com OLEMISC_CANTLINKINSIDE.
IOleInPlaceSite
Site
Os controles que têm uma ativação in-loco e, possivelmente, um estado ativo da interface do usuário chamarão os métodos IOleInPlaceSite (geralmente todos eles, com exceção de ContextSensitiveHelp) como parte do protocolo de ativação OLE in-loco padrão.
IAdviseSink
Site
O controle chama OnDataChange se o controle oferece suporte a IDataObject, OnViewChange se o controle oferece suporte a IViewObject2 e OnClose, OnSave e OnRename se o controle oferece suporte a IOleObject.
IOleControlSite
Site
Se houver suporte, o controle chamará OnControlInfoChanged quando os mnemônicos forem alterados, LockInPlaceActive e TransformCoords se os eventos forem acionados (o último método só será usado se as coordenadas forem passadas como argumentos de evento), OnFocus e TranslateAccelerator se o controle tiver um estado ativo da interface do usuário e GetExtendedControl se o controle quiser examinar as propriedades de controle estendido (de propriedade do contêiner).
IDispatch (propriedades do ambiente)
Site
Usado para acessar propriedades ambientais.
IPropertyNotifySink
Varia
Um controle deve gerar OnChanged e OnRequestEdit para quaisquer propriedades de controle marcadas como [bindable] e [request], respectivamente.
Outras interfaces de coletor de eventos
Varia
Um controle que tenha interfaces de saída diferentes de IPropertyNotifySink receberá outros ponteiros de interface do IID correto para as implementações IConnectionPoint::Advise do controle (que geralmente são encontradas em subobjetos do controle). Um controle sempre sabe como chamar suas próprias interfaces de evento porque o controle define essas interfaces.
IOleInPlaceFrame
Frame
Usado quando um controle tem um estado ativo da interface do usuário in-loco que requer ferramentas de nível de quadro ou itens de menu.
IOleInPlaceUIWindow
Documento
Usado somente quando um controle tem um estado ativo de interface do usuário in-loco que requer ferramentas de interface do usuário em nível de documento ou de painel. Isso é incomum.

Controles