Compartilhar via


dispinterface

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Esta declaração define um conjunto de propriedades e métodos no qual IDispatch::Invoke pode ser chamado. Um dispinterface pode ser definido por explicitamente listagem o conjunto de com suporte métodos e propriedades (Sintaxe 1) ou por listagem uma única interface (Syntax 2).

Syntax

[attributes]
dispinterface intfname {
  properties:
        proplist
  methods:
        methlist
};

Syntax

[attributes]
dispinterface intfname {
  interface interfacename
};

Elementos

  • Atributos
    O HelpString, HelpContext, Oculta, UUID, e versão Os atributos são aceitos antes Dispinterface. Atributos (inclusive os colchetes) podem ser omitidos, Except for o atributo UUID, que é exigido.
  • intfname
    O nome pelo qual o Dispinterface é conhecido na biblioteca de tipo. Esse nome deve ser exclusivo dentro de biblioteca tipo.
  • InterfaceName
    (Sintaxe 2) O nome da interface para declarar como um IDispatch interface.
  • proplist
    (Sintaxe 1) Um opcional lista das propriedades com suporte, o objeto, declarado na forma de variáveis. Este é o forma reduzida para declarar as funções propriedade na lista de métodos. Consulte a seção comentários para obter detalhes.
  • methlist
    (Sintaxe 1) Uma lista abrangendo um protótipo função para cada método e propriedade no Dispinterface. Qualquer número de definições função pode aparecer em methlist. Uma função em methlist tem a seguinte forma:

    [ Atributos ] returntype methname**(params)**;

    O seguinte atributos são aceitos em um método em um dispinterface:

    • HelpString
    • HelpContext
    • seqüência de caracteres (para compatibilidade com o Interface Definition Language)
    • ligável
    • defaultbind
    • displaybind
    • propget
    • propput
    • propputref
    • Vararg

    Se Vararg é especificado, o último parâmetro deve ser uma matriz segura do tipo Variant.

    Lista a parâmetro é uma lista Comma-delimited, cada elemento do qual foi a seguinte forma:

    [ Atributos ] tipo PARAMNAME

    O tipo pode ser qualquer declarado ou interno tipo, ou um ponteiro para qualquer tipo. Os atributos em parâmetros são Em, Saída, opcional, e seqüência de caracteres.

    Se opcional for especificado, ele somente deve ser especificado em parâmetros de mais à direita, e os tipos desses parâmetros devem ser Variant.

Remarks

Método funções são especificadas exatamente como é descrita em uma declaração módulo exceto pelo fato de que o atributo entrada não é permitido.

Stdole2.tlb deve ser importado, porque um dispinterface herda IDispatch.

As propriedades podem ser declaradas em listas de propriedades ou métodos. Declarar propriedades na lista de propriedades não indica que o tipo de acessar a propriedade suporta (get, pôr, ou PUTREF).

Especificar o somente leitura atributo de propriedades que não suporte pôr Ou PUTREF.

Se funções de propriedade são declaradas na lista de métodos, funções para uma propriedade todos terão o mesmo ID.

Usando Sintaxe 1, as propriedades: e os métodos: As marcas são exigido. O ID atributo também é exigido em cada membro. Por exemplo:

properties:
    [id(0)] int Value;    // Default property.
methods:
    [id(1)] void Show();

Ao contrário interface membros, membros Dispinterface Não é possível usar o retval atributo para retornar um valor in addition to um código de erro HRESULT. O LCID atributo também é inválido para dispinterfaces porque Chamar passa uma localidade ID (LCID). No entanto, é possível declarar uma interface novamente que utiliza esses atributos.

Usando a Sintaxe 2, as interfaces que suporte IDispatch e são declaradas anteriormente em um objeto Definição de idioma (ODL) script pode ser declarado novamente como IDispatch As interfaces da seguinte maneira.

dispinterface helloPro {
    interface hello;
};

Este exemplo declara todos os membros do exemplo de saudação e todos os membros que ele herda a suporte IDispatch.

Neste maiúsculas e minúsculas, se OLÁ olá foi declarada anteriormente com LCID e retval Membros que retornados HRESULTs, MkTypLib seria remover cada LCID parâmetro e HRESULT tipo de retorno e, em vez disso, marca a tipo de retorno do tipo base das retval parâmetro.

As propriedades e métodos de um dispinterface não fazem parte de VTBL do Dispinterface. Conseqüentemente, CreateStdDispatch e DispInvoke não pode ser usado para implementar Chamar.

O Dispinterface é usado quando um aplicativo precise expor existente funções non-VTBL a automação. Esses aplicativos podem implementar Chamar Examinando o dispidMember parâmetro e diretamente chamado o correspondente função.

Example

[uuid(BFB73347-822A-1068-8849-00DD011087E8), version(1.0), helpstring("Useful help string."), helpcontext(2480)]
dispinterface MyDispatchObject {
    properties:
        [id(1)] int x;    // An integer property named x.
        [id(2)] BSTR y;    // A string property named y.
    methods:
        [id(3)] void show();        // No arguments, no result.
        [id(11)] int computeit(int inarg, double *outarg);
};

[uuid 00000000-0000-0000-0000-123456789012]
dispinterface MyObject
{
    properties:
    methods:
        [id(1), propget, bindable, defaultbind, displaybind] 
        long x();

        [id(1), propput, bindable, defaultbind, displaybind] 
        void x(long rhs);
}

See Also

Reference

IDispatch::Invoke

Concepts

Automation