Atributos IDL

Tradicionalmente, manter um arquivo .idl significava que você precisava:

  • Familiarize-se com a estrutura e a sintaxe de um arquivo .idl para poder modificá-lo.

  • Confiar em um assistente, o que permitiria modificar alguns aspectos do arquivo .idl.

Agora, você pode modificar o arquivo .idl de dentro de um arquivo de código-fonte usando atributos IDL do Visual C++. Em muitos casos, os atributos IDL do Visual C++ têm o mesmo nome que atributos MIDL. Quando o nome de um atributo IDL do Visual C++ e um atributo MIDL são iguais, isso significa que colocar o atributo Visual C++ em seu arquivo de código-fonte resultará em um arquivo .idl que contém seu atributo MIDL homônimo. No entanto, um atributo IDL do Visual C++ pode não fornecer toda a funcionalidade de um atributo MIDL.

Quando não usados com atributos COM, os atributos IDL permitem definir interfaces. Quando o código-fonte é compilado, os atributos são usados para definir o arquivo .idl gerado. Quando usado com atributos COM em um projeto ATL, alguns atributos de IDL, como coclass, fazem com que o código seja injetado no projeto.

Observe que idl_quote permite usar constructos MIDL que não têm suporte na versão atual do Visual C++. Esse e outros atributos, como importlib e includelib, ajudam você a usar arquivos .idl existentes em seu projeto atual do Visual Studio C++.

