Sdílet prostřednictvím


Přehled architektury

Tento přehled architektury poskytuje kontext pro rozhraní WINDOWS Touch API pro tablety a dotykové ovládání a vysvětluje, jak zapadá do větší architektury Windows 7.

Zprávy pro dotykové ovládání a gesta ve Windows

Funkce zasílání zpráv pro Windows Touch jsou povoleny nasloucháním a interpretací zpráv během provádění. Následující obrázek ukazuje, jak se zprávy generují z hardwaru a odesílají do aplikací systémem Windows 7.

obrázek znázorňující, jak windows 7 odesílá zprávy z hardwaru s vícetouchy do aplikace

V levém sloupci obrázku přijímá hardware citlivý na dotykové ovládání vstup od uživatele. Ovladač pak komunikuje mezi hardwarem a operačním systémem. Dále operační systém vygeneruje WM_TOUCH nebo WM_GESTURE zprávu, která se pak odešle do HWND aplikace. Aplikace pak aktualizuje uživatelské rozhraní vzhledem k informacím zapouzdřených ve zprávě.

Aplikace ve výchozím nastavení přijímají gesta. Pokud aplikace nezaregistruje vstupní zprávy windows Touch pomocí funkce RegisterTouchWindow, jsou oznámení pro gesta (WM_GESTURE zprávy) vytvořena systémem Windows a odeslána do okna aplikace. Pokud se okno aplikace zaregistruje k příjmu dotykových zpráv, budou do tohoto okna aplikace odeslána oznámení pro vstup Windows Touch (zprávyWM_TOUCH). Zprávy Windows Touch a gesta jsou chamtivé v tom smyslu, že po provedení dotyku nebo začátku gesta na okně aplikace se všechny zprávy do této aplikace odesílají, dokud se gesta nebo primární dotyk nedokončí.

U starších verzí windows interpretuje WM_GESTURE zprávy, pokud jsou bublinové, a pak odešle nebo POST příslušné zprávy, které se mapují na gesto. Aby nedošlo k přerušení podpory pro starší verze, ujistěte se, že předáváte zprávy WM_GESTURE pomocí DefWindowProc. Další informace o starších verzích podpory najdete v části Přehled dotykových gest systému Windows.

Manipulace a setrvačnost

Programátoři windows Touch musí být schopni interpretovat gesta z více zdrojů způsobem, který je smysluplný pro gesta, která se provádí. Microsoft poskytuje rozhraní API pro manipulaci s těmito výpočty. Manipulace jsou v podstatě gesta s hodnotami přidruženými k nim, které popisují celé gesto. Po připojení vstupních dat k zpracovateli manipulace můžete načíst informace týkající se akce, kterou uživatel provede s objektem. Následující obrázek ukazuje jeden ze způsobů, jak můžete používat manipulace.

obrázek znázorňující dotykové zprávy windows předávané do procesoru manipulace s objektem, který zpracovává události pomocí rozhraní -imanipulationevents

V levém horním rohu obrázku se uživatel dotkne obrazovky, která vytvoří dotykové zprávy. Tyto zprávy obsahují souřadnici x a souřadnici y, které slouží k určení objektu, který je zaostřen. Objekt v fokusu obsahuje procesor pro manipulaci. Dále se v WM_TOUCH zprávě s příznakem TOUCHEVENTF_UP vybere objekt ve fokusu uživatele, odkazuje se na zpracovatel manipulace a zpráva se odešle do zpracovatele manipulace. Následné WM_TOUCH zprávy spojené s tímto kontaktem jsou odesílány do procesoru manipulace, dokud není přijata WM_TOUCH zpráva s příznakem TOUCHEVENTF_UP a vybraný objekt je odreferencován. V pravé dolní části obrázku se používá zpracovatelský prvek pro události manipulace, který implementuje rozhraní _IManipulationEvents, aby zpracovával události manipulace vyvolané při vytváření dotykových zpráv. Event sink může provádět aktualizace rozhraní na základě manipulačních událostí během jejich provádění.

V aplikacích Windows Touch je běžné začlenit jednoduchou fyziku, aby se objekty plynule zastavily, místo aby se náhle zastavily, když se jich už nedotýkáte. Microsoft poskytuje rozhraní API inertia k provádění výpočtů pro tyto jednoduché fyziky, aby se vaše aplikace mohly chovat podobným způsobem jako jiné aplikace. Ušetří vám to také úsilí potřebné k vytvoření robustních fyzikálních funkcí. Následující obrázek ukazuje, jak můžete použít inertižnost.

ilustrace znázorňující dotykové zprávy windows předávané do rozhraní objektu iinertiaprocessor, které vyvolává události s rozhraním -imanipulationevents

Všimněte si podobností mezi nečinností a manipulací. Jediným rozdílem mezi těmito dvěma je to, že v případě setrvačnosti se interpretované zprávy předávají procesoru setrvačnosti, než procesoru manipulace, a procesor setrvačnosti vyvolá události. V levém horním rohu obrázku se na zprávě WM_TOUCH s příznakem TOUCHEVENTF_UP používají dotykové zprávy k identifikaci objektu v ohnisku, který obsahuje procesor setrvačnosti a manipulační procesor. Následné WM_TOUCH zprávy se odešlou do procesoru pro manipulaci a procesor pro manipulaci provádí aktualizace uživatelského rozhraní aplikace. Po dokončení manipulace se hodnoty rychlosti z manipulace použijí k nastavení procesoru inertia. Jak je znázorněno v prostředním sloupci, Process nebo ProcessTime se metoda volá na IInertiaProcessor rozhraní s použitím časovače nebo jiné smyčky v samostatném vlákně, dokud volání neindikují, že zpracovávání procesoru je dokončeno. Během těchto volání jsou vyvolány události manipulace, které zpracovává jímka událostí manipulace na základě rozhraní _IManipulationEvents. V pravém dolním rohu obrázku tato jímka událostí pak provádí aktualizace uživatelského rozhraní aplikace na základě událostí manipulace s událostmi, ke kterým dochází prostřednictvím obslužných rutin událostí v jímce událostí.

Průvodce programováním