default (C++)
Indique que l’interface personnalisée ou dispinterface définie dans une coclasse représente l’interface de programmabilité par défaut.
Syntaxe
[ default(interface1, interface2) ]
Paramètres
interface1
Interface par défaut qui sera mise à la disposition des environnements de script qui créent un objet basé sur la classe définie avec l’attribut default
.
Si aucune interface par défaut n’est spécifiée, la première occurrence d’une interface non source est utilisée par défaut.
interface2
(Facultatif) Interface source par défaut. Vous devez aussi spécifier cette interface avec l’attribut source .
Si aucune interface source par défaut n’est spécifiée, la première interface source est utilisée par défaut.
Notes
L’attribut default
C++ a les mêmes fonctionnalités que l’attribut MIDL par défaut . L’attribut default
est également utilisé avec l’attribut case .
Exemple
Le code suivant montre comment default
utiliser la définition d’une coclasse pour spécifier ICustomDispatch
comme interface de programmabilité par défaut :
// cpp_attr_ref_default.cpp
// compile with: /LD
#include "windows.h"
[module(name="MyLibrary")];
[object, uuid("9E66A290-4365-11D2-A997-00C04FA37DDB")]
__interface ICustom {
HRESULT Custom([in] long l, [out, retval] long *pLong);
};
[dual, uuid("9E66A291-4365-11D2-A997-00C04FA37DDB")]
__interface IDual {
HRESULT Dual([in] long l, [out, retval] long *pLong);
};
[object, uuid("9E66A293-4365-11D2-A997-00C04FA37DDB")]
__interface ICustomDispatch : public IDispatch {
HRESULT Dispatch([in] long l, [out, retval] long *pLong);
};
[ coclass, default(ICustomDispatch), source(IDual), uuid("9E66A294-4365-11D2-A997-00C04FA37DDB")
]
class CClass : public ICustom, public IDual, public ICustomDispatch {
HRESULT Custom(long l, long *pLong) { return(S_OK); }
HRESULT Dual(long l, long *pLong) { return(S_OK); }
HRESULT Dispatch(long l, long *pLong) { return(S_OK); }
};
int main() {
#if 0 // Can't instantiate without implementations of IUnknown/IDispatch
CClass *pClass = new CClass;
long llong;
pClass->custom(1, &llong);
pClass->dual(1, &llong);
pClass->dispinterface(1, &llong);
pClass->dispatch(1, &llong);
delete pClass;
#endif
return(0);
}
L’attribut source a également un exemple d’utilisation default
.
Spécifications
Contexte d’attribut | Valeur |
---|---|
S’applique à | class , , struct membre de données |
Renouvelable | Non |
Attributs requis | coclasse (lorsqu’elle est appliquée à class ou struct ) |
Attributs non valides | Aucune |
Pour plus d'informations, consultez Contextes d'attribut.