Freigeben über


Gewusst wie: Erstellen Sie benutzerdefinierte Toolboxelemente für die Verwendung von Interop-Assemblys bereit

Hinweis

Es wird empfohlen, benutzerdefinierte Steuerelement der Toolbox hinzufügen, die Toolbox-Steuerelementvorlagen zu verwenden, die mit dem Visual Studio 10 SDK enthalten sind.In diesem Thema wird nur aus Gründen der Abwärtskompatibilität und für das Hinzufügen von vorhandenen Steuerelementen zur Toolbox beibehalten.

Weitere Informationen zum Erstellen von Toolbox Steuerelemente, indem Sie die Vorlagen verwenden, finden Sie unter Gewusst wie: Erstellen Sie ein Toolbox-Steuerelement, die Windows Forms verwendet und Gewusst wie: Erstellen Sie ein Toolbox-Steuerelement, die WPF verwendet.

VSPackage auf Grundlage einer Interop-Assembly kann Visual Studio Funktionen erweiternToolbox mithilfe von ActiveX-Steuerelementen hinzugefügt wird.

Eine Liste der Standard- Visual Studio Toolbox-Zwischenablageformaten finden Sie unter Toolbox (Visual Studio SDK).

Weitere Informationen zum Toolbox mit Visual Studio SDKverwalteten VSPackages finden Sie unter Die Toolbox verwalten.

Weitere Informationen zum Verwalten Toolbox durch Automatisierung finden Sie unter Gewusst wie: Steuern der Toolbox.

Arbeitsschritte

Die Elemente, die auf Toolbox hinzugefügt werden, sind die Standard- Toolbox Zwischenablageformate implementieren, es sei denn, ein VSPackage, die die Elemente hinzufügt, wenn ein Toolboxelement Gewähren der Hersteller — Implementierungen für das neue Format auftritt.

So implementieren Sie die Toolbox

  • Ein Toolboxelement, das von einem VSPackage bereitgestellt wurde, implementierte in nicht verwaltetem Code muss entweder ein IDataObject-Objekt implementieren oder ein ActiveX-Steuerelement sein — Argument die Umgebung ein IDataObject-Objekt abgerufen werden kann.

    Weitere Informationen zum Implementieren des IDataObject-Objekts, um Toolboxzu unterstützen, finden Sie unter IDataObject, TBXITEMINFOund FORMATETC.

So ASSEMBLY-basierte Interops der Steuerelemente der Toolbox hinzu

  1. Abrufen von Instanzen aus:

    1. IVsToolbox2, das das Hinzufügen von Steuerelementen und Abschnitte (Tabstoppzeichen) Toolbox und das Steuern anderer Aspekte der Toolbox Konfiguration unterstützt.

    2. IVsToolbox3, das Unterstützung für die Lokalisierung und Visual Studio Dauerhaftigkeit Einstellungen bereitstellt.

    Hinweis

    Die IVsToolbox2-Schnittstelle erbt von der IVsToolbox-Schnittstelle.IVsToolbox3 berechnet und nicht aus IVsToolbox2 seine Methoden nicht implementiert.

    IVsToolbox3 und IVsToolbox2 werden abgerufen, indem die QueryService-Methode für das SVsToolbox Dienst aufruft, indem Sie die ID der SID_SVsToolboxverwendet.

    Die Schnittstellen-ID IID_IVSToolbox2 abgerufen werden IVsToolbox2, und die Schnittstellen-ID IID_IVSToolbox3 geben IVsToolbox3zurück.

    Im folgenden Beispiel wird die IVsToolbox2-Schnittstelle mit QueryService und der IVsToolbox3-Schnittstelle abgerufen, indem QueryInterface auf der IVsToolbox2-Schnittstelle aufruft.

    extern CComModule _Module;
    CComPtr<IVsToolbox2> srpTbx2;
    CComPtr<IVsToolbox3> srpTbx3;
    hr = _Module.QueryService(SID_SVsToolbox, IID_IVsToolbox2, (void**) &srpTbx2));
    hr = srpTbx2->QueryInterface( IID_IVsToolbox3, (void **)&srpTbx3)
    
  2. Verwenden Sie Instanzen IVsToolbox2 und der IVsToolbox3-Schnittstellen, um Abschnitte (Tabstoppzeichen) Toolboxund Steuerelemente hinzuzufügen.

    Im Beispiel unten wird eine neue Registerkarte mit einem lokalisierten Namen unter Verwendung der AddTab-Methode hinzugefügt.

    Da dieser lokalisierte Name nicht invariant ist, wird ein nicht-lokalisierter invarianter Name (in diesem Fall L"HTML") durch einen Aufruf der SetIDOfTab-Methode festgelegt.

    Wenn die Registerkarte Toolbox bereits vorhanden ist, gibt AddTab2 E_FAIL zurückgegeben. In diesem Fall wird davon ausgegangen, dass die Registerkarte ordnungsgemäß hinzugefügt wurde, bevor versucht wird, den invarianten Namen abzurufen.

    Wenn eine Registerkarte erfolgreich hinzugefügt wurde, wird ein IDataObjectbasiertes Steuerelement zu Toolboxhinzugefügt. andernfalls wird ein Fehler zurückgegeben.

    CComBSTR sbstrID;
    hr = srpTbx2->AddTab2((WCHAR*)szwDisplayTabName, *pclsidPackage);
    if ( hr == S_OK) {
        sbstrID =L"HTML";
        hr = srpTbx3->SetIDOfTab( (WCHAR*)szwDisplayTabName, sbstrID);
    }else{
        hr = S_OK;
        hr = srpTbx3->GetIDOfTab( (WCHAR*)szwDisplayTabName, &sbstrID );
        
    }
    if ( hr = S_OK){
        hr=srpTbx2->AddItem(tbxItem, &tinfo, bstrLabel);
    }
    return hr;
    

