IDebugCustomViewer
Cette interface permet à un évaluateur d' (EE)expression pour afficher une valeur de propriété dans le format auquel est nécessaire.
IDebugCustomViewer : IUknown
Remarques à l'intention des implémenteurs
L'évaluateur d'expression implémente cette interface pour afficher une valeur de propriété dans un format personnalisé.
Remarques pour les appelants
Un appel à la fonction d' CoCreateInstance COM instancie cette interface. CLSID passé à CoCreateInstance est obtenu à partir de le Registre. un appel à IDebugProperty3 : : GetCustomViewerList obtient l'emplacement dans le Registre. Voir notes pour les détails ainsi que l'exemple.
méthodes en commande de Vtable
Cette interface implémente la méthode suivante :
Méthode |
Description |
---|---|
Fait quelle que soit nécessaire pour afficher une valeur donnée. |
Notes
Cette interface est utilisée lorsqu'une valeur de propriété ne peut pas être affichée par normale moyen-pour l'exemple, avec une table de données ou un type de propriété complexe différent. Une visionneuse personnalisée, telle qu'elle est représentée par l'interface d' IDebugCustomViewer , est différente d'un visualiseur de type, qui est un programme externe pour afficher des données d'un type spécifique indépendamment de l'évaluateur d'expression. L'évaluateur d'expression implémente une visionneuse personnalisée qui est spécifique en cette EE. Un utilisateur sélectionne le type du visualiseur à utiliser, qu'elles touchent un visualiseur de type ou une visionneuse personnalisée. Consultez Visualisant et l'affichage de données pour plus d'informations sur ce processus.
Une visionneuse personnalisée est stockée de la même façon que l'évaluateur d'expression et, par conséquent, requiert un langage GUID et un fournisseur GUID. Le nom métrique (ou d'entrée du Registre) exact est connu uniquement en EE. Cette mesure est retourné dans la structure de DEBUG_CUSTOM_VIEWER , qui est ensuite retournée par un appel à IDebugProperty3 : : GetCustomViewerList. La valeur signalée dans la métrique est CLSID passé à la fonction d' CoCreateInstance COM (consultez l'exemple).
La fonction de Programmes d'assistance du Kit de développement logiciel pour le débogage , SetEEMetric, peut être utilisée pour stocker une visionneuse personnalisée. Consultez la section de Registre « évaluateurs d'expression » d' Debugging SDK Helpers pour les clés de Registre spécifiques dont une visionneuse personnalisée a besoin. Notez qu'une visionneuse personnalisée ne requiert qu'un métrique (défini par l'implémenteur de l'évaluateur d'expression) lorsqu'un évaluateur d'expression a besoin de plusieurs métriques prédéfinie.
Normalement, une visionneuse personnalisée propose une vue en lecture seule de données, étant donné que l'interface d' IDebugProperty3 fournie à IDebugCustomViewer : : DisplayValue n'a aucune méthode pour modifier la valeur de propriété à l'exception comme une chaîne. Pour prendre en charge la modification des blocs de données arbitraires, l'évaluateur d'expression implémente une interface personnalisée sur le même objet qui implémente l'interface d' IDebugProperty3 . Cette interface personnalisée fournit les méthodes nécessaires pour modifier un bloc arbitraire de données.
Configuration requise
en-tête : msdbg.h
l'espace de noms : Microsoft.VisualStudio.Debugger.Interop
Assembly : Microsoft.VisualStudio.Debugger.Interop.dll
Exemple
cet exemple montre comment obtenir la première visionneuse personnalisée d'une propriété si cette propriété a des visionneuses personnalisées.
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);
}
Voir aussi
Référence
IDebugProperty3 : : GetCustomViewerList
Programmes d'assistance du Kit de développement logiciel pour le débogage