Classe ECLCommNotify
ECLCommNotify est une classe de base abstraite. Une application ne peut pas créer directement une instance de cette classe. Pour utiliser cette classe, l'application doit définir sa propre classe dérivée d'ECLCommNotify. L'application doit implémenter la fonction membre NotifyEvent() dans sa classe dérivée. Elle peut également éventuellement implémenter les fonctions membres NotifyError() et NotifyStop().
La classe ECLCommNotify est utilisée pour permettre à une application d'être notifiée des événements de connexion/déconnexion de communication sur une connexion ZIEWin. Des événements de connexion/déconnexion sont générés chaque fois qu'une connexion ZIEWin (fenêtre) est connectée ou déconnectée d'un système hôte.
- Définissez une classe dérivée d'ECLCommNotify.
- Implémenter la classe dérivée et implémenter la fonction membre NotifyEvent().
- Implémentez éventuellement la fonction NotifyError(), la fonction NotifyStop() ou les deux.
- Créer une instance de la classe dérivée.
- Enregistrez l'instance avec la fonction ECLConnection::RegisterCommEvent().
L'exemple présenté montre comment cela peut être réalisé. Une fois les étapes ci-dessus terminées, chaque fois qu'un lien de communication d'une connexion est connecté ou déconnecté d'un hôte, la fonction membre NotifyEvent() de l'application sera appelée.
Si une erreur est détectée lors de la génération d'un événement, la fonction membre NotifyError() est appelée avec un objet ECLErr. Les événements peuvent ou non continuer à être générés après une erreur, selon la nature de l'erreur. Lorsque la génération d'événements se termine (soit en raison d'une erreur, en appelant ECLConnection::UnregisterCommEvent, soit par destruction de l'objet ECLConnection), la fonction membre NotifyStop() est appelée. Quelle que soit la manière dont la notification d'événement est terminée, la fonction membre NotifyStop() est toujours appelée et l'objet application n'est pas enregistré.
Si l'application ne fournit pas d'implémentation de la fonction membre NotifyError(), l'implémentation par défaut est utilisée (une simple boîte de message s'affiche à l'utilisateur). L'application peut remplacer le comportement par défaut en implémentant la fonction NotifyError() dans la classe dérivée de l'application. De même, la fonction NotifyStop() par défaut est utilisée si l'application ne fournit pas cette fonction (le comportement par défaut est de ne rien faire).
Notez que l'application peut également choisir de fournir ses propres constructeur et destructeur pour la classe dérivée. Cela peut être utile si l'application souhaite stocker des données spécifiques à l'instance dans la classe et transmettre ces informations en tant que paramètre au constructeur. Par exemple, l'application peut souhaiter publier un message dans une fenêtre d'application lorsqu'un événement de communication se produit. Plutôt que de définir le descripteur de la fenêtre en tant que variable globale (afin qu'il soit visible par la fonction NotifyEvent()), l'application peut définir un constructeur pour la classe qui prend le descripteur de la fenêtre et le stocke dans la zone de données du membre de la classe.
L'application ne doit pas détruire l'objet de notification alors qu'il est enregistré pour recevoir des événements.
Restriction d'implémentation : actuellement, l'objet ECLConnection autorise l'enregistrement d'un seul objet de notification pour la notification d'événements de communication. ECLConnection::RegisterCommEvent générera une erreur si un objet de notification est déjà enregistré pour cet objet ECLConnection.