Le novità di Windows 7 per gli sviluppatori

6 pagine in totale: <<Indietro 1 2 3 4 [5] 6 Avanti >>

Supporto al multitouch

Una nuova forma di input per l'interfaccia che sta ultimamente andando molto di moda è il multi touch, sfruttato sia da schermi che supportano le pressioni delle dita con tecnica resistiva o capacitiva, sia da mouse in grado di riconoscere le dita che si premono su di esso.

In generale muovere uno o più dita significa dare uno o più input che se interpretati significano un azione da compiere in relazione alle circostanze dell'applicazione. Queste azioni sono dette gesture e le più comuni permettono operazioni quali lo zoom, il pan, la rotazione,il tap singolo e doppio, le quali sono supportate dalle principali applicazioni predefinite di Seven come Explorer, Paint e Picture Viewer. In Windows 7 la strada scelta è stata quindi di preservare le applicazioni già esistenti facendole funzionare anche se l'utente interagisce usando le dita. Questo è possibile grazie alla promozione degli eventi di tipo touch verso quelli di tipo mouse, perciò azioni come il tap singolo e doppio, lo zoom e il pan diventano rispettivamente il click, il doppio click e l'invio un messaggio di tipo WM_MOUSEWHEEL e WM_VSCROLL / WM_HSCROLL.

Per gestire invece in modo esplicito i gesti, è disponibile un nuovo tipo di messaggio di tipo WM_GESTURE che attraverso la struttura GESTUREINFO permette di conoscere il gesto interpretato automaticamente da Windows 7. Se questo non dovesse bastare, attraverso il messaggio WM_TOUCH si hanno a disposizione i punti di pressione delle dita così da implementare i gesti con gli algoritmi che si vogliono, inventandone anche dei propri.

Purtroppo non esiste un supporto ufficiale nel mondo managed, neanche attraverso il Windows API code pack, ma occorre aspettare Windows Presentation Foundation 4.0 che includerà il supporto al multitouch, fornendo anche le inerzie, del quale si parlerà in modo specifico in un'altra occasione.

Nel SDK di Windows 7 sono contenuti però degli esempi per gestire i messaggi WM_GESTURE e WM_TOUCH tra cui uno basato su WinForm e C# descritto a questo indirizzo. In queste tipologie di applicazioni per gestire il multitouch è necessario sovrascrivere il metodo WndProc dal quale passano tutti i messaggi Windows ed è in questo punto che è possibile recuperare i gesti dell'utente e applicarli al controllo, pannello e form dove lo si ritiene necessario.

const int WM_GESTURE = 0x0119; 
 
protected override void WndProc(ref Message m) 
{ 
  bool handled; 
  handled = false; 
 
  switch (m.Msg) 
  { 
    case WM_GESTURE: 
      handled = DecodeGesture(ref m); 
      break; 
  } 
  // Chiamo la gestione originale dei messaggi 
  base.WndProc(ref m); 
 
  if (handled) 
  { 
    // Marco il messaggio come processato 
    m.Result = new IntPtr(1); 
  } 
}

La funzione DecodeGesture utilizzata nel codice di esempio processa il messaggio e lo fa dapprima ottenendo la struttura GESTUREINFO tramite il parametro lParam del messaggio che contiene il puntatore a tale informazione. Tramite poi la proprietà dwID si determina il tipo di gesto utilizzato per compiere poi le relative azioni.

private bool DecodeGesture(ref Message m) 
{ 
  GESTUREINFO gi = new GESTUREINFO(); 
  gi.cbSize = Marshal.SizeOf(gi); 
 
  // Carico le informazioni della gesture 
  if (!GetGestureInfo(m.LParam, ref gi)) 
    return false; 
 
  switch (gi.dwID) 
  { 
    case GID_BEGIN: 
    case GID_END: 
      break; 
    case GID_ZOOM: 
      break; 
    case GID_PAN: 
      break; 
    case GID_ROTATE: 
      break; 
    case GID_TWOFINGERTAP: 
      break; 
    case GID_PRESSANDTAP: 
      break; 
  } 
 
  return true; 
}

Eventualmente è possibile inoltre gestire il messaggio WM_GESTURENOTIFY per conoscere il supporto alle gesture e impostare tramite SetGestureConfig i tipi di gesti che si intendono supportare per una specifico handle.

6 pagine in totale: <<Indietro 1 2 3 4 [5] 6 Avanti >>

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Segnala su:  Facebook  Messenger  Twitter        |

TUTORIALS

Silverlight

.NET Framework

Accesso ai dati

Architettura e design software

Windows Azure

TOP TEN ARTICOLI
ARTICOLI VIA E-EMAIL

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

Iscrivi subito! »»»

MEDIA
IN EVIDENZA
MISC