Domanda

Sto lavorando a un progetto legacy in VC++/Win32/MFC.Recentemente è diventato un requisito che l'applicazione funzioni su a tablet PC, e questo ha inaugurato una serie di nuove emissioni.Ho potuto lavorare con e attorno a questi problemi, ma ne rimane uno in cui potrei usare alcuni suggerimenti di esperti.

Ho un bug particolare che è indotto dal "sollevamento" dello stilo dalla superficie attiva.Fondamentalmente il cursore del mouse scompare e riappare quando lo "premi" nuovamente sullo schermo.

È logico che ciò non sia preso in considerazione nella domanda.non puoi sollevare il cursore su un PC desktop.Quindi quello che sto cercando è una buona panoramica di ciò che accade (in termini di messaggi di Windows, ecc.) quando si verifica il sollevamento.Questo si traduce solo nei cambiamenti di focus e negli eventi di passaggio del mouse?Il mio bug sembra coinvolgere anche le modifiche del cursore (potrebbe però non essere correlato al sollevamento).Certamente il "sollevamento" inaspettato sta interrompendo lo stato di elaborazione dello strumento dell'applicazione.

Quindi le domande tangibili sono:

  1. Cosa succede quando si verifica un "sollevamento" dello stilo?Una stampa?
  2. Quali chiamate API possono essere utilizzate per rilevarlo?Si traduce semplicemente in messaggi standard con flag/valori impostati?
  3. Qual è un buon modo per testare/emulare questo quando il tuo PC di sviluppo è un desktop?Sto semplicemente volando alla cieca qui?(Ho accesso solo periodico a un tablet pc)
  4. Cosa rappresenta il comportamento corretto o la procedura consigliata per la consapevolezza dello stilo del tablet?

Grazie per la tua considerazione, EE

È stato utile?

Soluzione

Come utente di tablet posso rispondere ad alcune delle tue domande.

Primo:

Non è possibile mantenere facilmente il "focus della tastiera" su una finestra quando lo stilo deve uscire dalla finestra focalizzata per premere un tasto sulla tastiera virtuale.

La maggior parte delle tastiere virtuali che ho utilizzato (il pannello di input del tablet Windows e una sotto Ubuntu) consentono al programma in cui stanno digitando di mantenere il "focus della tastiera".

Cosa succede quando si verifica un "sollevamento" dello stilo?Una stampa?

Sotto Windows il valore della pressione diminuisce, ma al di fuori di questo non si verifica alcun evento.(Non conosco Linux.)

Quali chiamate API possono essere utilizzate per rilevarlo?Si traduce semplicemente in messaggi standard con flag/valori impostati?

Come accennato in precedenza, se riesci a ottenere il valore della pressione, puoi usarlo.

Qual è un buon modo per testare/emulare questo quando il tuo PC di sviluppo è un desktop?Sto semplicemente volando alla cieca qui?(Ho accesso solo periodico a un tablet pc)

Quando lo stilo viene posizionato altrove, le coordinate globali del puntatore cambiano, quindi puoi emulare il movimento improvviso del puntatore con qualsiasi cosa che ti consenta di modificare i valori globali del puntatore.(La classe Robot in Java lo rende abbastanza semplice.)

Cosa rappresenta il comportamento corretto o la procedura consigliata per la consapevolezza dello stilo del tablet?

Ti consiglio di leggere cosa ha da dire Microsoft, il sito Web MSDN contiene numerosi articoli eccellenti.(http://msdn.microsoft.com/en-us/library/ms704849(VS.85).aspx) Sottolineerò che la dimensione dei pulsanti sulle tue applicazioni fa una grande differenza.

Spero che questo sia stato d'aiuto.

Altri suggerimenti

A quanto ho capito, non esiste alcun evento di "sollevamento": l'unico evento si verifica quando lo stilo viene riportato sullo schermo in un secondo momento.Naturalmente, questo dipende dal driver specifico e così via.

Peggio ancora, il bug che descrivi potrebbe essere riproducibile solo con un normale mouse.Prova a muovere il mouse il più velocemente possibile: quasi sicuramente salterà diversi pixel contemporaneamente.O anche decine o centinaia, se le impostazioni del mouse sono configurate per la massima velocità del puntatore.Un aggiornamento, il mouse potrebbe essere a 100.100.Il prossimo aggiornamento potrebbe essere a 200.300.

Sotto Windows il valore della pressione diminuisce, ma al di fuori di questo non si verifica alcun evento.(Non conosco Linux.)

Sotto Linux otterrai "ProximityEvents"

Molto probabilmente questi eventi WT_PROXIMITY sono disponibili in Windows (fare riferimento a: http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html )

@Greg - Un chiarimento, questo è un PC portatile con tablet e stilo integrati.il dispositivo non ha una tastiera dedicata (è virtuale sul touchscreen) e non è un dispositivo di input Wacom.Dispiace per la confusione.

Sembra che ci sia un SDK per Microsoft Windows XP Tablet PC Edition che potrebbe avere la capacità di ottenere dettagli speciali come la pressione.Tuttavia, so che deve esserci un certo livello di compatibilità standard con le applicazioni esistenti non compatibili con i tablet.Immagino di poter provare a installare Spy++ sul tablet e provare a filtrare messaggi/eventi specifici.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top