Partager via


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 Value
S’applique à class, , structmembre de données
Renouvelable Non
Attributs requis coclasse (lorsqu’elle est appliquée à class ou struct)
Attributs non valides Aucun

Pour plus d'informations, consultez Contextes d'attribut.

Voir aussi

Attributs IDL
Attributs de classe
coclass