IVsProject.GetItemContext(UInt32, IServiceProvider) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.