Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Közvetlen manipuláció API-k segítségével nagyszerű pásztázási, nagyítási és húzási felhasználói élményt hozhat létre. Ehhez feldolgozza az érintéses bemenetet egy régión vagy objektumon, kimeneti átalakításokat hoz létre, és alkalmazza az átalakításokat a felhasználói felület elemeire. A közvetlen manipulációval optimalizálhatja a válaszképességet, és csökkentheti a késést a szálon kívüli bemeneti feldolgozás, az opcionális szálon kívüli bemeneti találatok tesztelése és a bemeneti/kimeneti előrejelzés révén.
Minden olyan alkalmazás, amely közvetlen manipulációt használ az érintéses interakciók feldolgozására, megjeleníti a Windows 8-at, és az interakciók visszajelzési viselkedését, amelyek megfelelnek a általános felhasználói interakciókra vonatkozó irányelveknek.
Fejlesztői célközönség
A Direct Manipulation API olyan tapasztalt fejlesztők számára készült, akik ismerik a C/C++-t, jól ismerik a Component Object Model (COM), és ismerik a Windows programozási fogalmait.
Futásidejű követelmények
A Közvetlen manipulációt a Windows 8-ban vezették be. A 32 bites és a 64 bites verziókban is megtalálható.
Miért érdemes a DirectManipulationt használni?
Az interakciókat egyszerű és konzisztens módon kezeli
A közvetlen manipuláció egy régió vagy objektum viselkedésének és interakcióinak előre deklarálásával működik. Egy weblap például gyakran van konfigurálva pásztázásra és nagyításra. Futásidőben a bemenet ezután egy egyszerű API-híváson keresztül társítva lesz ehhez a régióhoz/objektumhoz. Ettől a ponttól kezdve a Közvetlen manipuláció elvégzi a bemenet feldolgozásának, a kényszerek és a személyiség alkalmazásának, valamint a kimeneti átalakítások generálásának minden nehéz emelését.
Rugalmas érintéses alkalmazások létrehozása
A válaszidő optimalizálása és a késés minimalizálása érdekében a közvetlen manipulációs feldolgozás a felhasználói felületi száltól független, különálló szálon történik. Ennek eredményeképpen a kimeneti átalakítások párhuzamosan futhatnak a felhasználói felületen végzett tevékenységekkel. A felhasználói felületi szál tevékenységei közé tartozhat az alkalmazáslogika, a renderelés, az elrendezés és bármi más, amely ciklusokat használ fel a processzoron.
A megvalósítás rugalmassága
A Közvetlen manipuláció felületeinek átfogó támogatást nyújtanak a bemenetek kezeléséhez, az interakciók felismeréséhez, a visszajelzési értesítésekhez és a felhasználói felület frissítéséhez. Az interfészek olyan rendszerszolgáltatásokat is tartalmaznak, mint például DirectComposition.
Alapfogalmak
A legalapvetőbb közvetlen manipulációs implementáció egy nézetport, tartalom, valamint interakciók. A viewport olyan régió, amely képes fogadni és feldolgozni a felhasználói interakciókból származó bemeneteket. A végfelhasználó számára látható tartalom régiója is. A tartalom az a tényleges objektum, amelyet a végfelhasználók láthatnak, és amely a felhasználói interakciókra reagálva mozog vagy méretezhető. A közvetlen manipuláció által támogatott elsődleges felhasználói (más néven manipulációk) pásztázó és nagyító műveletek. Ezek az interakciók fordítási vagy skálázási átalakítást alkalmaznak a nézetporton belüli tartalomra. Több nézetport (mindegyik saját tartalommal) konfigurálható egyetlen ablakban, hogy gazdag felhasználói felületet hozzon létre.
Ez az ábra egy alapszintű közvetlen manipulációs implementációt mutat be a pásztázás előtt és után.
A közvetlen manipuláció inicializálása során a DCompDirectManipulationCompositor objektum példányosítva van, és közvetlen manipulációhoz van társítva. Ez az objektum egy burkoló DirectCompositionkörül, amely a rendszerkomposztátor. Az objektum feladata a kimeneti átalakítások alkalmazása és a vizualizációfrissítések vezetése.
A névjegyek a WM/_POINTERDOWN üzenetben megadott mutatóazonosítója által azonosított érintési pontot jelölik. Amikor WM_POINTERDOWN üzenet érkezik, az alkalmazás meghívja SetContact. Az alkalmazás értesíti a közvetlen manipulációt a kezelendő névjegyekről, valamint a névjegyekre reagáló nézetport(ok)ról. A billentyűzet- és egérbemenet speciális pointerId értékekkel rendelkezik, így a közvetlen kezeléssel megfelelően kezelhetők.
A fenti alapesetben, amikor SetContact néhány dolognak nevezzük:
- Amikor a felhasználó pásztázást végez, a rendszer egy WM/_POINTERCAPTURECHANGED üzenetet küld az alkalmazásnak, amely értesíti, hogy a partnert a közvetlen manipuláció használta fel.
- Amikor a felhasználó áthelyezi az áthelyezéseket, a nézetport aktiválja a DirectComposition burkoló által használt frissítési eseményeket, hogy vizuális frissítéseket vezessen a képernyőre. Egy nézetportban pásztázó felhasználó számára a tartalom úgy tűnik, hogy zökkenőmentesen mozog a partner alatt.
- Amikor a felhasználó felemeli a névjegyet, a felhasználó azt látja, hogy a tartalom tovább mozog, miközben tehetetlenségi animációvá változik, fokozatosan lassítva, amíg el nem éri a végső pihenőhelyet.
Billentyűzet- és egérbemenet feldolgozása
A közvetlen manipuláció lehetővé teszi a billentyűzet- és egérüzenetek manuális továbbítását az alkalmazás felhasználói felületi száláról a ProcessInput API-val, hogy azok a közvetlen manipulációval megfelelően kezelhetők legyenek.
DirectManipulation és a HWND
A közvetlen manipuláció egy Win32 HWND-hez van társítva az adott ablak mutatójának bemeneti üzeneteinek fogadásához és feldolgozásához. Mivel a Közvetlen manipuláció kiszámítja a kimeneti értékeket, aszinkron visszahívásokat végez a közvetlen manipulációs komponensobjektum-modell (COM) az alkalmazásban implementált objektumokra. Ezek a visszahívások tájékoztatják az alkalmazást az objektumokra alkalmazott átalakításról. A közvetlen manipuláció a megadott HWND-n aktiválódik a Aktiválásmeghívásával.