IVsProject2.GetItemContext(UInt32, IServiceProvider) Yöntem

Tanım

Bir öğenin bağlamını döndürür.

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

Parametreler

itemid
UInt32

'ndaki Değeri öğesinden alınan bağlam öğesinin tanımlayıcısı VSITEMID DWORD .

ppSP
IServiceProvider

dışı IServiceProvider Arabirim işaretçisi.

Döndürülenler

Int32

Yöntem başarılı olursa, döndürür S_OK . Başarısız olursa, bir hata kodu döndürür.

Uygulamalar

Örnekler

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

Açıklamalar

COM Imzası

Vsshell. IDL dosyasından:

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

Bu yöntem, bir projenin bir belge düzenleyicisine proje bağlamı hizmetleri sağlamasına izin verir. Projenin öğelerine özel hizmetler sağlaması gerekmiyorsa, döndürmelidir null . Hiçbir koşul olmadığında IServiceProvider , üzerinden pakete geçirilen işaretçiyi döndürmelisiniz SetSite . Küresel hizmetler otomatik olarak düzenleyicilerle kullanıma sunulacaktır.

Aşağıdaki örnek, yöntemi tarafından sunulan proje bağlam hizmetleri hakkında daha fazla ayrıntı sağlar GetItemContext .

Şunlara uygulanır