Pole a rozhraní okna Vlastnosti
Model pro výběr k určení informací zobrazených v okně Vlastnosti je založen na okně, které má fokus v integrovaném vývojovém prostředí ( IDE). Každé okno a objekt ve vybraném okně mohou mít kontextový objekt výběru vložený do globálního kontextu výběru. Prostředí aktualizuje kontext globálního výběru hodnotami z rámečku okna, když má toto okno fokus. Když se fokus změní, provede se tak kontext výběru.
Sledování výběru v integrovaném vývojovém prostředí
Rám okna nebo web vlastněný integrovaným vývojovém prostředím (IDE) má službu s názvem STrackSelection. Následující kroky ukazují, jak se změna výběru způsobená změnou fokusu na jiné otevřené okno nebo výběrem jiné položky projektu v Průzkumník řešení implementuje změnu obsahu zobrazeného v okně Vlastnosti.
Objekt vytvořený v balíčku VSPackage, který je v lokalitě ve vybraných voláních QueryService okna vyvolat ITrackSelectionSTrackSelection .
Kontejner výběru, který poskytuje vybrané okno, vytvoří vlastní ISelectionContainer objekt. Když se výběr změní, zavolá OnSelectChange balíček VSPackage, který upozorní všechny naslouchací procesy v prostředí, včetně okna Vlastnosti , o změně. Poskytuje také přístup k hierarchii a informacím o položkách souvisejících s novým výběrem.
Volání OnSelectChange a předání vybraných položek hierarchie v parametru
VSHPROPID_BrowseObject
ISelectionContainer naplní objekt.Objekt odvozený z rozhraní IDispatch je vrácen pro __VSHPROPID. VSHPROPID_BrowseObject požadované položky a prostředí ji zabalí do ( ISelectionContainer viz následující krok). Pokud volání selže, prostředí provede druhé volání
IVsHierarchy::GetProperty
a předá ho kontejneru výběru __VSHPROPID. VSHPROPID_SelContainer, že položka hierarchie nebo položky poskytují.Váš projekt VSPackage se nevytvoříISelectionContainer, protože balíček VSPackage zadaného prostředí, který ho implementuje (například Průzkumník řešení) konstruktorů ISelectionContainer za něj.
Prostředí vyvolá metody ISelectionContainer získání objektů na
IDispatch
základě rozhraní k vyplnění okna Vlastnosti .Když se změní hodnota v okně Properties , VSPackages implementuje
IVsTrackSelectionEx::OnElementValueChangeEx
aIVsTrackSelectionEx::OnSelectionChangeEx
hlásí změnu hodnoty elementu. Prostředí pak vyvolá IVsUIShell nebo IConnectionPointContainer zachová informace zobrazené v okně Vlastnosti synchronizované s hodnotami vlastností. Další informace naleznete v části Aktualizace hodnot vlastností v okně Vlastnosti.Kromě výběru jiné položky projektu v Průzkumník řešení k zobrazení vlastností souvisejících s danou položkou můžete také zvolit jiný objekt z okna formuláře nebo dokumentu pomocí rozevíracího seznamu dostupného v okně Vlastnosti. Další informace naleznete v tématu Vlastnosti okno Seznam objektů.
Můžete změnit způsob zobrazení informací v mřížce okna Vlastnosti z abecedy na kategorický a pokud je k dispozici, můžete také otevřít stránku vlastností pro vybraný objekt kliknutím na příslušná tlačítka v okně Vlastnosti . Další informace naleznete v tématu Tlačítka okna Vlastnosti a stránky vlastností.
Konec okna Vlastnosti také obsahuje popis pole vybraného v mřížce okna Vlastnosti. Další informace naleznete v tématu Získání popisů polí z okna Vlastnosti.
Aktualizace hodnot vlastností v okně Vlastnosti
Okno Vlastnosti lze synchronizovat dvěma způsoby se změnami hodnot vlastností. Prvním je volání IVsUIShell rozhraní, které poskytuje přístup k základním funkcím oken, včetně přístupu k nástrojům a vytváření oken dokumentů poskytovaných prostředím. Tento proces synchronizace popisuje následující kroky.
Aktualizace hodnot vlastností pomocí prostředí IVsUIShell
Aktualizace hodnot vlastností pomocí rozhraní IVsUIShell
Volejte IVsUIShell (prostřednictvím SVsUIShell služby) kdykoli, když balíčky VSPackage, projekty nebo editory potřebují vytvořit nebo vytvořit výčet nástrojů nebo oken dokumentů.
Implementujte RefreshPropertyBrowser , aby bylo okno Vlastnosti synchronizované se změnami vlastností projektu (nebo jakéhokoli jiného vybraného objektu procházeným oknem Vlastnosti ) bez implementace IConnectionPointContainer a aktivaci OnChanged událostí.
IVsHierarchy Implementujte metody AdviseHierarchyEvents a UnadviseHierarchyEvents zakažte v uvedeném pořadí klientské oznámení o událostech hierarchie, aniž by bylo nutné implementovat IConnectionPointContainerhierarchii .
Aktualizace hodnot vlastností pomocí I Připojení ionu
Druhým způsobem, jak zachovat okno Vlastnosti v synchronizaci se změnami hodnoty vlastnosti, je implementovat IConnection
do připojitelného objektu, který označuje existenci odchozích rozhraní. Chcete-li lokalizovat název vlastnosti, odvodit objekt z ICustomTypeDescriptor. Implementace ICustomTypeDescriptor může upravit popisovače vlastnosti, které vrací, a změnit název vlastnosti. Chcete-li lokalizovat popis, vytvořte atribut, který je odvozen z DescriptionAttribute vlastnosti Popis a přepsán.
Důležité informace o implementaci rozhraní I Připojení ion
IConnection
poskytuje přístup k dílčímu objektu enumerátoru IEnumConnectionPoints pomocí rozhraní. Poskytuje také přístup ke všem dílčím objektům spojovacího bodu, z nichž každý implementuje IConnectionPoint rozhraní.Za implementaci IPropertyNotifySink události zodpovídá jakýkoli objekt procházení. Okno Vlastnosti bude radit pro událost nastavenou prostřednictvím
IConnection
.Spojovací bod řídí, kolik připojení (jeden nebo více) umožňuje v jeho implementaci Advise. Spojovací bod, který umožňuje, aby se z EnumConnections metody vrátilo E_NOTIMPL pouze jedno rozhraní.
Klient může volat
IConnection
rozhraní pro získání přístupu k dílčímu objektu enumerátoru s rozhraním IEnumConnectionPoints . Rozhraní IEnumConnectionPoints se pak dá volat k vytvoření výčtu spojovacích bodů pro každé ID odchozího rozhraní (IID).IConnection
lze také volat pro získání přístupu k dílčím objektům spojovacího bodu s rozhraním IConnectionPoint pro každý odchozí IID. IConnectionPoint Prostřednictvím rozhraní klient spustí nebo ukončí smyčku poradenství s připojitelným objektem a vlastní synchronizací klienta. Klient může také volat IConnectionPoint rozhraní k získání enumerátor objektu IEnumConnections s rozhraním k vytvoření výčtu připojení, o které zná.
Získání popisů polí z okna Vlastnosti
V dolní části okna Vlastnosti se v oblasti popisu zobrazí informace týkající se vybraného pole vlastnosti. Ve výchozím nastavení je tato funkce zapnutá. Pokud chcete skrýt pole popisu, klikněte pravým tlačítkem myši na okno Vlastnosti a klikněte na popis. Tím také odeberete značku zaškrtnutí vedle názvu popisu v okně nabídky. Pole můžete znovu zobrazit podle stejných kroků a znovu zapnout popis .
Informace v poli popisu pocházejí z ITypeInfo. Každá metoda, rozhraní, coclass atd. může mít v knihovně typů nelokalizovaný helpstring
atribut. Okno Vlastnosti načte řetězec z GetDocumentation.
Určení lokalizovaných řetězců nápovědy
helpstringdll
Přidejte atribut do příkazu knihovny v knihovně typů (typelib
).Poznámka:
Tento krok je volitelný, pokud je knihovna typů v souboru knihovny objektů (.olb).
Zadejte
helpstringcontext
atributy pro řetězce. Můžete také zadathelpstring
atributy.Tyto atributy se liší od
helpfile
atributů,helpcontext
které jsou obsaženy ve skutečných tématech nápovědy k souboru .chm.Chcete-li načíst informace o popisu, které se mají zobrazit pro zvýrazněný název vlastnosti, okno Vlastnosti volá GetDocumentation2 vybranou vlastnost a určuje požadovaný
lcid
atribut pro výstupní řetězec. Interně ITypeInfo2 vyhledá soubor .dll zadaný v atributuhelpstringdll
a voláDLLGetDocumentation
tento soubor .dll se zadaným kontextem alcid
atributem.Podpis a implementace
DLLGetDocumentation
jsou:
STDAPI DLLGetDocumentation
(
ITypeLib * /* ptlib */,
ITypeInfo * /* ptinfo */,
LCID /* lcid */,
DWORD dwCtx,
BSTR * pbstrHelpString
);
Funkce DLLGetDocumentation
musí být export definovaný v souboru .def pro knihovnu DLL.
Interně se vytvoří soubor .olb, který je ve skutečnosti dll. Tato knihovna DLL obsahuje jeden prostředek, soubor knihovny typů (.tlb) a jednu exportovanou funkci . DLLGetDocumentation
V případě souborů .olb je atribut volitelný, helpstringdll
protože je to stejný soubor, který obsahuje samotný soubor .tlb.
Pokud chcete získat řetězce, které se mají zobrazit v podokně Popisy , je proto nutné zadat helpstring
atribut v knihovně typů. Pokud chcete, aby byly tyto řetězce lokalizovány, musíte zadat helpstringdll
(volitelné) atribut a helpstringcontext
(povinné) atribut a implementovat DLLGetDocumentation
.
Neexistují žádná další rozhraní, která je třeba implementovat při získávání lokalizovaných informací prostřednictvím atributu helpstringcontext
idl a DLLGetDocumentation
.
Dalším způsobem získání lokalizovaného názvu a popisu vlastnosti je implementace GetLocalizedPropertyInfo. Další informace o implementaci této metody naleznete v tématu Vlastnosti okna Pole a rozhraní.