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.
ppSP
Type: Microsoft.VisualStudio.OLE.Interop.IServiceProvider[out] Wskaźnik do IServiceProvider interfejsu.
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