Données de plug-in et classe RealTimeStylus
Les plug-ins de la classe RealTimeStylus doivent implémenter l’interface IStylusSyncPlugin ou IStylusAsyncPlugin , ou les deux. Bien que vous deviez implémenter toutes les méthodes d’interface de plug-in, votre plug-in reçoit uniquement les appels sur les méthodes marquées dans les plug-ins Microsoft. StylusInput. IStylusSyncPlugin. DataInterest ou Microsoft. StylusInput. IStylusAsyncPlugin. DataInterest propriété.
Les méthodes définies sur les interfaces utilisent des objets dans l’espace de noms Microsoft. StylusInput. PluginData pour passer les données de stylet aux plug-ins. Le tableau suivant décrit les objets de données qui sont des paramètres dans les méthodes de notification et répertorie la valeur DataInterestMask associée à la notification.
| Données de plug-in | Valeur DataInterestMask | Description |
|---|---|---|
| CustomStylusData | CustomStylusDataAdded | Données d’application personnalisées qu’ajoute un plug-in. |
| Partagefichiers | Error | Informations d’erreur que l’objet RealTimeStylus ajoute en réponse à une exception non gérée dans l’un de ses plug-ins. |
| InAirPacketsData | InAirPackets | Informations de paquet pour le mouvement du stylet lorsque le stylet est dans l’air au-dessus du digitaliseur. |
| PacketsData | Paquets | Informations de paquet pour le mouvement du stylet lorsque le stylet touche le digitaliseur. |
| RealTimeStylusDisabledData | RealTimeStylusDisabled | Informations que l’objet RealTimeStylus ajoute lorsqu’il est désactivé. |
| RealTimeStylusEnabledData | RealTimeStylusEnabled | Informations que l’objet RealTimeStylus ajoute lorsqu’il est activé. |
| StylusButtonDownData | StylusButtonDown | Informations sur le bouton de stylet particulier qui est enfoncé. |
| StylusButtonUpData | StylusButtonUp | Informations sur le bouton de stylet particulier qui est relâché. |
| StylusDownData | StylusDown | Les informations de paquet pour un stylet en tant que stylet sont mises en contact avec le digitaliseur. |
| StylusInRangeData | StylusInRange | Informations sur le stylet particulier qui saisit la zone d’entrée de l’objet RealTimeStylus ou qui introduit la plage de détection du digitaliseur au-dessus de la zone d’entrée de l’objet RealTimeStylus . |
| StylusOutOfRangeData | StylusOutOfRange | Informations sur le stylet particulier qui quitte la zone d’entrée de l’objet RealTimeStylus ou la sortie de la plage de détection du digitaliseur au-dessus de la zone d’entrée de l’objet RealTimeStylus . |
| StylusUpData | StylusUp | Les informations de paquet pour un stylet au fur et à mesure du stylet sont levées sur le digitaliseur. |
| SystemGestureData | SystemGesture | Informations que l’objet RealTimeStylus ajoute lorsqu’il détecte un mouvement système. |
| TabletAddedData | TabletAdded | Informations sur l’objet Tablet qui est ajouté. |
| TabletRemovedData | TabletRemoved | Informations sur l’objet Tablet PC en cours de suppression. |
Pour plus d’informations sur la façon dont l’objet RealTimeStylus gère le flux de données de stylet de tablette, consultez utilisation de la classe RealTimeStylus.
Intérêt pour les données
L’objet RealTimeStylus vérifie la propriété Microsoft. StylusInput. IStylusSyncPlugin. DataInterest ou Microsoft. StylusInput. IStylusAsyncPlugin. DataInterest d’un plug-in quand le plug-in est ajouté à la collection de plug-ins synchrone ou asynchrone de l’objet RealTimeStylus . Par conséquent, vous devez utiliser la propriété DataInterest pour vous abonner à toutes les notifications utilisées par cette instance de votre plug-in, mais pas rarement, mais pas à l’une des notifications que cette instance de votre plug-in n’utilise jamais. Pour les notifications que votre plug-in utilise occasionnellement, vérifiez d’abord l’état de votre plug-in dans la méthode de notification et retournez si la notification n’est pas utilisée par votre plug-in dans son état actuel.
Un plug-in reçoit uniquement les appels sur les méthodes marquées dans la propriété Microsoft. StylusInput. IStylusSyncPlugin. DataInterest ou Microsoft. StylusInput. IStylusAsyncPlugin. DataInterest du plug-in. Pour plus d’informations sur les valeurs possibles de la propriété DataInterest d’un plug-in, consultez l’énumération DataInterestMask .
Minutage
Les données sont mises en file d’attente dans l’objet RealTimeStylus avant d’être passées aux plug-ins dans la collection de plug-in asynchrone. La liste suivante décrit certaines situations dont vous devrez peut-être tenir compte lors de la conception d’un plug-in asynchrone.
- Lorsque l’objet RealTimeStylus est désactivé, le plug-in asynchrone peut recevoir d’autres notifications mises en file d’attente avant l’appel de sa méthode RealTimeStylusDisabled . Dans ce cas, les appels du plug-in à certaines méthodes et propriétés de l’objet RealTimeStylus lèvent une exception. Les informations relatives à votre plug-in doivent être mises en cache lorsque l’objet RealTimeStylus est activé.
- La méthode ClearStylusQueues de l’objet RealTimeStylus peut supprimer les informations de la file d’attente de sortie. Par conséquent, les plug-ins asynchrones ne peuvent pas reposer sur la réception de toutes les notifications pertinentes.
- Lorsqu’un objet tablette qui est disponible pour l’objet RealTimeStylus est supprimé, le plug-in asynchrone peut recevoir la notification du stylet en file d’attente pour la tablette avant l’appel de sa méthode TabletRemoved . Dans ce cas, l’appel de la méthode GetTabletPropertyDescriptionCollection de l’objet RealTimeStylus ne fonctionne pas. Les informations relatives à votre plug-in doivent être mises en cache lorsque l’objet RealTimeStylus est activé ou lorsqu’une nouvelle tablette est ajoutée.
Selon votre application, vous pouvez améliorer les performances lors de la désactivation d’un objet RealTimeStylus . Lorsque la propriété Enabled de l’objet RealTimeStylus est définie sur false, les données des files d’attente d’entrée et de sortie sont traitées jusqu’à ce que les files d’attente soient vides. Vous pouvez appeler la méthode ClearStylusQueues de l’objet RealTimeStylus pour effacer les files d’attente avant de désactiver l’objet RealTimeStylus .
Données activées et désactivées
Lorsque l’objet RealTimeStylus est activé, chaque plug-in reçoit un appel à sa méthode Microsoft. StylusInput. IStylusSyncPlugin. RealTimeStylusEnabled ou Microsoft. StylusInput. IStylusAsyncPlugin. RealTimeStylusEnabled . L’objet RealTimeStylusEnabledData passé dans la notification contient une collection d’identificateurs de contexte pour les tablettes disponibles au moment où l’objet RealTimeStylus est activé.
Notes
Étant donné que les données de plug-in de la collection de plug-in asynchrone de l’objet RealTimeStylus sont mises en file d’attente, les plug-ins asynchrones peuvent recevoir des données avant de recevoir un appel à sa méthode RealTimeStylusDisabled , mais une fois l’objet RealTimeStylus désactivé. Notez que certaines des méthodes et propriétés de l’objet RealTimeStylus lèvent une exception si l’objet RealTimeStylus est désactivé.
L’objet RealTimeStylus appelle les méthodes Microsoft. StylusInput. IStylusSyncPlugin. RealTimeStylusEnabled et Microsoft. StylusInput. IStylusSyncPlugin. RealTimeStylusDisabled sur le thread à partir duquel l’objet RealTimeStylus est activé ou à partir duquel le plug-in synchrone est ajouté.
En règle générale, ajoutez ou supprimez des plug-ins pendant que l’objet RealTimeStylus est désactivé. Pour plus d’informations sur l’ajout et la suppression de plug-ins à l’objet RealTimeStylus , consultez plug-ins et la classe RealTimeStylus.
Données de tablette
Quand une tablette que l’objet RealTimeStylus peut utiliser est ajoutée ou supprimée du Tablet PC pendant que l’objet RealTimeStylus est activé, l’objet RealTimeStylus notifie ses plug-ins qu’un objet tablette a été ajouté ou supprimé. Chaque objet RealTimeStylus gère une liste d’identificateurs uniques pour les objets tablette avec lesquels il peut interagir. L’objet RealTimeStylus a deux méthodes pour la traduction entre l’identificateur unique et l’objet Tablet, les méthodes GetTabletContextIdFromTablet et GetTabletFromTabletContextId .
Notes
Les informations sur une tablette ne sont plus disponibles à partir de l’objet RealTimeStylus après la suppression de la tablette du Tablet PC.
Données du stylet de tablette
L’objet RealTimeStylus passe des informations sur le stylet de tablette à ses plug-ins dans un certain nombre de méthodes de notification. Les informations sur le stylet du Tablet PC sont représentées par un objet stylet . Cet objet est un instantané de l’état du stylet du Tablet PC au moment où les données ont été rassemblées. Étant donné que les plug-ins reçoivent les données du stylet dans le flux de données du stylet, les plug-ins doivent utiliser les informations de l’objet stylet au lieu de vérifier l’état actuel d’un stylet de tablette particulier à l’aide de la classe Cursor .
Chaque objet stylet contient l’identificateur de contexte de tablette pour la tablette qui a généré les données.
Données de mouvement du système
L’objet RealTimeStylus reçoit des données sur les gestes système lorsqu’ils sont reconnus par le Tablet PC. Le tableau suivant décrit l’ordre dans lequel les objets SystemGestureData se produisent dans le flux de données de stylet de tablette par rapport à d’autres données de stylet de tablette.
| SystemGesture | Objets qui précèdent l’objet SystemGestureData | Objets qui viennent après l’objet SystemGestureData |
|---|---|---|
| Taper | Objet StylusDownData . |
Objet StylusUpData . |
| DoubleTap | L’objet StylusDownData , l’objet SystemGestureData pour le mouvement du système Tap et les objets StylusUpData . |
Deuxième objet StylusDownData . |
| RightTap | L’objet StylusDownData et l’objet SystemGestureData pour le membre HoldEnter de l’énumération SystemGesure . |
Objet StylusUpData . |
| Déplacez | Objet StylusDownData . |
Objet StylusUpData . |
| RightDrag | Objet StylusDownData . |
Objet StylusUpData . |
| HoldEnter | Objet StylusDownData . |
Objet StylusUpData .[!Note] |
| HoldLeave | Non implémenté. |
Non implémenté. |
| HoverEnter | Plusieurs objets InAirPacketsData de vitesse moyenne faible. |
[!Note] |
| HoverLeave | Objet SystemGestureData pour le mouvement de système HoverEnter et plusieurs objets InAirPacketsData de rapidité moyenne suffisante. |
[!Note] |
Données personnalisées du stylet
Des données de stylet personnalisées peuvent être ajoutées à l’objet RealTimeStylus en appelant la méthode AddCustomStylusDataToQueue . Les données de stylet personnalisées peuvent être ajoutées aux files d’attente de l’objet RealTimeStylus dans l’un des trois emplacements.
- Lorsque le paramètre de file d’attente a la valeur Output, les données personnalisées sont ajoutées à la file d’attente de sortie de l’objet RealTimeStylus après les données en cours de traitement par la collection de plug-ins synchrone.
- Lorsque le paramètre de file d’attente a la valeur OutputImmediate, les données personnalisées sont ajoutées à la file d’attente de sortie de l’objet RealTimeStylus avant les données en cours de traitement par la collection de plug-ins synchrone.
- Lorsque le paramètre de file d’attente est défini sur Input, les données personnalisées sont ajoutées à la file d’attente d’entrée de l’objet RealTimeStylus et sont envoyées à la collection de plug-ins synchrone avant les nouvelles données du flux de données du stylet du Tablet PC.
Dans chacun des cas précédents, les données ajoutées par les plug-ins suivants dans la collection de plug-in synchrone sont ajoutées après les données ajoutées par les plug-ins précédents.
Notes
Si l’appel à la méthode AddCustomStylusDataToQueue est effectué à partir d’un plug-in synchrone en réponse à un appel à l’une de ses méthodes IStylusSyncPlugin , les données de stylet personnalisées sont ajoutées au flux de données du stylet de tablette de manière prévisible ; dans le cas contraire, il est ajouté à la file d’attente par rapport aux données de stylet actuelles que l’objet RealTimeStylus traite, et non par rapport aux données traitées par le plug-in asynchrone. La méthode AddCustomStylusDataToQueue lève une exception si l’objet RealTimeStylus est désactivé.
Les données de stylet personnalisées sont ajoutées à la file d’attente en tant qu’objet CustomStylusData et les plug-ins reçoivent ces données par le biais de leur méthode Microsoft. StylusInput. IStylusSyncPlugin. CustomStylusDataAdded ou Microsoft. StylusInput. IStylusAsyncPlugin. CustomStylusDataAdded .
Les objets DynamicRenderer et GestureRecognizer peuvent ajouter des données de stylet personnalisées à la file d’attente. Pour plus d’informations sur le DynamicRenderer et les objets GestureRecognizer , consultez Plug- ins de rendu dynamique et plug-ins de reconnaissance.
L’objet RealTimeStylus appelle la méthode Microsoft. StylusInput. IStylusSyncPlugin. CustomStylusDataAdded sur le thread à partir duquel il reçoit l’appel à sa méthode AddCustomStylusDataToQueue .
Le diagramme suivant illustre l’ajout de données de stylet personnalisées à la file d’attente de sortie avec le paramètre de file d’attente défini sur Output.

