(0) exportieren Drucken
Alle erweitern

Erste Schritte mit Windows Touch-Gesten

In diesem Abschnitt werden die grundlegenden Schritte für die Verwendung von Mehrfingerbewegungen beschrieben.

Bei der Verwendung von Windows Touch-Gesten werden in der Regel die folgenden Schritte ausgeführt:

  1. Einrichten eines Fensters für den Empfang von Gesten
  2. Behandeln der Gestenmeldungen
  3. Interpretieren der Gestenmeldungen

Einrichten eines Fensters für den Empfang von Gesten

Sie empfangen standardmäßig WM_GESTURE-Meldungen.

Hinweis  Wenn Sie RegisterTouchWindow aufrufen, empfangen Sie keine WM_GESTURE-Meldungen mehr. Wenn Sie keine WM_GESTURE-Meldungen empfangen, stellen Sie sicher, dass Sie RegisterTouchWindow nicht aufgerufen haben.

Im folgenden Code wird eine einfache InitInstance-Implementierung gezeigt.


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


Behandeln von Gestenmeldungen

Wie Windows Touch-Eingabemeldungen können Sie auch Gestenmeldungen auf viele verschiedene Arten behandeln. Wenn Sie Win32 verwenden, können Sie in WndProc auf die WM_GESTURE-Meldung prüfen. Wenn Sie einen anderen Typ von Anwendung erstellen, können Sie der Meldungszuordnung die WM_GESTURE-Meldung hinzufügen und dann einen benutzerdefinierten Handler implementieren.

Im folgenden Code wird gezeigt, wie Gestenmeldungen behandelt werden könnten.


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


Interpretieren der Gestenmeldungen

Die GetGestureInfo-Funktion wird verwendet, um eine Gestenmeldung als Struktur zu interpretieren, die die Geste beschreibt. Die Struktur, GESTUREINFO, enthält Informationen zu der Geste, beispielsweise die Position, an der die Geste ausgeführt wurde, und den Typ der Geste. Im folgenden Code wird gezeigt, wie Sie eine Gestenmeldung abrufen und interpretieren können.


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


Verwandte Themen

Windows Touch-Gesten

 

 

Anzeigen:
© 2014 Microsoft