IDataModelManager2::GetModelForTypeSignature 方法 (dbgmodel.h)
GetModelForTypeSignature 方法返回通过先前调用 RegisterModelForTypeSignature 方法针对特定类型签名注册的数据模型。 此方法返回的数据模型被视为与传递的类型签名匹配的任何类型的规范可视化工具。 作为规范可视化工具,该数据模型将接管类型的显示。 默认情况下,显示引擎将隐藏对象的本机/语言构造,以支持数据模型呈现的对象视图。
语法
HRESULT GetModelForTypeSignature(
IDebugHostTypeSignature *typeSignature,
IModelObject **dataModel
);
参数
typeSignature
一个类型签名,dataModel 将为其注册为规范可视化工具。 使用与签名 (匹配且没有更好的匹配类型签名) 的本机/语言类型创建的任何对象都将自动附加返回的数据模型作为父级。
dataModel
对于与给定类型签名匹配且没有更好的匹配类型 (签名的所有类型实例,注册为规范可视化工具的数据模型。
返回值
此方法返回指示成功或失败的 HRESULT。
注解
示例代码
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHost> spHost; /* get the debug host */
ComPtr<IModelObject> spDataModel; /* create a data model (see
CreateDataModelObject) */
ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
// Create a signature to match MyType<*>
ComPtr<IDebugHostTypeSignature> spTypeSignature;
if (SUCCEEDED(spSym->CreateTypeSignature(L"MyType<*>", nullptr, &spTypeSignature)))
{
// Register the model for std::vector<*>
if (SUCCEEDED(spManager->RegisterModelForTypeSignature(spTypeSignature.Get(),
spDataModel.Get()))
{
// Every instance matching MyType<*> will now have spDataModel
// attached as the parent. Further, such parent is considered
// the canonical visualizer for all types matching MyType<*> since it
// was registered via RegisterModelForTypeSignature instead of
// RegisterExtensionForTypeSignature.
//
// Demonstrate that we can find the canonical visualizer under
// this registration.
ComPtr<IModelObject> spCanonicalVisualizerModel;
if (SUCCEEDED(spManager->GetModelForTypeSignature(
spTypeSignature.Get(),
&spCanonicalVisualizerModel)))
{
// spCanonicalVisualizerModel is the same as spDataModel since
// it was registered as such.
}
}
}
}
要求
要求 | 值 |
---|---|
Header | dbgmodel.h |