Partager via


ViewFilter.ShowContextMenu, méthode (Int32, Guid, IOleCommandTarget)

Gère la commande d'SHOWCONTEXTMENU de montrer un menu contextuel.

Espace de noms :  Microsoft.VisualStudio.Package
Assembly :  Microsoft.VisualStudio.Package.LanguageService (dans Microsoft.VisualStudio.Package.LanguageService.dll)

Syntaxe

'Déclaration
Public Overridable Sub ShowContextMenu ( _
    menuId As Integer, _
    groupGuid As Guid, _
    target As IOleCommandTarget _
)
public virtual void ShowContextMenu(
    int menuId,
    Guid groupGuid,
    IOleCommandTarget target
)

Paramètres

  • menuId
    Type : System.Int32
    [in] L'IDENTIFICATEUR du menu à montrer.
  • groupGuid
    Type : System.Guid
    [in] GUID du groupe de menus à partir duquel l'IDENTIFICATEUR de menu est pris.

Remarques

Cette méthode est appelée pour gérer un menu contextuel dans l'affichage en cours.Cela fournit une possibilité d'afficher votre propre menu contextuel ou de modifier le menu existant et de le montrer.

La méthode de base est appelée avec menuID d'IDM_VS_CTXT_CODEWIN, groupGuid d'guidSHLMainMenu, et target de l'interface d'IOleCommandTarget implémentée dans la classe d'ViewFilter.La méthode de base détermine si des macros ne sont pas enregistrées puis montre le menu contextuel.

Exemples

Voici comment la classe d'ViewFilter de base implémente cette méthode.

using System;
using Microsoft.VisualStudio.OLE.Interop;
using Microsoft.VisualStudio.Shell;

namespace Microsoft.VisualStudio.Package
{
    [CLSCompliant(false)]
    [System.Runtime.InteropServices.ComVisible(true)]
    public class ViewFilter :
        IVsTextViewFilter,
        IVsTextViewEvents,
        IOleCommandTarget,
        IDisposable
    {
        public virtual void ShowContextMenu(int menuId,
                                            Guid groupGuid,
                                            IOleCommandTarget target)
        {
            IVsUIShell uiShell = this.service.GetService(typeof(SVsUIShell)) as IVsUIShell;
            // disable context menu while recording macros.
            if (uiShell != null && !this.service.IsMacroRecordingOn())
            {
                System.Drawing.Point pt = System.Windows.Forms.Cursor.Position;
                POINTS[] pnts = new POINTS[1];
                pnts[0].x = (short)pt.X;
                pnts[0].y = (short)pt.Y;
                int hr = uiShell.ShowContextMenu(0, ref groupGuid, menuId, pnts, target);
                if (hr < 0)
                {
                    Debug.Assert(false, "uiShell.ShowContextMenu returned " + hr);
                }
            }
            uiShell = null;
        }
    }
}

Sécurité .NET Framework

Voir aussi

Référence

ViewFilter Classe

ShowContextMenu, surcharge

Microsoft.VisualStudio.Package, espace de noms