wanbao
Messages postés14Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention 6 juillet 2004
-
5 juil. 2004 à 16:37
wanbao
Messages postés14Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention 6 juillet 2004
-
6 juil. 2004 à 12:24
Bonjour,
Je développe une application permettant de dialoguer avec les différents ports COM. Afin de me faciliter la tâche, j'ai créer un contrôle ActiveX permettant cette communication. Lorsque j'utilise une seule instance de mon contrôle, tout se passe bien (une fenêtre contenue dans mon OCX s'ouvre et la communication fonctionne à merveille).
Le problème survient lorsque j'utilise deux instances de mon contrôle. J'ajoute en effet un contrôle supllémentaire par glisser-déposer (un peu comme je le ferais pour ajouter deux TextBox à une feuille). Mais voila, lorsque j'éxecute mon programme, il semblerait que les deux instances de mon contrôle partagent les mêmes ressources (Ils utilisent tous les deux la même fenêtre et c'est un gros merdier). C'est comme si deux "TextBox" se partageaient la propriété "Text".
Je pense qu'il y a un moyen de compiler l'OCX de façon à ce qu'il permettent la création d'instances multiples (comme un objet classique), mais j'ignore laquelle.
D'où ma question, comment peut-on faire pour déclarer tout simplement deux instances de mon contrôle ? Faut-il intervenir dans le programme appelant ou dans le programme de l'OCX ? Vb le gère-t-il ?
wanbao
Messages postés14Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention 6 juillet 2004 6 juil. 2004 à 12:24
Non, non, la gestion du port COM n'a rien a voir. Il s'agit d'un code qui est bien rodé. Le problème se situe au niveau d'une classe que je déclare dans mon OCX.
J'ai créé une classe "Communication" dans mon OCX, je me sert des données de cette classe pour faire fonctionner mon OCX. Le probleme, c'est que lorsque je déclare deux OCX, les deux vont pointer sur une meme instance de cet objet alors qu'une instance doit être créée pour chaque OCX.
J'espère que je ne t'embrouille pas trop...
En gros, quand je modifie une donnée de mon OCX (donnée qui appartient à cette classe), je la modifie pour les deux OCX. Du coup ils ne sont pas indépendants et forcement, mon prog ne marche pas.
Je déclare pourtant une nouvelle instance de l'objet à chaque fois que j'initialise un OCX (évenement "Initialize"). Je ne comprends pas pourquoi la mémoire est si mal gérée. Je devrais avoir un objet par OCX. Il y a-t-il une propriété ou une méthode que je n'ai pas renseigner ?