次の方法で共有


IModelPropertyAccessor::SetValue メソッド (dbgmodel.h)

SetValue メソッドは、プロパティ アクセサーのセッターです。 クライアントが基になるプロパティに値を割り当てる場合は常に呼び出されます。 多くのプロパティは読み取り専用です。 このような場合、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;
};

要件

要件
Header dbgmodel.h

こちらもご覧ください

IModelPropertyAcessor インターフェイス