IDataModelManager4::GetModelForTypeSignature 方法 (dbgmodel.h)
GetModelForTypeSignature 方法通过对 RegisterModelForTypeSignature 方法的调用返回针对特定类型签名注册的数据模型。 此方法返回的数据模型被视为与传递的类型签名匹配的任何类型的规范可视化工具。 作为规范可视化工具,该数据模型接管类型的显示。 默认情况下,显示引擎将隐藏对象的本机/语言构造,以支持数据模型呈现的对象视图。
语法
HRESULT GetModelForTypeSignature(
IDebugHostTypeSignature *typeSignature,
IModelObject **dataModel
);
参数
typeSignature
dataModel 将为其注册为规范可视化工具的类型签名。 使用与签名匹配的本机/语言类型创建的任何对象(以及没有更好的匹配类型签名)将自动将返回的数据模型附加为父级。
dataModel
注册为与给定类型签名匹配的所有类型实例的规范可视化工具的数据模型(并且没有更好的匹配类型签名)。
返回值
此方法返回指示成功或失败的 HRESULT。
言论
示例代码
ComPtr<IDataModelManager4> 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.
}
}
}
}
要求
要求 | 价值 |
---|---|
标头 | dbgmodel.h |