atributo oleautomation

O atributo oleautomation indica que uma interface é compatível com Automação.

[ 
    oleautomation, 
    uuid(string-uuid)
    [ , interface-attribute-list] 
] 
interface interface-name : base-interface
{
    ...
}

Parâmetros

string-uuid

Especifica uma cadeia UUID gerada pela utilitária Uuidgen.

interface-attribute-list

Especifica outros atributos que se aplicam à interface como um todo.

Nome da interface

Especifica o nome da interface.

interface base

Especifica o nome de uma interface de Automação da qual esta interface derivada herda funções membros, códigos de estado e atributos da interface. Todas as interfaces de Automação derivam do IUnknown ou IDispatch.

Observações

Os parâmetros e tipos de retorno especificados para os membros de uma interface [oleautomation] devem ser compatíveis com Automação, conforme listado na tabela seguinte.

Tipo Descrição
boolean Itens de dados que podem ter valor VARIANT_TRUE ou VARIANT_FALSE. O tamanho corresponde ao VARIANT_BOOL.
char não assinado Item de dados não assinados de 8 bits.
duplo Número de ponto flutuante IEEE de 64 bits.
float Número de ponto flutuante IEEE de 32 bits.
int Inteiro com signo, cujo tamanho depende do sistema. Em plataformas de 32 bits, o MIDL trata o int como um inteiro assinado de 32 bits.
Longo Inteiro assinado de 32 bits.
curto Inteiro assinado de 16 bits.
BSTR Cadeia com prefixo de comprimento, conforme descrito no tópico de Automação BSTR.
MOEDA Número fixo de ponto flutuante de 8 bytes.
DATE Número fracionário de 64 bits, ponto flutuante, desde 30 de dezembro de 1899.
SCODE Para sistemas de 16 bits – tipo de erro incorporado que corresponde a VT_ERROR.
Typedef enummyenum Inteiro com signo, cujo tamanho depende do sistema.
Interface IDispatch * Apontador para a interface IDispatch (VT_DISPATCH).
Interface IUnknown * Apontador para uma interface que não deriva do IDispatch (VT_UNKNOWN). (Qualquer interface OLE pode ser representada pela sua interface IUnknown .)
DisinterfaceNome do Tipo * Apontador para uma interface derivada do IDispatch (VT_DISPATCH).
Nome de Tipo Coclasse * Apontar para um nome de coclasse (VT_UNKNOWN).
[oleautomation] interfaceNome do tipo * Apontador para uma interface que deriva de IUnknown.
SAFEARRAY (NomeTipo) TypeName é qualquer um dos tipos acima. Variedade destes tipos.
Nome do Tipo * TypeName é qualquer um dos tipos acima. Aponta para um tipo.
Decimal Inteiro binário sem sinal de 96 bits, escalado por uma potência variável de 10. Um tipo de dado decimal que fornece um tamanho e uma escala para um número (como coordenadas).

 

Um parâmetro é compatível com Automação se o seu tipo for compatível com Automação, um apontador para um tipo compatível com Automação, ou um SAFEARRAY de um tipo compatível com Automação.

Um tipo de retorno é compatível com Automação se o seu tipo for um HRESULT, SCODE ou void. No entanto, o MIDL exige que os métodos de interface retornem HRESULT ou SCODE. O retorno do void gera um erro do compilador.

Um membro é compatível com Automação se o seu tipo de retorno e todos os seus parâmetros forem compatíveis com Automação.

Uma interface é compatível com Automação se for derivada de IDispatch ou IUnknown, tiver o atributo [oleautomation ] e todas as suas entradas VTBL forem compatíveis com Automação. Para plataformas de 32 bits, a convenção de chamada para todos os métodos na interface deve ser STDCALL. Para sistemas de 16 bits, todos os métodos devem seguir a convenção de chamada CDECL.

Cada disinterface é implicitamente compatível com Automação. Por isso, não deve usar o atributo [oleautomation] na disinterface.

O atributo [oleautomation] não está disponível quando compila usando o compilador MIDL /osf switch.

Bandeiras

TYPEFLAG_FOLEAUTOMATION

Exemplos

library Hello
{
    importlib("stdole32.tlb");
    [
        uuid(12345678-1234-1234-1234-123456789ABC),
        helpstring("Application object for the Hello application."),
        oleautomation,
        dual
    ]
    interface IHello : IDispatch
    {
        // Interface definition statements.
    }

    // Other library definition statements.
}

Consulte também

Ficheiro de Definição de Interface (IDL)

Gerando uma biblioteca de tipos com MIDL

Exemplo de ficheiro ODL

Sintaxe de ficheiros ODL

/osf

UUID