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.
}
}
}
}
規格需求
需求 | 值 |
---|---|
標頭 | dbgmodel.h |