Sdílet prostřednictvím


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.

  1. Objekt vytvořený v balíčku VSPackage, který je v lokalitě ve vybraných voláních QueryService okna vyvolat ITrackSelectionSTrackSelection .

  2. 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.

  3. Volání OnSelectChange a předání vybraných položek hierarchie v parametru VSHPROPID_BrowseObject ISelectionContainer naplní objekt.

  4. 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::GetPropertya 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.

  5. 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 a IVsTrackSelectionEx::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

  1. 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ů.

  2. 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í.

  3. 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

  1. 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í.

  2. Za implementaci IPropertyNotifySink události zodpovídá jakýkoli objekt procházení. Okno Vlastnosti bude radit pro událost nastavenou prostřednictvím IConnection.

  3. 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í.

  4. 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).

  5. 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

  1. 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).

  2. Zadejte helpstringcontext atributy pro řetězce. Můžete také zadat helpstring 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 atributu helpstringdll a volá DLLGetDocumentation tento soubor .dll se zadaným kontextem a lcid 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í.

Viz také