Dans ce diagramme, les cercles « A » et « B » représentent les données du stylet de tablette qui ont déjà été ajoutées à la file d’attente de sortie de l’objet RealTimeStylus et qui n’ont pas encore été envoyées à la collection de plug-in asynchrone. Le cercle « C » indique les données du stylet du Tablet PC actuellement traitées par l’objet RealTimeStylus . Il est envoyé à la collection de plug-ins synchrone et placé dans la file d’attente de sortie. Les cercles numérotés « 1 », « 2 » et « 3 » représentent les données personnalisées du stylet qui ont été ajoutées à la file d’attente de sortie par les premier, deuxième et troisième plug-ins synchrones, respectivement en réponse aux données du stylet de tablette représentées par « C ». Les plug-ins ont ajouté les données de stylet personnalisées avec le paramètre de file d’attente défini sur StylusQueues. Le cercle vide représente la position dans la file d’attente de sortie où les futures données de stylet du Tablet PC sont ajoutées.
Le diagramme suivant illustre l’ajout de données de stylet personnalisées à la file d’attente de sortie avec le paramètre de file d’attente défini sur OutputImmediate.

Dans ce diagramme, les cercles « A » et « B » représentent les données du stylet de tablette qui ont déjà été ajoutées à la file d’attente de sortie de l’objet RealTimeStylus et qui n’ont pas encore été envoyées à la collection de plug-in asynchrone. Le cercle « C » indique les données du stylet du Tablet PC actuellement traitées par l’objet RealTimeStylus . Il est envoyé à la collection de plug-ins synchrone et placé dans la file d’attente de sortie. Les cercles numérotés « 1 », « 2 » et « 3 » représentent les données personnalisées du stylet qui ont été ajoutées à la file d’attente de sortie par les premier, deuxième et troisième plug-ins synchrones, respectivement en réponse aux données du stylet de tablette représentées par « C ». Les plug-ins ont ajouté les données de stylet personnalisées avec le paramètre de file d’attente défini sur OutputImmediate. Le cercle vide représente la position dans la file d’attente de sortie où les futures données de stylet du Tablet PC sont ajoutées.
Le diagramme suivant illustre l’ajout de données de stylet personnalisées à la file d’attente d’entrée.

