共用方式為


IModelPropertyAccessor::SetValue 方法 (dbgmodel.h)

SetValue 方法是屬性存取子的 setter。 每當用戶端想要將值指派給基礎屬性時,就會呼叫它。 許多屬性都是唯讀的。 在這種情況下,呼叫 SetValue 方法會傳回E_NOTIMPL。 請注意,任何直接取得屬性存取子的呼叫端都會負責傳遞索引鍵名稱和精確的實例物件, (這個指標) 屬性存取子的 SetValue 方法。

語法

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

參數

key

要為其取得值的索引鍵名稱。 直接擷取屬性存取子的呼叫端負責正確傳遞這個。

contextObject

內容物件 (這個指標) 從中擷取屬性存取子。

value

要指派給屬性的值。

傳回值

這個方法會傳回表示成功或失敗的 HRESULT。

備註

範例程式碼

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

規格需求

需求
標頭 dbgmodel.h

另請參閱

IModelPropertyAcessor 介面