IVsProject4.GetItemContext(UInt32, IServiceProvider) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir öğenin bağlamını döndürür.
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
Parametreler
- itemid
- UInt32
'ndaki Değeri öğesinden alınan bağlam öğesinin tanımlayıcısı VSITEMID DWORD .
- ppSP
- IServiceProvider
dışı IServiceProvider Arabirim işaretçisi.
Döndürülenler
Yöntem başarılı olursa, döndürür S_OK . Başarısız olursa, bir hata kodu döndürür.
Uygulamalar
Ö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;
}
Açıklamalar
COM Imzası
Vsshell. IDL dosyasından:
HRESULT IVsProject3::GetItemContext(
[in] VSITEMID itemid,
[out] IServiceProvider **ppSP
);
Bu yöntem, bir projenin bir belge düzenleyicisine proje bağlamı hizmetleri sağlamasına izin verir. Projenin öğelerine özel hizmetler sağlaması gerekmiyorsa, döndürmelidir null . Hiçbir koşul olmadığında IServiceProvider , üzerinden pakete geçirilen işaretçiyi döndürmelisiniz SetSite . Küresel hizmetler otomatik olarak düzenleyicilerle kullanıma sunulacaktır.
Aşağıdaki örnek, yöntemi tarafından sunulan proje bağlam hizmetleri hakkında daha fazla ayrıntı sağlar GetItemContext .