Atributo Descrição
aggregatable Indica que um controle pode ser agregado por outro controle.
appobject Identifica a coclass como um objeto de aplicativo, que está associado a um aplicativo EXE completo e indica que as funções e as propriedades da coclass estão disponíveis globalmente nessa biblioteca de tipos.
async_uuid Especifica a UUID que direciona o compilador MIDL para definir versões síncronas e assíncronas de uma interface COM.
bindable Indica que a propriedade dá suporte à associação de dados.
call_as Permite que uma função não retomável seja mapeada para uma função remota.
case Usado com o atributo switch_type em uma união.
coclass Coloca a definição de classe em um arquivo .idl como coclass.
control Especifica que o tipo definido pelo usuário é um controle.
cpp_quote Emite a cadeia de caracteres especificada, sem os caracteres de aspas, no arquivo de cabeçalho gerado.
defaultbind Indica a única propriedade associável que melhor representa o objeto.
defaultcollelem Usado para otimização de código do Visual Basic.
defaultvalue Permite a especificação de um valor padrão para um parâmetro opcional digitado.
default Indica que a face personalizada ou dispinterface definida em uma coclasse representa a interface de programação padrão.
defaultvtable Define uma interface como a interface de vtable padrão para um controle.
dispinterface Coloca uma interface no arquivo .idl como uma interface de expedição.
displaybind Indica uma propriedade que deve ser exibida para o usuário como associável.
dual Coloca uma interface no arquivo .idl como uma interface dupla.
entry Especifica uma função exportada ou uma constante em um módulo identificando o ponto de entrada na DLL.
first_is Especifica o índice do primeiro elemento de matriz a ser transmitido.
helpcontext Especifica uma ID de contexto que permite ao usuário exibir informações sobre este elemento no arquivo de Ajuda.
helpfile Define o nome do arquivo de Ajuda para uma biblioteca de tipos.
helpstringcontext Especifica a ID de um tópico de ajuda em um arquivo .hlp ou .chm.
helpstringdll Especifica o nome da DLL a ser usada para executar a pesquisa de cadeia de caracteres do documento (localização).
helpstring Especifica uma cadeia de caracteres que é usada para descrever o elemento ao qual ela se aplica.
hidden Indica que o item existe, mas não deve ser exibido em um navegador orientado ao usuário.
idl_module Especifica um ponto de entrada em uma DLL.
idl_quote Permite que você use atributos ou constructos de IDL que não têm suporte na versão atual do Visual C++.
id Especifica um parâmetro DISPID para uma função membro (uma propriedade ou um método, em uma interface ou dispinterface).
iid_is Especifica a IID da interface COM apontada por um ponteiro de interface.
immediatebind Indica que o banco de dados será notificado imediatamente de todas as alterações de uma propriedade de um objeto associado a dados.
importlib Disponibiliza os tipos que já foram compilados em outra biblioteca de tipos para a biblioteca de tipos que está sendo criada.
importar Especifica outro arquivo .idl, .odl ou cabeçalho contendo definições que você deseja referenciar do arquivo .idl principal.
include Especifica um ou mais arquivos de cabeçalho a serem incluídos no arquivo .idl gerado.
includelib Faz com que um arquivo .idl ou .h seja incluído no arquivo .idl gerado.
Em Indica que um parâmetro deve ser passado do procedimento de chamada para o procedimento chamado.
last_is Especifica o índice do último elemento de matriz a ser transmitido.
lcid Permite passar um identificador de localidade para uma função.
length_is Especifica o número de elementos de matriz a serem transmitidos.
licensed Indica que a coclass à qual ela se aplica é licenciada e deve ser instanciada usando IClassFactory2.
local Permite que você use o compilador MIDL como um gerador de cabeçalho quando usado no cabeçalho da interface. Quando usado em uma função individual, designa um procedimento local para o qual nenhum stub é gerado.
max_is Designa o valor máximo para um índice de matriz válido.
module Define o bloco de biblioteca no arquivo .idl.
ms_union Controla o alinhamento de representação de dados de rede de uniões não encapsuladas.
no_injected_text Impede que o compilador injete código como resultado do uso do atributo.
nonbrowsable Indica que um membro da interface não deve ser exibido em um navegador de propriedade.
noncreatable Define um objeto que não pode ser instanciado por si só.
nonextensible Especifica que a implementação IDispatch inclui apenas as propriedades e os métodos listados na descrição da interface e não pode ser estendido com membros adicionais em tempo de execução.
object Identifica uma interface personalizada; sinônimo de atributo personalizado.
odl Identifica uma interface como uma interface ODL (Object Description Language).
oleautomation Indica que uma interface é compatível com Automação.
optional Especifica um parâmetro opcional para uma função membro.
out Identifica os parâmetros de ponteiro que são retornados do procedimento chamado para o procedimento de chamada (do servidor para o cliente).
pointer_default Especifica o atributo de ponteiro padrão para todos os ponteiros, exceto ponteiros de nível superior que aparecem em listas de parâmetros.
pragma Emite a cadeia de caracteres especificada, sem os caracteres de aspas, no arquivo .idl gerado.
progid Especifica o ProgID para um objeto COM.
propget Especifica uma função de acessador de propriedade (get).
propputref Especifica uma função de definição de propriedade que usa uma referência em vez de um valor.
propput Especifica uma função de configuração de propriedade.
ptr Designa um ponteiro como um ponteiro completo.
público Garante que um typedef vá para a biblioteca de tipos mesmo que não seja referenciado de dentro do arquivo .idl.
range Especifica um intervalo de valores permitidos para argumentos ou campos cujos valores são definidos em tempo de execução.
readonly Proíbe a atribuição a uma variável.
ref Identifica um ponteiro de referência.
requestedit Indica que a propriedade dá suporte à notificação OnRequestEdit.
restricted Especifica que uma biblioteca ou membro de um módulo, interface ou despinterface não pode ser chamado arbitrariamente.
retval Designa o parâmetro recebe o valor retornado do membro.
size_is Especifica o tamanho da memória alocada para ponteiros dimensionados, ponteiros dimensionados para ponteiros dimensionados e matrizes multidimensionais ou simples.
source Indica que um membro de uma classe, propriedade ou método é uma fonte de eventos.
cadeia de caracteres Indica que a matriz unidimensional char, wchar_t, byteou equivalente ou o ponteiro para essa matriz deve ser tratado como uma cadeia de caracteres.
switch_is Especifica a expressão ou o identificador que atua como o discriminador da união que seleciona o membro da união.
switch_type Identifica o tipo da variável usada como o discriminante da união.
transmit_as Instrui o compilador a associar um tipo apresentado, que os aplicativos cliente e servidor manipulam, com um tipo transmitido.
uidefault Indica que o tipo de membro de informações de tipo é o membro padrão para exibição na interface do usuário.
unique Especifica um ponteiro exclusivo.
usesgetlasterror Informa ao chamador que, se houver um erro ao chamar essa função, o chamador poderá chamar GetLastError para recuperar o código de erro.
uuid Especifica a ID exclusiva de uma classe ou interface.
v1_enum Orienta que o tipo enumerado especificado seja transmitido como uma entidade de 32 bits, em vez do padrão de 16 bits.
vararg Especifica que a função usa um número variável de argumentos.
vi_progid Especifica um modo independente de versão do ProgID.
wire_marshal Especifica um tipo de dados que será usado para transmissão em vez de um tipo de dados específico do aplicativo.

Confira também

Atributos por grupo