Dans ce diagramme, les cercles « A » et « B » représentent les données du stylet de tablette qui ont déjà été ajoutées à la file d’attente de sortie de l’objet RealTimeStylus et qui n’ont pas encore été envoyées à la collection de plug-in asynchrone. Le cercle « C » indique les données du stylet du Tablet PC actuellement traitées par l’objet RealTimeStylus . Il est envoyé à la collection de plug-ins synchrone et placé dans la file d’attente de sortie. Les cercles numérotés « 1 », « 2 » et « 3 » représentent les données personnalisées du stylet qui ont été ajoutées à la file d’attente d’entrée par les premier, deuxième et troisième plug-ins synchrones, respectivement en réponse aux données du stylet de tablette représentées par « C ». Les plug-ins ont ajouté les données de stylet personnalisées avec le paramètre de file d’attente défini sur entrée. Les données personnalisées du stylet numérotées « 1 » sont ensuite transmises aux plug-ins synchrones, puis à la file d’attente de sortie avant le traitement des données personnalisées du stylet « 2 » et « 3 », les deux étant traitées avant le traitement des données du stylet de tablette suivant. Le cercle vide représente la position dans la file d’attente de sortie où les futures données de stylet du Tablet PC sont ajoutées.
Données d’erreur
Lorsqu’un plug-in lève une exception, le workflow normal de données est interrompu. L’objet RealTimeStylus génère un objet ErrorData et appelle :
- Méthode Microsoft. StylusInput. IStylusSyncPlugin. Error ou Microsoft. StylusInput. IStylusAsyncPlugin. Error du plug-in qui a levé l’exception.
- Méthode Microsoft. StylusInput. IStylusSyncPlugin. Error ou Microsoft. StylusInput. IStylusAsyncPlugin. Error des plug-ins restants de cette collection.
Si le plug-in qui a levé l’exception est un plug-in synchrone, l’objet ErrorData est ajouté à la file d’attente de sortie. L’objet RealTimeStylus reprend ensuite le traitement normal des données d’origine.
Le diagramme suivant illustre l’ajout de données d’erreur aux données du stylet de tablette.

