Partager via


IModelPropertyAccessor ::SetValue, méthode (dbgmodel.h)

La méthode SetValue est l’élément setter de l’accesseur de propriété. Elle est appelée chaque fois qu’un client souhaite affecter une valeur à la propriété sous-jacente. De nombreuses propriétés sont en lecture seule. Dans ce cas, l’appel de la méthode SetValue renvoie E_NOTIMPL. Notez que tout appelant qui obtient directement un accesseur de propriété est chargé de transmettre le nom de clé et l’objet de instance précis (ce pointeur) à la méthode SetValue de l’accesseur de propriété.

Syntaxe

HRESULT SetValue(
  PCWSTR       key,
  IModelObject *contextObject,
  IModelObject *value
);

Paramètres

key

Nom de la clé pour laquelle obtenir une valeur. Un appelant qui extrait directement un accesseur de propriété est responsable de la transmission de ce message avec précision.

contextObject

Objet de contexte (instance ce pointeur) à partir duquel l’accesseur de propriété a été extrait.

value

Valeur à assigner à la propriété.

Valeur retournée

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

Exemple de Code

class MyReadWriteProperty :
    public Microsoft::WRL::RuntimeClass<
        Microsoft::WRL::RuntimeClassFlags<
            Microsoft::WRL::RuntimeClassType::ClassicCom
            >,
        IModelPropertyAccessor
        >
{
public:

    IFACEMETHOD(GetValue)(_In_ PCWSTR /*pwszKey*/, 
                          _In_ IModelObject * /*pContextObject*/, 
                          _COM_Errorptr_ IModelObject **ppValue)
    {
        HRESULT hr = S_OK;
        *ppValue = nullptr;

        VARIANT vtValue;
        vtValue.vt = VT_I4;
        vtValue.lVal = m_value;
        
        ComPtr<IModelObject> spValue;
        hr = GetManager()->CreateIntrinsicObject(ObjectIntrinsic, &vtValue, &spValue);
        if (SUCCEEDED(hr))
        {
            *ppValue = spValue.Detach();
        }

        return hr;
    }

    IFACEMETHOD(SetValue)(_In_ PCWSTR /*pwszKey*/, 
                          _In_ IModelObject * /*pContextObject*/, 
                          _In_ IModelObject *pValue)
    {
        VARIANT vtValue;
        HRESULT hr = pValue->GetIntrinsicValueAs(VT_I4, &vtValue);
        if (SUCCEEDED(hr))
        {
            m_value = vtValue.lVal;
        }
        return S_OK;
    }

    HRESULT RuntimeClassInitialize(_In_ int value)
    {
        m_value = value;
        return S_OK;
    }

private:

    int m_value;
};

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IModelPropertyAcessor