Поделиться через


Практическое руководство. Безопасные пользовательские элементы панели элементов с помощью сборок взаимодействия

Примечание

Рекомендуемый способ добавлять пользовательские элементы управления в панели элементов использовать шаблоны элементов управления панели элементов, поступающие в пакет SDK Visual Studio 10.В этом разделе сохраняется только в целях обратной совместимости и добавить существующие элементы управления в панели элементов.

Дополнительные сведения о создании управления панели элементов с помощью шаблонов см. в разделе Практическое руководство. Создание элемента управления панели элементов является использования Windows Forms и Практическое руководство. Создание элемента управления панели элементов является использования WPF.

VSPackage, основанного на сборке взаимодействия может расширять Visual Studio Панель элементов функции путем добавления элементов управления ActiveX.

Список стандартных Visual Studio Формат буфера обмена в панели элементов см. в разделе Панель элементов (Visual Studio).

Дополнительные сведения о VSPackage управляет Панель элементов использование SDK для Visual Studioсм. Управление панелью элементов.

Дополнительные сведения об управлении Панель элементов с помощью автоматизации см. Практическое руководство. Управление панелью элементов.

Процедуры

Элементы, добавляемые к Панель элементов использовать стандарт Панель элементов Формат буфера обмена, если VSPackage при добавлении элементов не будет работать, как a Панель элементов поставщик элементов - предоставления поддержки реализации для нового формата.

Реализация элемента управления панели элементов

  • A Панель элементов предоставленный элемент VSPackage реализации в неуправляемом коде любой инструмент IDataObject объект или элемент управления ActiveX - от, что среда может получать IDataObject объект.

    Дополнительные сведения о реализации IDataObject объект для поддержки Панель элементовсм. IDataObject" TBXITEMINFOи FORMATETC.

Добавление взаимодействия сборка-основал элементы управления в панель элементов

  1. Получите экземпляры:

    1. IVsToolbox2, который поддерживает добавление элементов управления и partitions (вкладки) Панель элементов мониторинг и другие аспекты Панель элементов конфигурация.

    2. IVsToolbox3, которая обеспечивает поддержку локализации и Visual Studio сохранение параметров.

    Примечание

    Интерфейс IVsToolbox2 наследует от интерфейса IVsToolbox.IVsToolbox3 не является производным от IVsToolbox2 и не реализует его методы.

    IVsToolbox3 и IVsToolbox2 получено вызовом QueryService метод SVsToolbox службу, используя идентификатор службы SID_SVsToolbox.

    Идентификатор интерфейса IID_IVSToolbox2 используется для получения IVsToolbox2и идентификатор интерфейса IID_IVSToolbox3 возвращает IVsToolbox3.

    В примере, приведенном ниже, IVsToolbox2 получен интерфейс с a QueryService и IVsToolbox3 интерфейс путем вызова QueryInterface на IVsToolbox2 интерфейс.

    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. Используйте экземпляров IVsToolbox2 и IVsToolbox3 интерфейсы для добавления табуляции (partitions) и элементов управления Панель элементов.

    В примере, приведенном ниже, добавлена новая вкладка с именем использование локализованных AddTab метод.

    Поскольку это локализованное имя не остается неизменным, нелокализованное имя (в этом случае инвариант L"HTML"задайте вызовом) SetIDOfTab метод.

    Если вкладка панели элементов, уже существует AddTab2 возвращает E_FAIL, в случае которого ожидается вкладку правильно была добавлена, прежде чем будет предпринята попытка получить неизменяемое имя.

    Если вкладка была успешно добавлена, IDataObject- элемент управления добавляется в зависимости от Панель элементов; в противном случае возвращается ошибка.

    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;
    

В дополнение к добавлению к Панель элементов VSPackage, можно настроить как a Панель элементов поставщик данных и могут использоваться для расширения поддержки перетаскивания в Visual Studio интегрированная среда разработки. Это позволяет произвольные форматов буфера обмена, предоставляемый в Панель элементов редакторы.

Настройка VSPackage как поставщик элемента панели инструментов

  1. Зарегистрируйте interop-основанное VSPackage например, a Панель элементов поставщик элемента.

    Дополнительные сведения о регистрации в качестве a Панель элементов поставщик см. в разделе Регистрация функции поддержки панели элементов.

  2. Регистр, как поддержка custom Панель элементов Формат буфера обмена.

    Interop-основанные управления VSPackage, которые не реализуют стандарт, поддерживающий все Панель элементов Формат буфера обмена или реализуют пользовательскую Панель элементов Формат буфера обмена.

    1. Зарегистрируйте форматов буфера обмена в панели элементов, которые они поддерживают. Дополнительные сведения см. в разделе Регистрация функции поддержки панели элементов.

    2. Создание реализации класса IVsToolboxDataProvider и IVsToolboxDataProvider2 интерфейсы.

      Примечание

      IVsToolboxDataProvider и IVsToolboxDataProvider2 интерфейсы не должны быть реализованы в том же классе, который реализует IVsPackage интерфейс.

    3. Программная панель элементов отчета данная конкретная реализация RegisterDataProviderи RegisterDataProvider интерфейсы предоставляют поддержку для пользовательских форматов данных с одним из эквивалентных методов IVsToolboxDataProvider OR IVsToolboxDataProvider2 .

      Вызов RegisterDataProvider метод обычно выполняется путем реализации SetSite метод или OnCreate метод обработчика, если VSPackage станет активным.

        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;
            }
        }
      

Список стандартных Visual Studio Панель элементов Формат буфера обмена, см. в разделе Панель элементов (Visual Studio).

См. также

Задачи

Предварительная разработка элемента управления панели элементов

Практическое руководство. Управление панелью элементов

Основные понятия

Регистрация функции поддержки панели элементов

Управление панелью элементов

Другие ресурсы

Панель элементов (Visual Studio)

Пошаговые руководства панели элементов