Zusätzlich zum Hinzufügen Toolbox selbst, kann ein VSPackage als Toolbox Datenanbieter konfiguriert werden und kann verwendet werden, um die Unterstützung von Drag & Drop für das Visual Studio IDE zu erweitern. Auf diese Weise können beliebig in Toolbox und Editoren verfügbar gemacht werden Formate Zwischenablage.

So konfigurieren Toolboxelement-Anbieter als VSPackage

  1. Registrieren Sie Interop-basierte VSPackage als Toolboxelement.

    Weitere Informationen zum Registrieren Toolbox als Anbieter finden Sie unter Registrieren von Toolbox-Stütz.

  2. Registrieren benutzerdefinierter Toolbox Zwischenablageformaten unterstützt.

    Interop-basiertes VSPackage, welche Steuerelemente unterstützt, die nicht alle standardmäßigen Toolbox Zwischenablageformate implementieren oder ein benutzerdefiniertes Toolbox Zwischenablageformat implementieren, muss:

    1. Registrieren Sie die Toolbox-Zwischenablageformate, die sie unterstützen. Weitere Informationen finden Sie unter Registrieren von Toolbox-Stütz.

    2. Erstellen Sie eine Klasse, die die IVsToolboxDataProvider und IVsToolboxDataProvider2-Schnittstellen implementiert.

      Hinweis

      Die IVsToolboxDataProvider und IVsToolboxDataProvider2-Schnittstellen dürfen nicht in derselben Klasse implementiert werden, die die IVsPackage-Schnittstelle implementiert.

    3. Informieren Sie programmgesteuert die Toolbox, dass eine bestimmte Implementierung der IVsToolboxDataProvider und Schnittstellen IVsToolboxDataProvider2 Unterstützung für benutzerdefinierte Datenformate entweder mit dem entsprechenden MethodenRegisterDataProvider oder - RegisterDataProviderzulässig.

      Die RegisterDataProvider-Methode aufzurufen ist bei der Implementierung der SetSite-Methode oder der OnCreate-Handlermethode für i. d. R. verwendet, wenn ein VSPackage aktiv ist.

        CComPtr<IVsToolboxDataProviderRegistry> pTB;
        if (SUCCEEDED (hr = pServiceProvider->QueryService(SID_SVsToolboxDataProviderRegistry, IID_IVsToolboxDataProviderRegistry, (PVOID*)&pTB)) && pTB != NULL)
        {
            CustToolboxDataProvider* pDP = new CustToolboxDataProvider;
            if (pDP)
            {
                pDP->AddRef();
                VSCOOKIE dwDPCookie; //UNDONE: pass NULL instead of ptr to the cookie when RegisterDataProvider allows it.
                pTB->RegisterDataProvider((IVsToolboxDataProvider*)pDP, &dwDPCookie);
                pDP->Release();
            }
            else
            {
                hr = E_OUTOFMEMORY;
            }
        }
      

Eine Liste der Standard-Zwischenablageformaten Visual Studio Toolbox finden Sie unter Toolbox (Visual Studio SDK).

Siehe auch

Aufgaben

Erweiterte Toolbox-Steuerentwicklung

Gewusst wie: Steuern der Toolbox

Konzepte

Registrieren von Toolbox-Stütz

Die Toolbox verwalten

Weitere Ressourcen

Toolbox (Visual Studio SDK)

Toolbox-exemplarische Vorgehensweisen