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.
Ten przegląd architektury zawiera kontekst interfejsu API Windows Touch dla technologii tabletu i dotyku oraz wyjaśnia, jak pasuje do większej architektury systemu Windows 7.
Komunikaty dla funkcji wprowadzania i gestów dotyku systemu Windows
Funkcje wiadomości dla Windows Touch są włączane przez nasłuchiwanie i interpretowanie komunikatów podczas wykonywania. Poniższa ilustracja przedstawia sposób generowania komunikatów ze sprzętu i wysyłanych do aplikacji przez system Windows 7.
W lewej kolumnie ilustracji sprzęt z uwzględnieniem dotyku odbiera dane wejściowe od użytkownika. Sterownik komunikuje się następnie między sprzętem a systemem operacyjnym. Następnie system operacyjny generuje komunikat WM_TOUCH lub WM_GESTURE, który następnie jest wysyłany do HWND aplikacji. Następnie aplikacja aktualizuje interfejs użytkownika, biorąc pod uwagę informacje hermetyzowane w komunikacie.
Aplikacje domyślnie odbierają gesty. Jeśli aplikacja nie zarejestruje się dla komunikatów wejściowych Windows Touch za pomocą funkcji RegisterTouchWindow, system Windows tworzy powiadomienia dotyczące gestów (WM_GESTURE komunikatów) i wysyła je do tego okna aplikacji. Jeśli okno aplikacji rejestruje się w celu odbierania komunikatów dotykowych, powiadomienia dotyczące danych wejściowych Windows Touch (WM_TOUCH komunikaty) są wysyłane do tego okna aplikacji. Windows Touch i komunikaty gestów są zachłanne w tym sensie, że po naciśnięciu lub rozpoczęciu gestu w oknie aplikacji, wszystkie komunikaty są wysyłane do tej aplikacji aż do momentu ukończenia gestu lub głównego dotyku.
W przypadku starszej obsługi system Windows interpretuje komunikaty WM_GESTURE, jeśli są bąbelkowe, a następnie wysyła lub publikuje odpowiednie komunikaty mapowane na gest. Aby uniknąć przerywania obsługi starszych wersji, upewnij się, że przesyłasz dalej komunikaty WM_GESTURE przy użyciu DefWindowProc. Więcej informacji na temat starszej wersji pomocy technicznej można znaleźć w sekcji Omówienie gestów dotykowych systemu Windows.
Manipulacje i inercja
Programiści Windows Touch muszą mieć możliwość interpretowania gestów z wielu źródeł w sposób zrozumiały dla gestu. Firma Microsoft udostępnia interfejs API manipulowania do wykonywania tych obliczeń. Manipulacje to zasadniczo gesty z wartościami skojarzonymi z nimi, które opisują cały gest. Po połączeniu danych wejściowych z procesorem manipulowania można pobrać informacje istotne dla działania wprowadzonego przez użytkownika w obiekcie. Na poniższej ilustracji przedstawiono jeden ze sposobów użycia manipulacji.
W lewym górnym rogu ilustracji użytkownik dotknął ekranu, który tworzy komunikaty dotykowe. Te komunikaty zawierają współrzędną x i współrzędną y, która służy do określania obiektu, który znajduje się w fokusie. Obiekt w fokusie zawiera procesor manipulowania. Następnie w komunikacie WM_TOUCH z flagą TOUCHEVENTF_UP zaznaczany jest obiekt będący w centrum uwagi użytkownika, procesor manipulowania jest przywoływany, a komunikat jest wysyłany do procesora manipulowania. Kolejne WM_TOUCH komunikaty skojarzone z tym kontaktem są wysyłane do procesora manipulacji do momentu odebrania komunikatu WM_TOUCH z flagą TOUCHEVENTF_UP, a wybrany obiekt zostanie dereferencjonowany. W dolnej prawej części ilustracji do obsługi zdarzeń manipulacji używa się ujścia zdarzeń manipulacji, które implementuje interfejs _IManipulationEvents. Zdarzenia te są wywoływane, gdy tworzone są komunikaty dotykowe. Obsługiwacz zdarzeń może aktualizować interfejs na podstawie zdarzeń manipulacji, gdy one zachodzą.
W aplikacjach Windows Touch często uwzględnia się prostą fizykę, dzięki czemu obiekty płynnie przychodzą do zatrzymania, a nie nagle zatrzymują się, gdy nie są już dotykane. Firma Microsoft udostępnia interfejs API inercji do wykonywania obliczeń dla tych prostych fizyki, dzięki czemu aplikacja może zachowywać się w sposób podobny do innych aplikacji. Pozwala to również zaoszczędzić nakład pracy wymagany do tworzenia niezawodnych funkcji fizyki. Na poniższej ilustracji pokazano, jak można użyć inercji.
Zwróć uwagę na podobieństwa między bezwładnością a manipulacją. Jedyną różnicą między nimi jest to, że w przypadku inercji komunikaty interpretowane są przekazywane do procesora inercji, a nie do procesora manipulacji, a procesor inercji podnosi zdarzenia. W lewym górnym rogu ilustracji w komunikacie WM_TOUCH z flagą TOUCHEVENTF_UP komunikaty dotykowe są używane do identyfikowania obiektu w fokusie, który zawiera procesor inercji i procesor manipulowania. Kolejne komunikaty WM_TOUCH są wysyłane do procesora manipulowania, a procesor manipulowania wykonuje aktualizacje interfejsu użytkownika aplikacji. Po zakończeniu manipulacji wartości prędkości manipulacji są używane do konfigurowania procesora inercji. Jak pokazano w środkowej kolumnie, metoda Process lub ProcessTime jest wywoływana na interfejsie IInertiaProcessor za pomocą czasomierza lub innej pętli w osobnym wątku, dopóki wywołania nie wskażą, że procesor zakończył przetwarzanie. Podczas wykonywania tych wywołań zostają wywoływane zdarzenia manipulacji, które są obsługiwane przez odbiornik zdarzeń manipulacji na podstawie interfejsu _IManipulationEvents. W prawej dolnej części ilustracji ten kolektor zdarzeń dokonuje aktualizacji interfejsu użytkownika aplikacji na podstawie zdarzeń manipulacyjnych, gdy wystąpią, za pośrednictwem procedur obsługi zdarzeń w kolektorze zdarzeń.
Tematy pokrewne