Atributos de 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. |
padrão | 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. |
import | 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 , byte ou 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. |