IVsProject.GetItemContext(UInt32, IServiceProvider) Método

Definição

Retorna o contexto de um item.

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

Parâmetros

itemid
UInt32

no Identificador do item de contexto cujo valor é obtido do VSITEMID DWORD .

ppSP
IServiceProvider

fora Ponteiro para a IServiceProvider interface.

Retornos

Int32

Se o método for bem-sucedido, retornará S_OK. Se falhar, retornará um código de erro.

Exemplos

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

Comentários

Assinatura COM

De VSShell. idl:

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

Esse método permite que um projeto forneça serviços de contexto de projeto a um editor de documento. Se o projeto não precisar fornecer serviços especiais para seus itens, ele deverá retornar null . Sob nenhuma circunstância, você deve retornar o IServiceProvider ponteiro que foi passado para o pacote do ambiente por meio do SetSite . Os serviços globais serão disponibilizados automaticamente para editores.

O exemplo a seguir fornece mais detalhes sobre os serviços de contexto de projeto fornecidos pelo GetItemContext método.

Aplica-se a