IDataModelManager4 ::CreateIntrinsicObject, méthode (dbgmodel.h)
La méthode CreateIntrinsicObject est la méthode qui place les valeurs intrinsèques dans IModelObject. L’appelant place la valeur dans un VARIANT COM et appelle cette méthode. Le gestionnaire de modèles de données retourne un IModelObject représentant l’objet. Notez que cette méthode est également utilisée pour boxer des types IUnknown fondamentaux : accesseurs de propriétés, méthodes, contextes, etc. Dans ce cas, la méthode objectKind indique quel type de construction basée sur IUnknown l’objet représente et le champ punkVal de la variante passée est le type dérivé IUnknown. Le type doit être castable de manière statique à l’interface de modèle appropriée (par exemple : IModelPropertyAccessor, IModelMethod, IDebugHostContext, etc...) en cours.
Les types VARIANT pris en charge par cette méthode sont VT_UI1, VT_I1, VT_UI2, VT_I2, VT_UI4, VT_I4, VT_UI8, VT_I8, VT_R4, VT_R8, VT_BOOL, VT_BSTR et VT_UNKNOWN (pour un ensemble spécialisé de types dérivés IUnknown, comme indiqué par l’énumération ModelObjectKind.
Syntaxe
HRESULT CreateIntrinsicObject(
ModelObjectKind objectKind,
VARIANT *intrinsicData,
IModelObject **object
);
Paramètres
objectKind
Indique le type d’objet en cours de boxe. Pour les intrinsèques normales qui diffèrent du type de variante, ObjectIntrinsic est passé ici. Pour d’autres interfaces dérivées iUnknown, le type d’objet est l’une des valeurs de l’énumération ModelObjectKind et l’interface dans le VARIANT doit correspondre.
intrinsicData
VARIANT contenant la valeur qui va être boxée à l’intérieur d’un conteneur IModelObject.
object
La valeur nouvellement boxée (en tant que IModelObject) est retournée ici.
Valeur de retour
Cette méthode retourne HRESULT qui indique la réussite ou l’échec.
Remarques
exemple de code
ComPtr<IDataModelManager4> spManager; /* get the data model manager */
VARIANT vtValue;
vtValue.vt = VT_I4;
vtValue.lVal = 42;
// If the object is an VT_UNKNOWN, the first argument to CreateIntrinsicObject
// indicates what KIND of IUnknown. For example, ObjectPropertyAccessor would
// indicate IModelPropertyAccessor. ObjectMethod would indicate IModelMethod, etc...
ComPtr<IModelObject> spValue;
if (SUCCEEDED(spManager->CreateIntrinsicObject(ObjectIntrinsic, &vtValue, &spValue)))
{
// spValue now contains the object (boxed) representation of the int value 42.
}
Exigences
Exigence | Valeur |
---|---|
d’en-tête | dbgmodel.h |