> Tech > Activation des fonctionnalités tactiles multipoints de Windows 7

Activation des fonctionnalités tactiles multipoints de Windows 7

Tech - Par iTPro - Publié le 03 octobre 2011
email


Les fonctionnalités tactiles et tactiles multipoints fournissent une approche d’utilisation intuitive du PC et permettent le déclenchement de plusieurs événements simultanément à partir de différents points de contact. Ainsi, des événements complexes correspondant à des gestes sont reconnus par le système d’exploitation ou votre application. Prenez en

compte les implications d’une réponse à de multiples événements et la manière de personnaliser le comportement de l’application en présence de matériel compatible avec l’approche tactile multipoints. Vérifiez que le système comporte un périphérique compatible avec cette fonctionnalité en contrôlant les paramètres SM_DIGITIZER et SM_MAXIMUMTOUCHES :

BYTE digitizerStatus = (BYTE) GetSystemMetrics(
SM_DIGITIZER);
if ((digitizerStatus &
(NID_READY + NID_MULTI_INPUT)) == 0)
//Stack Ready + MultiTouch
{
MessageBox(L"No touch input is currently available.");
}
else
{
BYTE nInputs =
(BYTE) GetSystemMetrics(SM_MAXIMUMTOUCHES);

CString str;
str.Format(
L"Touch input available with %d touch points.",
nInputs);
MessageBox(str);
}

Windows 7 exploite les messages tactiles de bas niveau pour reconnaître le geste et l’envoyer à une fenêtre réceptrice. Votre application peut réagir à six gestes : zoom, panoramique, rotation, pression, tapotement et tapotement avec deux doigts. Il est possible de gérer n’importe quel événement tactile dans votre application MFC en surchargeant la méthode virtuelle correspondante de n’importe quelle classe dérivée de CWnd (comme CMainFrame dans l’exemple suivant) :

BOOL CMainFrame::OnGestureZoom(CPoint ptCenter, long lDelta)
{
if ((m_pCurrentGestureInfo->dwFlags & GF_BEGIN) ==
GF_BEGIN)
{
m_dblZoomRatioStart = lDelta;
m_drawingObject = GetObjectUnderPoint(ptCenter);
}
else if (lDelta != 0)
{
double zoomFactor = (double)(m_dblZoomRatioStart + lDelta)/
m_dblZoomRatioStart;
m_drawingObject.Zoom(zoomFactor, ptCenter.x, ptCenter.y);
m_dblZoomRatioStart += lDelta;
RedrawWindow();
}
return TRUE;
}

Certains gestes ont un comportement hérité lorsqu’ils ne sont pas gérés par le développeur.

Par défaut, la détection de gestes de rotation n’est pas activée. Si votre application souhaite détecter et gérer ce type de geste ou contrôler les événements tactiles reçus en général, appelez CWnd::SetGestureConfig pour chaque fenêtre concernée, comme dans l’exemple ci-dessous :

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{ …
CGestureConfig cfg;
GetGestureConfig(&cfg); // get gesture defaults
cfg.EnableRotate(); // enable rotate gesture
SetGestureConfig(&cfg); // set configuration

}

Vous pouvez gérer le message WM_TOUCH directement en surchargeant la méthode virtuelle CWnd::OnTouchInput si vous souhaitez créer des interactions plus complexes au sein de l’application. Le gestionnaire d’événements OnTouchInput reçoit des événements tactiles individuels au fur et à mesure de leur survenance. Votre application peut soit gérer chaque événement tactile séparément, soit les combiner pour reconnaître des gestes personnalisés.

Vous devez appeler RegisterTouchWindow() dans le cadre du code d’initialisation pour faire en sorte qu’une fenêtre reçoive cet événement. OnTouchInput sera appelé pour chaque point tactile généré au sein de la zone client de la fenêtre :

BOOL CMainFrame::OnTouchInput(CPoint pt,
int nInputNumber, int nInputsCount,
PTOUCHINPUT pInput)
{
if( (pInput->dwFlags & TOUCHEVENTF_DOWN) ==
TOUCHEVENTF_DOWN )
{
CString str;
str.Format(L"Touch input event %d of %d",
nInputNumber, nInputsCount);
GetDC()->TextOutW(pt.x, pt.y, str);
}
}

Windows 7 propose aussi la prise en charge de la plate-forme pour la manipulation d’objets et le traitement de l’inertie afin d’affiner le mode tactile multipoints. Votre application peut fournir une interaction tactile naturelle avec les artefacts fournis par son interface utilisateur. Les API basées sur COM permettent des combinaisons de gestes simultanées sur un ou plusieurs objets (par exemple, un zoom et une translation simultanée) et le rendu de mouvements réalistes d’objets en réponse à ces gestes (par exemple, objet jeté dans un coin ou secoué).

Téléchargez gratuitement cette ressource

HP Elite Slice G2 : optimisez la collaboration… et votre budget !

HP Elite Slice G2 : optimisez la collaboration… et votre budget !

Téléchargez cette étude Forrester et découvrez comment booster la collaboration tout en dégageant un excellent R.O.I grâce au système de vidéoconférence HP Elite Slice G2 avec Microsoft Teams !

Tech - Par iTPro - Publié le 03 octobre 2011