IDebugCustomViewer
Diese Schnittstelle ermöglicht einem Ausdrucksauswertung (EE), um einen Eigenschaftswert in anzuzeigen, welche Format erforderlich ist.
IDebugCustomViewer : IUknown
Hinweise für Implementierer
Eine EE implementiert diese Schnittstelle, um den Wert einer Eigenschaft in einem benutzerdefinierten Format anzeigen.
Hinweise für Aufrufer
Ein Aufruf von CoCreateInstance-Funktion COM instanziiert diese Schnittstelle. CLSID , das CoCreateInstance übergeben wird, wird von der Registrierung abgerufen. Ein Aufruf von IDebugProperty3::GetCustomViewerList erhält der Position in der Registrierung. Siehe Hinweise zur Details sowie das Beispiel.
Methoden in die Vtable-Reihenfolge
Diese Schnittstelle implementiert die folgende Weise:
Methode |
Beschreibung |
---|---|
Hat, was erforderlich ist, um einen angegebenen Wert anzuzeigen. |
Hinweise
Diese Schnittstelle wird verwendet, wenn der Wert einer Eigenschaft über keine normal Mittel-für Beispiel mit einer Datentabelle oder einem anderen komplexen Eigenschaftentyp angezeigt werden kann. Ein benutzerdefinierter Viewer, wie durch die IDebugCustomViewer-Schnittstelle dargestellt, ist eine schnellansicht Typ unterscheiden, die ein externes Programm zum Anzeigen von Daten eines bestimmten Typs unabhängig von der EE ist. Die EE implementiert einen benutzerdefinierten Viewer, der auf diese EE spezifisch sind. Ein Benutzer wählt aus, der Typ, sei es sich um eine schnellansicht Typ oder einen benutzerdefinierten Viewer verwenden der Schnellansicht. Daten visuell darstellen und Anzeigen finden Sie Einzelheiten über diesen Prozess.
Ein benutzerdefinierter Viewer wird auf die gleiche Weise wie eine EE registriert und daher eine Sprache GUID und einen Anbieter GUID erfordert. Die genaue Metriken (oder der Name des Registrierungseintrags) bekannt ist nur in der EE. Diese Metrik ist in der DEBUG_CUSTOM_VIEWER Struktur zurückgegeben, die wiederum durch einen Aufruf von IDebugProperty3::GetCustomViewerListzurückgegeben wurde. Der Wert, der in der Metriken gespeichert ist, wird CLSID , die CoCreateInstance-Funktion COM übergeben wird (siehe Beispiel).
Die SDK-Hilfen für das DebuggenSetEEMetricFunktion kann verwendet werden, um einen benutzerdefinierten Viewer zu registrieren. Weitere Informationen finden Sie im Abschnitt „Ausdrucksauswertung“ Registrierung von Debugging SDK Helpers für die bestimmten Registrierungsschlüssel, die einen benutzerdefinierten Viewer erfordert. Beachten Sie, dass ein benutzerdefinierter Viewer nur eine Metrik erfordert (die durch die Implementierung der EE definiert ist), während der Ausdrucksauswertung eine Reihe vordefinierter Metriken erfordert.
Normalerweise stellt einen benutzerdefinierten Viewer eine schreibgeschützte Ansicht der Daten, da die IDebugProperty3-Schnittstelle, die IDebugCustomViewer::DisplayValue angegeben wird, keine Methoden zum Ändern des Werts der Eigenschaft außer als Zeichenfolge aufweist. Zum Ändern von Blöcken, beliebige Daten zu unterstützen, implementiert die EE eine benutzerdefinierte Schnittstelle für dasselbe Objekt, das die IDebugProperty3-Schnittstelle implementiert. Diese benutzerdefinierte Schnittstelle würde dann die Methoden bereitstellen, die benötigt wurden, um einen beliebigen Block Daten zu ändern.
Anforderungen
Header: msdbg.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Beispiel
Dieses Beispiel zeigt, wie Sie den ersten benutzerdefinierten Viewer aus einer Eigenschaft abruft, wenn diese Eigenschaft über benutzerdefinierten Viewer verfügt.
IDebugCustomViewer *GetFirstCustomViewer(IDebugProperty2 *pProperty)
{
// This string is typically defined globally. For this example, it
// is defined here.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
IDebugCustomViewer *pViewer = NULL;
if (pProperty != NULL) {
CComQIPtr<IDebugProperty3> pProperty3(pProperty);
if (pProperty3 != NULL) {
HRESULT hr;
ULONG viewerCount = 0;
hr = pProperty3->GetCustomViewerCount(&viewerCount);
if (viewerCount > 0) {
ULONG viewersFetched = 0;
DEBUG_CUSTOM_VIEWER viewerInfo = { 0 };
hr = pProperty3->GetCustomViewerList(0,
1,
&viewerInfo,
&viewersFetched);
if (viewersFetched == 1) {
CLSID clsidViewer = { 0 };
CComPtr<IDebugCustomViewer> spCustomViewer;
// Get the viewer's CLSID from the registry.
::GetEEMetric(viewerInfo.guidLang,
viewerInfo.guidVendor,
viewerInfo.bstrMetric,
&clsidViewer,
strRegistrationRoot);
if (!IsEqualGUID(clsidViewer,GUID_NULL)) {
// Instantiate the custom viewer.
spCustomViewer.CoCreateInstance(clsidViewer);
if (spCustomViewer != NULL) {
pViewer = spCustomViewer.Detach();
}
}
}
}
}
}
return(pViewer);
}
Siehe auch
Referenz
IDebugProperty3::GetCustomViewerList