Aracılığıyla paylaş


IVsProject.GetItemContext Yöntem (UInt32, IServiceProvider)

 

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

Ad Alanı:   Microsoft.VisualStudio.Shell.Interop
Derleme:  Microsoft.VisualStudio.Shell.Interop (Microsoft.VisualStudio.Shell.Interop.dll içinde)

Sözdizimi

int GetItemContext(
    uint itemid,
    out IServiceProvider ppSP
)
int GetItemContext(
    unsigned int itemid,
    [OutAttribute] IServiceProvider^% ppSP
)
abstract GetItemContext : 
        itemid:uint32 *
        ppSP:IServiceProvider byref -> int
Function GetItemContext (
    itemid As UInteger,
    <OutAttribute> ByRef ppSP As IServiceProvider
) As Integer

Parametreler

  • itemid
    Type: System.UInt32

    [in] Öğesinden alınan değeri bağlam öğesinin tanıtıcısı VSITEMIDDWORD.

Dönüş Değeri

Type: System.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.

Notlar

COM imza

Vsshell.idl:

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

Bu yöntem, bir belge Düzenleyicisi için proje bağlam hizmetleri sağlamak bir proje sağlar. Proje öğelerinden özel hizmet sağlayan gerekmez sonra döndürmelidir null. Hiçbir koşulda döndürüp döndürmeyeceğini IServiceProvider paketi ortamından geçirildi işaretçi SetSite. Küresel hizmetler otomatik olarak düzenleyicilerine kullanılabilir hale getirilir.

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

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

Ayrıca bkz.

IVsProject Arabirim
Microsoft.VisualStudio.Shell.Interop Ad Alanı

Başa dön