Udostępnij za pośrednictwem


Metoda IVsProject.GetItemContext — (UInt32, IServiceProvider)

 

Zwraca kontekst elementu.

Przestrzeń nazw:   Microsoft.VisualStudio.Shell.Interop
Zestaw:  Microsoft.VisualStudio.Shell.Interop (w Microsoft.VisualStudio.Shell.Interop.dll)

Składnia

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

Parametry

  • itemid
    Type: System.UInt32

    [in] Identyfikator elementu kontekstu, którego wartość jest pobierana z VSITEMIDDWORD.

Wartość zwracana

Type: System.Int32

Jeśli metoda zakończy się pomyślnie, zwraca S_OK. Jeśli nie, zwraca kod błędu.

Uwagi

Podpis COM

Z vsshell.idl:

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

Ta metoda umożliwia projektu do udostępniania usług kontekstu projektu Edytor dokumentów. Jeśli projekt nie jest konieczne świadczenia usług specjalne do jego elementów, a następnie powinna zwrócić null. W żadnym wypadku nie powinien znów IServiceProvider wskaźnika, który został przekazany do pakietu ze środowiska za pośrednictwem SetSite. Usługi globalne zostanie automatycznie udostępniane edytory.

Poniższy przykład daje bardziej szczegółowo w kontekście projektu usług świadczonych przez GetItemContext metody.

Przykłady

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

Zobacz też

Interfejs IVsProject
Przestrzeń nazw Microsoft.VisualStudio.Shell.Interop

Powrót do początku