IModelPropertyAccessor::SetValue-Methode (dbgmodel.h)

Die SetValue-Methode ist der Setter für den Eigenschaftenzugriffsor. Er wird immer dann aufgerufen, wenn ein Client der zugrunde liegenden Eigenschaft einen Wert zuweisen möchte. Viele Eigenschaften sind schreibgeschützt. In solchen Fällen gibt das Aufrufen der SetValue-Methode E_NOTIMPL zurück. Beachten Sie, dass jeder Aufrufer, der direkt einen Eigenschaftszugriffsor abruft, für die Übergabe des Schlüsselnamens und der genauen instance -Objekts (dieser Zeiger) an die SetValue-Methode des Eigenschaftenzugriffers verantwortlich ist.

Syntax

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

Parameter

key

Der Name des Schlüssels, für den ein Wert abgerufen werden soll. Ein Aufrufer, der einen Eigenschaftenzugriffsor direkt abruft, ist für die genaue Übergabe verantwortlich.

contextObject

Das Kontextobjekt (instance diesem Zeiger), aus dem der Eigenschaftszugriffsor abgerufen wurde.

value

Der Wert, der der Eigenschaft zugewiesen werden soll.

Rückgabewert

Diese Methode gibt HRESULT zurück, das auf Erfolg oder Fehler hinweist.

Hinweise

Beispielcode

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;
};

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IModelPropertyAcessor-Schnittstelle