Dans ce diagramme, les cercles « A » et « B » représentent les données du stylet de tablette qui ont déjà été ajoutées à la file d’attente de sortie de l’objet RealTimeStylus et qui n’ont pas encore été envoyées à la collection de plug-in asynchrone. Le cercle « C » indique les données du stylet du Tablet PC actuellement traitées par l’objet RealTimeStylus . Le cercle « e » représente un objet ErrorData généré par l’objet RealTimeStylus lorsque le second plug-in synchrone, plug-in 2, lève une exception pendant qu’il traite « C ». L’objet RealTimeStylus interrompt ensuite son traitement de « C » et passe « e » au plug-in qui a généré l’exception et tous les plug-ins suivants. L’objet RealTimeStylus place ensuite « e » dans la file d’attente de sortie et reprend son traitement de « C », qui est passé aux plug-ins restants dans la collection de plug-in synchrone et est placé dans la file d’attente de sortie après « e ». Le cercle vide représente la position dans la file d’attente de sortie où les futures données de stylet du Tablet PC sont ajoutées.
Si un plug-in lève une exception à partir de sa méthode d’erreur, l’objet RealTimeStylus intercepte l’exception, mais ne génère pas de nouvel objet ErrorData . Cela permet d’éviter la récursivité.
Les données d’erreur sont ajoutées à la file d’attente de sortie après toute donnée de stylet personnalisée ajoutée à la position OutputImmediate avant l’exception qui a créé les données d’erreur et avant les données de stylet personnalisées ajoutées à la position OutputImmediate par les plug-ins suivants dans la collection de plug-ins synchrone.
Le diagramme suivant illustre la façon dont les données d’erreur sont ajoutées à la file d’attente de sortie par rapport aux données personnalisées ajoutées à la file d’attente OutputImmediate .

