Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak utworzyć kontener kontrolny, który może hostować bezokienkowe kontrolki Microsoft ActiveX implementujące funkcje Microsoft Active Accessibility. Wykonując kroki opisane tutaj, możesz upewnić się, że wszystkie kontrolki bezokienne oparte na technologii Microsoft Active Accessibility, które są hostowane w kontenerze kontrolek, są dostępne dla aplikacji klienckich technologii wspomagającej (AT).
Co musisz wiedzieć
Technologie
Warunki wstępne
- C/C++
- Programowanie Microsoft Win32 i modelu obiektów składników (COM)
- Kontrolki ActiveX bez okien
- Serwery Microsoft Active Accessibility
Instrukcje
Krok 1: Podaj główny interfejs IAccessible w imieniu kontrolki pozbawionej okna.
Za każdym razem, gdy system potrzebuje wskaźnika IAccessible dla korzenia kontrolki bez okna, system wysyła zapytanie do kontenera kontrolki. Aby pobrać wskaźnik, kontener wywołuje implementację metody IServiceProvider::QueryService dla kontrolki bez okna.
Jeśli kontener sterowania ma implementację Microsoft Active Accessibility, może zwrócić wskaźnik IAccessible kontrolki pozbawionej okien do systemu.
Jeśli kontener sterowania ma implementację automatyzacji interfejsu użytkownika firmy Microsoft, wywołaj funkcję UiaProviderFromIAccessible w celu uzyskania wskaźnika interfejsu IRawElementProviderSimple, który reprezentuje kontrolkę, a następnie zwróć wskaźnik interfejsu IRawElementProviderSimple do systemu.
Krok 2. Odpowiadanie na komunikat WM_GETOBJECT w imieniu kontrolki bez okna.
Gdy aplikacja kliencka reaguje na element WinEvent zgłoszony przez kontrolkę bez okna, kontener sterowania otrzymuje komunikat WM_GETOBJECT w imieniu kontrolki. Komunikat zawiera identyfikator obiektu kontrolki pozbawionej okienka, która wywołała zdarzenie.
Kontener sterowania odpowiada, wyszukując kontrolkę bez interfejsu okiennego, która jest właścicielem identyfikatora obiektu, a następnie wywołując metodę tej kontrolki IAccessibleHandler::AccessibleObjectFromID. Metoda AccessibleObjectFromID zwraca wskaźnik interfejsu IAccessible dla elementu interfejsu użytkownika, a kontener sterowania zwraca wskaźnik do systemu, który przekazuje go do aplikacji klienckiej.
Krok 3. Implementowanie interfejsu IAccessibleWindowlessSite.
Zaimplementuj metodę IAccessibleWindowlessSite::GetParentAccessible.
Gdy aplikacja kliencka potrzebuje informacji o ułatwieniach dostępu dotyczących nadrzędnego dostawcy głównego kontrolki bez okien, system wywołuje metody IAccessible::get_accParent kontrolki bez okien. Kontrolka odpowiada, wywołując metodę IAccessibleWindowlessSite::GetParentAccessible, która udostępnia wskaźnik IAccessible nadrzędnego kontrolki bezokiennej.
Zaimplementuj metody IAccessibleWindowlessSite::AcquireObjectIdRange, QueryObjectIdRangeoraz ReleaseObjectIdRange.
Kontener sterowania musi obsługiwać mapowanie zakresów identyfikatorów obiektów na kontrolki bez okien. Mapowanie umożliwia kontenerowi sterowania zidentyfikowanie kontrolki, która powinna odpowiadać na określone żądanie dla identyfikatora obiektu. Poniższa tabela przedstawia przykład mapowania zakresów identyfikatorów obiektów na kontrolki bez okien.
Podstawa zakresu Rozmiar zakresu Kontrola 1000 500 Kontrolka 1 1500 1000 Kontrolka 2 2500 2000 Kontrolka 1 Kontener sterowania musi obsługiwać mapowanie zakresów identyfikatorów obiektów na kontrolki bez okien dla siebie i wszystkich elementów podrzędnych bez okien. Zakresy identyfikatorów obiektów nie muszą sąsiadować ze sobą. Ponadto, aby uniknąć ataków typu "odmowa usługi", kontener kontroli może umieścić limity liczby zakresów przyznanych konkretnej kontroli. Jednak warto zezwolić na więcej niż jeden zakres dla kontrolki, aby umożliwić jej rozwój.
Krok 4. Opcjonalnie: zaimplementuj interfejs IAccessibleHostingElementProviders.
Zaimplementuj interfejs IAccessibleHostingElementProviders, jeśli kontener sterowania ma implementację serwera Microsoft Active Accessibility, a serwer jest korzeniem drzewa dostępności, które zawiera kontrolki ActiveX bez okien, które obsługują automatyzację interfejsu użytkownika. Interfejs IAccessibleHostingElementProviders ma jedną metodę, GetEmbeddedFragmentRoots, która pobiera IRawElementProviderFragmentRoot wskaźniki interfejsu wszystkich kontrolek ActiveX bez okien automatyzacji interfejsu użytkownika hostowanych przez kontener sterowania.
Tematy pokrewne