Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Além da interface IUnknown, um controle ActiveX ou objeto COM expressa qualquer funcionalidade opcional que ele suporta através de interfaces adicionais. Isto quer dizer que nenhuma outra interface é necessária acima IUnknown. Para esse fim, a tabela a seguir lista as interfaces que um controle ActiveX pode suportar e o que significa dar suporte a essa interface.
Interface | Comentários/O que significa suportar a interface |
---|---|
IOleObject |
Se o controle requer comunicação com seu site cliente para qualquer coisa diferente de eventos (consulte IConnectionPointContainer), então IOleObject é uma necessidade. Ao implementar esta interface, o controlo também deve suportar a semântica dos seguintes métodos: SetHostNames, Close, EnumVerbs, Update, IsUpToDate, GetUserClassID, GetUserType, GetMiscStatuse os métodos Advise, Unadvisee EnumAdvise, que interagem com a implementação de IAdviseSink de um recipiente. Um controlo implementando IOleObject deve ser capaz de manipular IAdviseSink se o contentor fornecer um; um contentor pode não fornecer, caso em que um controlo garante, naturalmente, que não tenta chamar um sink inexistente. |
IOleInPlaceObject |
Expressa a capacidade do controlo para ser ativado no local e, possivelmente, ter a interface do utilizador ativada. Essa interface significa que o controle tem uma interface de usuário de algum tipo que pode ser ativada, e IOleInPlaceActiveObject também é suportada. Os métodos necessários são GetWindow, InPlaceDeactivate, UIDeactivate, SetObjectRectse ReactivateAndUndo. O suporte para esta interface requer suporte para IOleObject. |
IOleInPlaceActiveObject |
Um objeto capaz de funcionar in-loco que suporta IOleInPlaceObject também deve fornecer essa interface, embora o próprio controlo não implemente necessariamente a interface diretamente. |
IOleControl |
Expressa a capacidade e o desejo do controlo de lidar com (a) mnemónicos (GetControlInfo, métodos OnMnemonic), (b) propriedades ambientais (OnAmbientPropertyChange), e/ou (c) eventos que o controlo requer que o contentor trate (FreezeEvents). Observe que os mnemônicos são diferentes de aceleradores que são geridos através de IOleInPlaceActiveObject: os mnemônicos têm uma interface de utilizador associada e estão ativos mesmo quando o controlo não está ativo na interface de utilizador. O suporte de um controle para mnemônicos significa que o controle também sabe como usar o método de IOleControlSite::OnControlInfoChanged do contêiner. Como isso requer que o controlo conheça o site do contentor, o suporte para mnemónicos também significa suporte para IOleObject. Além disso, o conhecimento sobre mnemônica requer suporte no local e, portanto, IOleInPlaceObject. Se um controlo utiliza quaisquer propriedades de ambiente contedor, então também deve implementar esta interface para receber notificações de alterações, pois é necessário seguir a semântica das alterações. Como as propriedades de ambiente só estão disponíveis por meio do IDispatchdo site de contêiner, o suporte de propriedade de ambiente significa que o controle suporta IOleObject (para obter o site), além de ser capaz de gerar IDispatch::Invoke chamadas. O método FreezeEvents é necessário para controles que devem saber quando um contêiner não vai manipular um evento, essa é a única maneira de o controle conhecer essa condição. Se FreezeEvents só for necessário isoladamente, de modo que outros métodosIOleControlnão sejam implementados, IOleControl pode ficar sozinho sem IOleObject ou IOleInPlaceObject. |
IDataObject |
Indica que o controle pode fornecer pelo menos (a) renderizações gráficas do controle (CF_METAFILEPICT é o mínimo se o controle tiver quaisquer elementos visuais) e/ou (b) conjuntos de propriedades, se o controle tiver quaisquer propriedades para fornecer. Os métodos GetData, QueryGetData, EnumFormatEtc, DAdvise, DUnadvisee EnumDAdvise são necessários. O suporte para formatos gráficos diferentes de CF_METAFILEPICT é opcional. |
IViewObject2 |
Indica que o controle tem alguns visuais interessantes quando não está ativo no local. Se implementado, um controle deve suportar os métodos Draw, GetAdvise, SetAdvisee GetExtent. |
IDispatch |
Indica que o controle tem (a) métodos personalizados ou (b) propriedades personalizadas que estão disponíveis através de vinculação tardia através de IDispatch::Invoke. Isso também requer que o controle, por meio de outros métodos IDispatch, forneça informações de tipo. Um controlo pode suportar várias implementações de IDispatch de , em que apenas uma está associada a IID_IDispatch, as outras devem ter os seus próprios identificadores de dispinterface exclusivos. Um controle é incentivado a fornecer interfaces duplas para acesso personalizado a métodos e propriedades, mas isso é opcional se existirem métodos e propriedades. |
IConnectionPointContainer |
Indica que um controle suporta pelo menos uma interface de saída, como eventos ou notificações de alteração de propriedade. Todos os métodos dessa interface devem ser implementados se essa interface estiver disponível, incluindo EnumConnectionPoints que requer um objeto separado com IEnumConnectionPoints. Suporte para IConnectionPointContainer significa que o objeto também suporta um ou mais objetos relacionados com o IConnectionPoint que estão disponíveis através dos métodos de IConnectionPointContainer. Cada objeto de ponto de conexão em si deve implementar o completo IConnectionPoint interface, incluindo EnumConnections, que requer outro objeto enumerador com o IEnumConnections interface. |
IProvideClassInfo IProvideClassInfo2 |
Indica que o objeto pode fornecer suas próprias informações de tipo de coclasse diretamente por meio IProvideClassInfo::GetClassInfo. Se o controle suportar a variação posterior IProvideClassInfo2, ele também indica sua capacidade de fornecer sua fonte primária IID através IProvideClassInfo2::GetGUID. Todos os métodos desta interface devem ser implementados. |
ISpecifyPropertyPages |
Indica que o controle tem páginas de propriedades que ele pode exibir de modo que um contêiner pode coordenar as páginas de propriedades desse controle com as páginas de outro controle quando as páginas de propriedades devem ser mostradas para uma seleção de vários controles. Todos os métodos desta interface devem ser implementados quando o suporte existe. |
IPerPropertyBrowsing |
Indica a capacidade do controle de (a) fornecer uma cadeia de caracteres de exibição para uma propriedade, (b) fornecer cadeias de caracteres e valores predefinidos para suas propriedades e/ou (c) mapear uma propriedade dispID para uma página de propriedades específica. O suporte a esta interface implica que o suporte a propriedades através de IDispatch, conforme acima, é disponibilizado. Se (c) for suportado, isso também significa que as páginas de propriedades do objeto mapeadas através de IPerPropertyBrowsing::MapPropertyToPage elas próprias implementam IPropertyPage2 em oposição à interface básica IPropertyPage. |
IPersistStream IPersistStreamInit IPersistMemory IPersistStorage IPersistMoniker IPersistPropertyBag |
Consulte Interfaces de persistência. |
IOleCache IOleCache2 |
Indica suporte para armazenamento em cache de contentores de visuais de controlo. Um controle geralmente obtém suporte de cache por meio da função OLE CreateDataCache. Somente controles com conteúdo estático significativo devem optar por fazer isso (embora não seja necessário). Se um controle oferecer suporte a cache, ele deve simplesmente agregar o cache de dados e expor ambas as interfaces IOleCache e IOleCache2 a partir do cache de dados. Um controlo implementando IOleObject deve ser capaz de manipular IAdviseSink se o contentor fornecer um; um contentor não pode, caso em que um controlo garante, naturalmente, que não tenta chamar um sumidouro inexistente. |
IExternalConnection |
Indica que o controle suporta links externos para si mesmo; ou seja, o controle não está marcado com OLEMISC_CANTLINKINSIDE e suporta IOleObject::SetMoniker e IOleObject::GetMoniker. Um contêiner nunca consultará essa interface em si nem a chamará diretamente, pois as chamadas são geradas de dentro da camada remota do OLE. |
IRunnableObject |
Indica que o controlo diferencia entre estar carregado e estar em execução, tal como fazem alguns objetos em processo. |