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