IVsProject.GetItemContext(UInt32, IServiceProvider) Метод

Определение

Возвращает контекст элемента.

public:
 int GetItemContext(System::UInt32 itemid, [Runtime::InteropServices::Out] Microsoft::VisualStudio::OLE::Interop::IServiceProvider ^ % ppSP);
public:
 int GetItemContext(unsigned int itemid, [Runtime::InteropServices::Out] Microsoft::VisualStudio::OLE::Interop::IServiceProvider ^ &  ppSP);
int GetItemContext(unsigned int itemid, [Runtime::InteropServices::Out] Microsoft::VisualStudio::OLE::Interop::IServiceProvider const & & ppSP);
public int GetItemContext (uint itemid, out Microsoft.VisualStudio.OLE.Interop.IServiceProvider ppSP);
abstract member GetItemContext : uint32 * IServiceProvider -> int
Public Function GetItemContext (itemid As UInteger, ByRef ppSP As IServiceProvider) As Integer

Параметры

itemid
UInt32

[in] Идентификатор элемента контекста, значение которого берется из VSITEMIDDWORD.

ppSP
IServiceProvider

[out] Указатель на интерфейс IServiceProvider.

Возвращаемое значение

Int32

Если метод завершается успешно, возвращает значение S_OK. В противном случае функция возвращает код ошибки.

Примеры

//---------------------------------------------------------------------  
// interface: IServiceProvider  
//---------------------------------------------------------------------  
STDMETHODIMP CLangFileNode::QueryService(REFIID guidService, REFIID riid, void** ppv)  
{  
   if (ppv == NULL)  
      return E_INVALIDARG;  

   *ppv = NULL;  

   HRESULT hr = E_NOINTERFACE;  
   if (IsEqualIID(guidService, SID_SVSMDCodeDomProvider))  
   {  
      CComPtr<IVSMDCodeDomCreator> srpCodeDomCreator;  
      hr = _VxModule.QueryService(SID_SVSMDDesignerService,            IID_IVSMDCodeDomCreator, (LPVOID*) &srpCodeDomCreator);  
      if (SUCCEEDED(hr))  
      {  
         CComPtr<IVSMDCodeDomProvider> srpCodeDomProvider;  
         hr = srpCodeDomCreator->CreateCodeDomProvider(GetCVsHierarchy()->GetIVsHierarchy(),GetVsItemID(),&srpCodeDomProvider);  
         if (SUCCEEDED(hr))  
            hr = srpCodeDomProvider->QueryInterface(riid, ppv);  
      }  
   }  
   else if (IsEqualIID(guidService, VxDTE::SID_SVSProjectItem))  
   {  
      CComPtr<VxDTE::ProjectItem> srpProjectItem;  
      hr = GetDTEItem(&srpProjectItem);  
      if (SUCCEEDED(hr))  
         hr = srpProjectItem->QueryInterface(riid, ppv);  
   }  
   else if (IsEqualIID(guidService,             SID_SVSWebReferenceDynamicProperties))  
   {  
   // We only support this service if our parent folder is a web reference folder  
      CLangFolderNode* pFolder = GetFolderParent();  
      if(pFolder && pFolder->IsWebReferenceFolder())  
      {  
         CComPtr<IVSWebReferenceDynamicProperties> srpWebRef;  
         hr = pFolder->GetIVsWebRefDynamicProperties(&srpWebRef);  
         if(SUCCEEDED(hr))  
            hr = srpWebRef->QueryInterface(riid, ppv);  
      }  
   }  
   else if (IsEqualIID(guidService, IID_IVsHierarchy))  
   {  
   // Access to our hierarchy.  
      hr = GetProject()->GetHierarchy()->QueryInterface(riid, ppv);  
   }  
   return hr;  
}  

Комментарии

Подпись COM

Из всшелл. IDL:

HRESULT IVsProject::GetItemContext(  
   [in] VSITEMID itemid,  
   [out] IServiceProvider **ppSP  
);  

Этот метод позволяет проекту предоставлять службы контекста проекта в редакторе документов. Если проекту не требуется предоставлять специальные службы для своих элементов, возвращается значение null . При отсутствии каких-либо обстоятельств возврат IServiceProvider указателя, переданного в пакет из среды, осуществляется с помощью SetSite . Глобальные службы будут автоматически сделаны доступными для редакторов.

Следующий пример предоставляет более подробные сведения о службах контекста проекта, предоставляемых GetItemContext методом.

Применяется к