IVsProject.GetItemContext(UInt32, IServiceProvider) Methode

Definition

Gibt den Kontext eines Elements zurück.

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

Parameter

itemid
UInt32

[in] Bezeichner des Kontextelements, dessen Wert aus dem VSITEMIDDWORD übernommen wird.

ppSP
IServiceProvider

[out] Zeiger auf die IServiceProvider-Schnittstelle.

Gibt zurück

Int32

Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Bei einem Fehler wird ein Fehlercode zurückgegeben.

Beispiele

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

Hinweise

COM-Signatur

Aus vsshell. idl:

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

Diese Methode ermöglicht es einem Projekt, Projektkontext Dienste für einen Dokument-Editor bereitzustellen. Wenn das Projekt keine besonderen Dienste für seine Elemente bereitstellen muss, sollte es zurückgeben null . Unter keinen Umständen sollten Sie den Zeiger zurückgeben IServiceProvider , der von der Umgebung über an das Paket übermittelt wurde SetSite . Die globalen Dienste werden automatisch den Editoren zur Verfügung gestellt.

Im folgenden Beispiel werden die von der-Methode bereitgestellten Projektkontext Dienste ausführlicher erläutert GetItemContext .

Gilt für