IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Windows 7 est arrivé avec la gestion du multitouch : quels sont les messages Windows associés ?

Toutes les semaines un peu de code pour aller plus loin avec Windows 7

Retrouvez l'intégralité des questions / réponses sur le développement sous Windows 7 dans l'article suivant.

Commentez cet article : 41 commentaires Donner une note à l´article (5)

Article lu   fois.

Les deux auteurs

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Windows 7 est arrivé avec la gestion du multitouch : quels sont les messages Windows associés ?

Bien que le multitouch ne soit pas une nouveauté en tant que telle, Windows 7 est le premier système de Microsoft fournissant un support natif de cette technologie.

Pour supporter cette technologie, plusieurs messages Windows ont été rajoutés au système, dont :

  • WM_TOUCH : qui permet de récupérer les informations liées à une pression sur l'écran (nombre de pressions au total, coordonnées, etc.) ;
  • WM_GESTURE : qui permet de récupérer un mouvement (un geste) particulier, réalisé par l'utilisateur sur la surface de l'écran. Windows 7 reconnaît nativement plusieurs gestuelles, telles que la rotation, le changement d'échelle (zoom et dézoom), la pression sur l'écran, la distance entre deux doigts.
Gestion du message WM_TOUCH
Sélectionnez
case WM_TOUCH:
{
    // Un message WM_TOUCH peut contenir plusieurs messages provenant de différents contacts
    unsigned int numInputs = (int) wParam;      // Nombres de contacts
    TOUCHINPUT* ti = new TOUCHINPUT[numInputs]; // 
            
    if (GetTouchInputInfo((HTOUCHINPUT)lParam, numInputs, ti, sizeof(TOUCHINPUT)))
    {
        for (unsigned int i=0; i<numInputs; ++i)
        {
            if (ti[i].dwFlags & TOUCHEVENTF_DOWN)
            {
                OnTouchDownHandler(hWnd, ti[i]);
            }
        else if (ti[i].dwFlags & TOUCHEVENTF_MOVE)
        {
            OnTouchMoveHandler(hWnd, ti[i]);
        }
        else if (ti[i].dwFlags & TOUCHEVENTF_UP)
        {
            OnTouchUpHandler(hWnd, ti[i]);
        }
    }
}
CloseTouchInputHandle((HTOUCHINPUT)lParam);
delete [] ti;
}
Gestion du message WM_GESTURE
Sélectionnez
// Entry point to the application
LRESULT DecodeGesture(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
// Create a structure to populate and retrieve the extra message info.
GESTUREINFO gi;  
ZeroMemory(&gi, sizeof(GESTUREINFO));
gi.cbSize = sizeof(GESTUREINFO);

BOOL bResult  = GetGestureInfo((HGESTUREINFO)lParam, &gi);
BOOL bHandled = FALSE;

if (bResult){
    // now interpret the gesture
    switch (gi.dwID){
        case GID_ZOOM:
            // Code for zooming goes here     
            bHandled = TRUE;
            break;
        case GID_PAN:
            // Code for panning goes here
            bHandled = TRUE;
            break;
        case GID_ROTATE:
            // Code for rotation goes here
            bHandled = TRUE;
            break;
        case GID_TWOFINGERTAP:
            // Code for two-finger tap goes here
            bHandled = TRUE;
            break;
        case GID_PRESSANDTAP:
            // Code for roll over goes here
            bHandled = TRUE;
            break;
        default:
            // A gesture was not recognized
            break;
    }
}
else
{
    DWORD dwErr = GetLastError();
    if (dwErr > 0){
        //MessageBoxW(hWnd, L"Error!", L"Could not retrieve a GESTUREINFO structure.", MB_OK);
    }
}
if (bHandled){
    return 0;
}
else
{
    return DefWindowProc(hWnd, message, wParam, lParam);
}

Pour plus d'infos :

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2011 Microsoft MSDN France. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.