IDebugCustomViewerIDebugCustomViewer

Cette interface permet l’évaluateur d’expression (EE) pour afficher une valeur de propriété dans le format n’est nécessaire.This interface enables an expression evaluator (EE) to display a property's value in whatever format is necessary.

SyntaxeSyntax

IDebugCustomViewer : IUknown  

Notes pour les implémenteursNotes for Implementers

Un EE implémente cette interface pour afficher une valeur de propriété dans un format personnalisé.An EE implements this interface to display a property's value in a custom format.

Remarques pour les appelantsNotes for Callers

Un appel à COM CoCreateInstance fonction instancie cette interface.A call to COM's CoCreateInstance function instantiates this interface. Le CLSID transmis à CoCreateInstance est obtenue à partir du Registre.The CLSID passed to CoCreateInstance is obtained from the registry. Un appel à GetCustomViewerList Obtient l’emplacement dans le Registre.A call to GetCustomViewerList obtains the location in the registry. Pour plus d’informations, ainsi que l’exemple, consultez la section Notes.See Remarks for details as well as the Example.

Méthodes dans l'ordre VtableMethods in Vtable Order

Cette interface implémente la méthode suivante :This interface implements the following method:

MéthodeMethod DescriptionDescription
Valeur d’affichageDisplayValue Fait le nécessaire pour afficher une valeur donnée.Does whatever is necessary to display a given value.

NotesRemarks

Cette interface est utilisée lorsqu’une valeur de propriété ne peut pas être affichée par des moyens normaux, par exemple, avec une table de données ou un autre type de propriété complexe.This interface is used when a property's value cannot be displayed by normal means—for example, with a data table or another complex property type. Une visionneuse personnalisée, comme représenté par la IDebugCustomViewer l’interface, diffère d’un visualiseur de type, qui est un programme externe pour afficher les données d’un type spécifique, quelle que soit la EE.A custom viewer, as represented by the IDebugCustomViewer interface, is different from a type visualizer, which is an external program for displaying data of a specific type regardless of the EE. Le EE implémente une visionneuse personnalisée qui est spécifique à cette EE.The EE implements a custom viewer that is specific to that EE. Un utilisateur sélectionne le type de visualiseur à utiliser, soit un visualiseur de type ou une visionneuse personnalisée.A user selects which type of visualizer to use, be it a type visualizer or a custom viewer. Consultez Visualizing et affichage des données pour plus d’informations sur ce processus.See Visualizing and Viewing Data for details on this process.

Une visionneuse personnalisée est enregistrée dans la même façon qu’une EE et, par conséquent, requiert une langue GUID et un GUID du fournisseur.A custom viewer is registered in the same way as an EE and, therefore, requires a language GUID and a vendor GUID. La mesure exacte (ou le nom de l’entrée du Registre) est connue uniquement du EE.The exact metric (or registry entry name) is known only to the EE. Cette mesure est retournée dans le DEBUG_CUSTOM_VIEWER structure, qui à son tour, est retourné par un appel à GetCustomViewerList.This metric is returned in the DEBUG_CUSTOM_VIEWER structure, which in turn is returned by a call to GetCustomViewerList. La valeur stockée dans la métrique est la CLSID qui est passé à COM CoCreateInstance (voir l’exemple).The value stored in the metric is the CLSID that is passed to COM's CoCreateInstance function (see the Example).

Le programmes d’assistance du Kit de développement logiciel pour le débogage fonction, SetEEMetric, peut être utilisé pour inscrire une visionneuse personnalisée.The SDK Helpers for Debugging function, SetEEMetric, can be used to register a custom viewer. Consultez la section de Registre « Évaluateurs d’Expression » de Debugging SDK Helpers pour les clés de Registre spécifique qui a besoin d’une visionneuse personnalisée.See the "Expression Evaluators" registry section of Debugging SDK Helpers for the specific registry keys that a custom viewer needs. Notez qu’une visionneuse personnalisée doit uniquement une métrique (qui est définie par le responsable de l’implémentation de la EE) alors que l’évaluateur d’expression requiert plusieurs mesures prédéfinies.Note that a custom viewer needs only one metric (which is defined by the EE's implementer) whereas an expression evaluator requires several predefined metrics.

En règle générale, une visionneuse personnalisée fournit une vue en lecture seule des données, depuis le IDebugProperty3 interface fournie à une valeur d’affichage n’a aucune méthode permettant de modifier la valeur de propriété, sauf en tant que chaîne.Normally, a custom viewer provides a read-only view of the data, since the IDebugProperty3 interface supplied to DisplayValue has no methods for changing the property's value except as a string. Pour prendre en charge la modification des blocs de données arbitraires, le EE implémente une interface personnalisée sur le même objet qui implémente le IDebugProperty3 interface.In order to support changing arbitrary blocks of data, the EE implements a custom interface on the same object that implements the IDebugProperty3 interface. Cette interface personnalisée est ensuite fournir les méthodes nécessaires pour modifier un bloc arbitraire de données.This custom interface would then provide the methods needed to change an arbitrary block of data.

SpécificationsRequirements

En-tête : msdbg.hHeader: msdbg.h

Namespace : Microsoft.VisualStudio.Debugger.InteropNamespace: Microsoft.VisualStudio.Debugger.Interop

Assembly : Microsoft.VisualStudio.Debugger.Interop.dllAssembly: Microsoft.VisualStudio.Debugger.Interop.dll

ExempleExample

Cet exemple montre comment obtenir la première visionneuse personnalisée à partir d’une propriété, si cette propriété a les visionneuses personnalisées.This example shows how to get the first custom viewer from a property if that property has any custom viewers.

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 aussiSee Also

Interfaces de base Core Interfaces
GetCustomViewerList GetCustomViewerList
Programmes d’assistance du Kit de développement logiciel pour le débogage SDK Helpers for Debugging
IDebugProperty3IDebugProperty3