Attributi IDL
Tradizionalmente, la gestione di un file con estensione idl significava che era necessario:
Acquisire familiarità con la struttura e la sintassi di un file con estensione idl per poterlo modificare.
Fare affidamento su una procedura guidata, che consente di modificare alcuni aspetti del file con estensione idl.
È ora possibile modificare il file con estensione idl dall'interno di un file di codice sorgente usando gli attributi IDL di Visual C++. In molti casi, gli attributi IDL di Visual C++ hanno lo stesso nome degli attributi MIDL. Quando il nome di un attributo IDL di Visual C++ e un attributo MIDL sono gli stessi, significa che l'inserimento dell'attributo Visual C++ nel file di codice sorgente comporterà un file con estensione idl che contiene l'attributo MIDL denominato. Tuttavia, un attributo IDL di Visual C++ potrebbe non fornire tutte le funzionalità di un attributo MIDL.
Se non viene usato con gli attributi COM, gli attributi IDL consentono di definire le interfacce. Quando il codice sorgente viene compilato, gli attributi vengono usati per definire il file con estensione idl generato. Se usato con attributi COM in un progetto ATL, alcuni attributi IDL, ad esempio coclass
, causano l'inserimento del codice nel progetto.
Si noti che idl_quote consente di usare costrutti MIDL non supportati nella versione corrente di Visual C++. Questo e altri attributi, ad esempio importlib e includelib, consentono di usare i file con estensione idl esistenti nel progetto C++ di Visual Studio corrente.
Attributo | Descrizione |
---|---|
aggregatable | Indica che un controllo può essere aggregato da un altro controllo. |
appobject | Identifica la coclasse come oggetto applicazione, associato a un'applicazione EXE completa, e indica che le funzioni e le proprietà della coclasse sono disponibili a livello globale in questa libreria dei tipi. |
async_uuid | Specifica l'UUID che indirizza il compilatore MIDL a definire versioni sincrone e asincrone di un'interfaccia COM. |
bindable | Indica che la proprietà supporta il data binding. |
call_as | Consente di eseguire il mapping di una funzione non rimovibile a una funzione remota. |
case | Utilizzato con l'attributo switch_type in un'unione. |
coclass | Inserisce la definizione della classe in un file con estensione idl come coclasse. |
control | Specifica che il tipo definito dall'utente è un controllo . |
cpp_quote | Genera la stringa specificata, senza i caratteri virgolette, nel file di intestazione generato. |
defaultbind | Indica la singola proprietà associabile che rappresenta meglio l'oggetto . |
defaultcollelem | Utilizzato per l'ottimizzazione del codice Visual Basic. |
defaultvalue | Consente di specificare un valore predefinito per un parametro facoltativo tipizzato. |
default | Indica che l'interfaccia personalizzata o dispatch definita in una coclasse rappresenta l'interfaccia di programmabilità predefinita. |
defaultvtable | Definisce un'interfaccia come interfaccia vtable predefinita per un controllo . |
dispinterface | Inserisce un'interfaccia nel file con estensione idl come interfaccia di dispatch. |
displaybind | Indica una proprietà che deve essere visualizzata all'utente come associabile. |
dual | Inserisce un'interfaccia nel file con estensione idl come interfaccia doppia. |
entry | Specifica una funzione o una costante esportata in un modulo identificando il punto di ingresso nella DLL. |
first_is | Specifica l'indice del primo elemento della matrice da trasmettere. |
helpcontext | Specifica un ID di contesto che consente all'utente di visualizzare informazioni su questo elemento nel file della Guida. |
helpfile | Imposta il nome del file della Guida per una libreria dei tipi. |
helpstringcontext | Specifica l'ID di un argomento della Guida in un file con estensione hlp o chm. |
helpstringdll | Specifica il nome della DLL da usare per eseguire la ricerca di stringhe del documento (localizzazione). |
helpstring | Specifica una stringa di caratteri usata per descrivere l'elemento a cui viene applicata. |
hidden | Indica che l'elemento esiste ma non deve essere visualizzato in un browser orientato all'utente. |
idl_module | Specifica un punto di ingresso in una DLL. |
idl_quote | Consente di usare attributi o costrutti IDL non supportati nella versione corrente di Visual C++. |
id | Specifica un DISPID per una funzione membro (una proprietà o un metodo, in un'interfaccia o in un'interfaccia o in un'interfaccia). |
iid_is | Specifica l'IID dell'interfaccia COM a cui punta un puntatore di interfaccia. |
immediatebind | Indica che il database riceverà una notifica immediata di tutte le modifiche apportate a una proprietà di un oggetto associato a dati. |
importlib | Rende i tipi già compilati in un'altra libreria dei tipi disponibili per la libreria dei tipi da creare. |
import | Specifica un altro file con estensione idl, odl o header contenente le definizioni a cui si desidera fare riferimento dal file con estensione idl principale. |
include | Specifica uno o più file di intestazione da includere nel file con estensione idl generato. |
includelib | Determina l'inserimento di un file con estensione idl o h nel file con estensione idl generato. |
in | Indica che un parametro deve essere passato dalla routine chiamante alla routine chiamata. |
last_is | Specifica l'indice dell'ultimo elemento della matrice da trasmettere. |
lcid | Consente di passare un identificatore delle impostazioni locali a una funzione. |
length_is | Specifica il numero di elementi della matrice da trasmettere. |
licensed | Indica che la coclasse a cui viene applicata la licenza e deve essere creata un'istanza usando IClassFactory2 . |
local | Consente di usare il compilatore MIDL come generatore di intestazioni quando viene usato nell'intestazione dell'interfaccia. Se usato in una singola funzione, designa una routine locale per cui non vengono generati stub. |
max_is | Definisce il valore massimo per un indice di matrice valido. |
module | Definisce il blocco di libreria nel file IDL. |
ms_union | Controlla l'allineamento della rappresentazione dei dati di rete di unioni non incapsulate. |
no_injected_text | Impedisce al compilatore di inserire codice in seguito all'uso di attributi. |
nonbrowsable | Indica che un membro dell'interfaccia non deve essere visualizzato in un browser delle proprietà. |
noncreatable | Definisce un oggetto di cui non è possibile creare un'istanza da sola. |
nonextensible | Specifica che l'implementazione IDispatch include solo le proprietà e i metodi elencati nella descrizione dell'interfaccia e non può essere esteso con membri aggiuntivi in fase di esecuzione. |
object | Identifica un'interfaccia personalizzata; sinonimo di attributo personalizzato. |
odl | Identifica un'interfaccia come interfaccia ODL (Object Description Language). |
oleautomation | Indica che un'interfaccia è compatibile con Automazione. |
facoltativo | Specifica un parametro facoltativo per una funzione membro. |
out | Identifica i parametri dei puntatori restituiti dalla routine chiamata alla routine chiamante (dal server al client). |
pointer_default | Specifica l'attributo puntatore predefinito per tutti i puntatori, ad eccezione dei puntatori di primo livello visualizzati negli elenchi di parametri. |
pragma | Genera la stringa specificata, senza i caratteri virgolette, nel file con estensione idl generato. |
progid | Specifica il ProgID per un oggetto COM. |
propget | Specifica una funzione di accesso alle proprietà (get). |
propputref | Specifica una funzione di impostazione della proprietà che utilizza un riferimento anziché un valore. |
propput | Specifica un funzione di impostazione delle proprietà. |
ptr | Definisce un puntatore come puntatore completo. |
public | Assicura che un typedef venga inserito nella libreria dei tipi anche se non viene fatto riferimento all'interno del file con estensione idl. |
range | Specifica un intervallo di valori consentiti per argomenti o campi i cui valori vengono impostati in fase di esecuzione. |
readonly | Impedisce l'assegnazione a una variabile. |
ref | Identifica un puntatore di riferimento. |
requestedit | Indica che la proprietà supporta la notifica OnRequestEdit . |
restricted | Specifica che non è possibile chiamare arbitrariamente una libreria o un membro di un modulo, un'interfaccia o una dispinterface. |
retval | Definisce il parametro che riceve il valore restituito del membro. |
size_is | Specifica le dimensioni della memoria allocata per puntatori di dimensioni, puntatori ridimensionati a puntatori di dimensioni e matrici multidimensionali singole o multidimensionali. |
source | Indica che un membro di una classe, di una proprietà o di un metodo è un'origine di eventi. |
string | Indica che la matrice unidimensionale char , wchar_t , byte o equivalente o il puntatore a tale matrice deve essere considerata come una stringa. |
switch_is | Specifica l'espressione o l'identificatore che funge da discriminante dell'unione che seleziona il membro dell'unione. |
switch_type | Identifica il tipo della variabile utilizzata come discriminante dell'unione. |
transmit_as | Indica al compilatore di associare un tipo presentato, che le applicazioni client e server modificano, a un tipo trasmesso. |
uidefault | Indica che il membro informazioni sul tipo è il membro predefinito per la visualizzazione nell'interfaccia utente. |
unique | Specifica un puntatore univoco. |
usesgetlasterror | Indica al chiamante che, se si verifica un errore durante la chiamata a tale funzione, il chiamante può quindi chiamare GetLastError per recuperare il codice di errore. |
uuid | Specifica l'ID univoco per una classe o un'interfaccia. |
v1_enum | Indica che il tipo enumerato specificato deve essere trasmesso come entità a 32 bit, anziché come impostazione predefinita a 16 bit. |
vararg | Specifica che la funzione accetta un numero variabile di argomenti. |
vi_progid | Specifica una forma indipendente dalla versione del ProgID. |
wire_marshal | Specifica un tipo di dati che verrà utilizzato per la trasmissione anziché per un tipo di dati specifico dell'applicazione. |