atributo oleautomation

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

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

Parâmetros

string-uuid

Especifica uma cadeia de caracteres UUID gerada pelo utilitário Uuidgen.

interface-attribute-list

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

interface-name

Especifica o nome da interface.

interface base

Especifica o nome de uma interface de Automação da qual essa interface derivada herda funções membro, códigos status e atributos de interface. Todas as interfaces de Automação são derivadas de IUnknown ou IDispatch.

Comentários

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

Type Descrição
booleano Item de dados que pode ter o valor VARIANT_TRUE ou VARIANT_FALSE. O tamanho corresponde a VARIANT_BOOL.
unsigned char Item de dados sem sinal de 8 bits.
double Número de ponto flutuante IEEE de 64 bits.
float Número de ponto flutuante IEEE de 32 bits.
int Inteiro com sinal, cujo tamanho depende do sistema. Em plataformas de 32 bits, MIDL trata int como um inteiro com sinal de 32 bits.
longo Inteiro com sinal de 32 bits.
short Inteiro com sinal de 16 bits.
BSTR Cadeia de caracteres com prefixo de comprimento, conforme descrito no tópico de Automação BSTR.
CURRENCY Número de ponto flutuante fixo de 8 bytes.
DATE Número fracionário de ponto flutuante de 64 bits de dias desde 30 de dezembro de 1899.
SCODE Para sistemas de 16 bits– tipo de erro interno que corresponde a VT_ERROR.
Enumeração Typedef  myenum Inteiro com sinal, cujo tamanho depende do sistema.
Interface IDispatch * Ponteiro para a interface IDispatch (VT_DISPATCH).
Interface IUnknown * Ponteiro para uma interface que não deriva de IDispatch (VT_UNKNOWN). (Qualquer interface OLE pode ser representada por sua interface IUnknown .)
Dispinterface  Typename * Ponteiro para uma interface derivada de IDispatch (VT_DISPATCH).
Coclass  Typename * Ponteiro para um nome de coclass (VT_UNKNOWN).
Interface [oleautomation] Â Typename * Ponteiro para uma interface derivada de IUnknown.
SAFEARRAY(TypeName) TypeName é qualquer um dos tipos acima. Matriz desses tipos.
Typename* TypeName é qualquer um dos tipos acima. Ponteiro para um tipo.
Decimal Inteiro binário sem sinal de 96 bits dimensionado por uma potência variável de 10. Um tipo de dados decimal que fornece um tamanho e uma escala para um número (como em coordenadas).

 

Um parâmetro será compatível com a Automação se seu tipo for compatível com Automação, um ponteiro para um tipo compatível com Automação ou UM SAFEARRAY de um tipo compatível com Automação.

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

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

Uma interface será compatível com a Automação se ela for derivada de IDispatch ou IUnknown, ela tiver o atributo [oleautomation] e todas as suas entradas VTBL forem compatíveis com a 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 ter a convenção de chamada CDECL.

Cada dispinterface é implicitamente compatível com a Automação. Portanto, você não deve usar o atributo [oleautomation] em dispinterface.

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

Flags

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

Confira também

Arquivo IDL (definição de interface)

Gerando uma biblioteca de tipos com MIDL

Exemplo de arquivo ODL

Sintaxe de arquivo ODL

/Osf

uuid