IModelObject::SetConcept 方法 (dbgmodel.h)

SetConcept 方法会将指定概念放在此指针指定的对象实例上。 如果附加到由此指定的对象实例的父模型也支持 该概念,则 实例中的实现将替代父模型中的该概念。

有关数据模型支持 (接口) 的概念集,请参阅 调试器数据模型 C++ 概念

有关 IKeyStore 接口的信息,请参阅 IKeyStore 接口

语法

HRESULT SetConcept(
  REFIID    conceptId,
  IUnknown  *conceptInterface,
  IKeyStore *conceptMetadata
);

参数

conceptId

要分配的概念的唯一标识符。 这也是概念核心接口的 IID。

conceptInterface

要分配的概念接口 (由 conceptId) 定义。

conceptMetadata

要与此概念关联的可选元数据。

返回值

此方法返回指示成功或失败的 HRESULT。

注解

代码示例

ComPtr<IModelObject> spObject; /* get an object: say a new one from CreateSyntheticObject */

// Implement IStringDisplayableConcept for the object.  Return a static "Hello World" string.
class MyStringConversion :
    public Microsoft::WRL::RuntimeClass<
        Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>,
        IStringDisplayableConcept
        >
{
public:

    IFACEMETHOD(ToDisplayString)(_In_ IModelObject * /*pContextObject*/, 
                                 _In_opt_ IKeyStore * /*pMetadata*/, 
                                 _Out_ BSTR *pDisplayString)
    {
        *pDisplayString = SysAllocString(L"Hello World");
        return *pDisplayString == nullptr ? E_OUTOFMEMORY : S_OK;
    }
};

// Add the implementation as a concept
ComPtr<MyStringConversion> spStringConverter = Microsoft::WRL::Make<MyStringConversion>();
if (spStringConverter != nullptr)
{
    if (SUCCEEDED(spObject->SetConcept(__uuidof(IStringDisplayableConcept),
                                       static_cast<IStringDisplayableConcept *>
                                           (spStringConverter.Get()), nullptr)))
    {
        // The new object can be converted to a string! 
    }
}

要求

要求
Header dbgmodel.h

另请参阅

调试器数据模型 C++ 的概念

IKeyStore 接口

IModelObject 接口