Dans ce diagramme, les cercles « A » et « B » représentent les données du stylet de tablette qui ont déjà été ajoutées à la file d’attente de sortie de l’objet RealTimeStylus et qui n’ont pas encore été envoyées à la collection de plug-in asynchrone. Le cercle « C » indique les données du stylet du Tablet PC actuellement traitées par l’objet RealTimeStylus . Les cercles numérotés « 1 », « 2 » et « 3 » sont ajoutés respectivement par le premier, le deuxième et le troisième plug-ins synchrones à la file d’attente OutputImmediate en réponse aux données représentées par le cercle lettre « C ». Le cercle « e » indique les données d’erreur générées en réponse à une exception levée par le second plug-in après que le second plug-in a ajouté des données personnalisées à la file d’attente de sortie à la position OutputImmediate .
Si un plug-in synchrone ajoute des données de stylet personnalisées à la file d’attente d’entrée en réponse aux données d’erreur, les données sont ajoutées immédiatement avant les données d’erreur. Si l’un des plug-ins synchrones ajoute des données de stylet personnalisées à la file d’attente de sortie à la position de sortie en réponse aux données d’erreur, les données sont ajoutées immédiatement après les données d’erreur.
L’objet RealTimeStylus appelle la méthode Microsoft. StylusInput. IStylusSyncPlugin. Error sur le thread à partir duquel l’exception est levée.