Partager via


Prise en main avec les mouvements tactiles Windows

Cette section décrit les étapes de base de l’utilisation des mouvements multitouch.

Les étapes suivantes sont généralement effectuées lors de l’utilisation de mouvements Tactiles Windows :

  1. Configurez une fenêtre pour recevoir des mouvements.
  2. Gérez les messages de mouvement.
  3. Interpréter les messages de mouvement.

Configuration d’une fenêtre pour recevoir des mouvements

Par défaut, vous recevez des messages WM_GESTURE .

Notes

Si vous appelez RegisterTouchWindow, vous ne recevrez plus WM_GESTURE messages. Si vous ne recevez pas de messages WM_GESTURE , vérifiez que vous n’avez pas appelé RegisterTouchWindow.

 

Le code suivant montre une implémentation InitInstance simple.

#include <windows.h>


BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

Gestion des messages de mouvement

Comme pour gérer les messages d’entrée Windows Touch, vous pouvez gérer les messages de mouvement de plusieurs façons. Si vous utilisez Win32, vous pouvez case activée pour le message WM_GESTURE dans WndProc. Si vous créez un autre type d’application, vous pouvez ajouter le message WM_GESTURE à la carte de messages, puis implémenter un gestionnaire personnalisé.

Le code suivant montre comment les messages de mouvement peuvent être gérés.

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {    
    case WM_GESTURE:
            // Insert handler code here to interpret the gesture.            
            return DecodeGesture(hWnd, message, wParam, lParam);            

Interprétation des messages de mouvement

La fonction GetGestureInfo est utilisée pour interpréter un message de mouvement dans une structure décrivant le mouvement. La structure , GESTUREINFO, contient des informations sur le mouvement, telles que l’emplacement où le mouvement a été effectué et le type de mouvement. Le code suivant montre comment récupérer et interpréter un message de mouvement.

  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);
    }
  }

Mouvements tactiles Windows