Question

Je travaille sur un projet hérité dans VC ++ / Win32 / MFC . Récemment, il est devenu indispensable que l’application fonctionne sur un tablet pc , ce qui a engendré une foule de nouveaux problèmes. J'ai pu travailler avec et autour de ces problèmes, , mais il me reste une solution pour laquelle je pourrais utiliser certaines suggestions d'experts.

J'ai un bug particulier provoqué par le "lift". du stylet hors de la surface active. Le curseur de la souris disparaît puis réapparaît lorsque vous appuyez sur " le retour sur l'écran.

Il est logique que cela ne soit pas comptabilisé dans l'application. vous ne pouvez pas lever le curseur sur un ordinateur de bureau. Donc, ce que je recherche, c’est un bon aperçu de ce qui se passe (en termes de messages Windows, etc.) lorsque l’ascenseur se produit. Est-ce que cela se traduit par un simple focus sur les changements et les événements survolés? Mon bug semble également impliquer des changements de curseur (peut ne pas être lié à l'ascenseur). Certainement l'inattendu " ascenseur " brise l'état du traitement de l'outil de l'application.

Les questions concrètes sont donc les suivantes:

  1. Que se passe-t-il lorsqu'un stylet "soulève"? se produit? Une presse?
  2. Quels appels d'API peuvent être utilisés pour détecter cela? Est-ce que cela se traduit simplement par des messages standard avec des indicateurs / valeurs définis?
  3. Quel est le bon moyen de tester / émuler ceci lorsque votre PC de développement est un ordinateur de bureau? Est-ce que je vole aveugle ici? (Je n'ai qu'un accès périodique à un tablet pc)
  4. Que représente un comportement correct ou la meilleure pratique en matière de sensibilisation aux stylets pour tablettes?

Merci de votre considération, ee

Était-ce utile?

La solution

En tant qu'utilisateur de tablette, je peux répondre à quelques-unes de vos questions.

Premier:

  

Vous ne pouvez pas très facilement conserver un " focus clavier " sur une fenêtre lorsque le stylet doit sortir de la fenêtre active pour appuyer sur une touche du clavier virtuel.

La plupart des claviers virtuels que j'ai utilisés (le panneau de saisie de la tablette Windows et un sous ubuntu) autorisent le programme en cours de saisie à conserver le "focus du clavier".

  

Que se passe-t-il lorsqu'un stylet "soulève"? se produit? Une presse?

Sous Windows, la valeur de pression diminue, mais en dehors de cela, il n'y a pas d'événement. (Je ne sais pas pour Linux.)

  

Quels appels d’API peuvent être utilisés pour détecter ceci? Est-ce que cela se traduit simplement par des messages standard avec des indicateurs / valeurs définis?

Comme mentionné ci-dessus, si vous pouvez obtenir la valeur de pression, vous pouvez l'utiliser.

  

Quel est un bon moyen de tester / émuler ceci lorsque votre PC de développement est un ordinateur de bureau? Est-ce que je vole aveugle ici? (Je n'ai qu'un accès périodique à un tablet pc)

Lorsque le stylet est placé ailleurs, les coordonnées globales du pointeur changent. Vous pouvez donc émuler le déplacement soudain du pointeur avec tout ce qui vous permet de modifier les valeurs du pointeur global. (La classe Robot en Java rend cela assez facile.)

  

Que représente un comportement correct ou la meilleure pratique pour sensibiliser les stylets de tablette?

Je vous recommande de lire ce que Microsoft a à dire: le site Web MSDN propose un certain nombre d'excellents articles. ( http://msdn.microsoft.com/en- us / library / ms704849 (VS.85) .aspx ) Je vous ferai remarquer que la taille des boutons de vos applications fait une énorme différence.

J'espère que cela vous a aidé.

Autres conseils

D'après ce que j'ai compris, il n'y a pas de "levage". événement - le seul événement qui se produit lorsque le stylet est ramené à l'écran ultérieurement. Bien sûr, cela dépend de votre pilote et ainsi de suite.

Pire encore, le bogue que vous décrivez peut être reproduit avec une souris typique. Essayez de déplacer la souris aussi vite que vous le pouvez - elle sautera certainement de plusieurs pixels à la fois. Ou même des dizaines ou des centaines, si les paramètres de la souris sont configurés pour la vitesse la plus élevée du pointeur. Une mise à jour, la souris pourrait être à 100,100. La toute prochaine mise à jour, elle pourrait être à 200 300.

  

Sous Windows, la valeur de pression diminue, mais en dehors de cela, il n'y a pas d'événement. (Je ne sais pas pour Linux.)

Sous Linux, vous obtenez "ProximityEvents".

Très probablement, ces événements WT_PROXIMITY sont disponibles dans Windows (reportez-vous à la section http: / /www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html )

@Greg - Une précision: il s'agit d'un ordinateur portable avec tablette et stylet intégrés. L'appareil n'a pas de clavier dédié (il s'agit d'un clavier virtuel sur l'écran tactile) et n'est pas un périphérique d'entrée wacom. Désolé pour la confusion.

Il semble qu'il existe un SDK pour l’édition Tablet PC de Microsoft Windows XP pouvant éventuellement obtenir des détails particuliers, tels que la pression. Cependant, je sais qu’il doit exister un certain niveau de compatibilité standard avec les applications existantes non compatibles avec les tablettes. Je suppose que je peux essayer d’installer Spy ++ sur la tablette et d’essayer de filtrer des messages / événements spécifiques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top