Pb éxécution méthode activeX

inertia Messages postés 4 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 7 juin 2004 - 7 juin 2004 à 10:02
inertia Messages postés 4 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 7 juin 2004 - 7 juin 2004 à 10:05
salut a tous, je developpe un simulateur de commande numérique en ce moment (VB).

je me suis programmé un activeX C++ pour gérer l'openGL

ça fonctionne bien mais la g un pb :

en fait j'attaque la phase de simulation. J'ai donc une boucle VB et dans cette boucle VB j'appel une méthode de mon activeX. la methode est testé est validé, elle fonctionne (elle incrémente juste un indice)

le pb c'est que tous les appels aux méthodes s'éxécute quand la boucle est terminé alors qu'ils devrait s'éxécuté pendant l'éxécution de la boucle !

j'ai essayer doEvents et la méthode DoEv de ce site qui est aparement plus rapide mais rien n'y fait. Ca fé 3 jour que je suis dessus je desespère :sad)

on dirais que pendant l'éxécution de la boucle, VB n'arrive pas a appeler les méthodes de l'activeX (il les stocke dans une pile) puis dès qu'elle est finie il purge sa pile d'évenemenets recus.

du coup j'ai parfois ce type d'erreur :

Erreur d'éxécution '-2147417848 (80010108)'
la méthode increase cut de l'objet '_DPFSGLOCX' a échoué

l'intelligence c'est comme un parachute
si on en a pas on s'écrase

1 réponse

inertia Messages postés 4 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 7 juin 2004
7 juin 2004 à 10:05
au fait voici le code pour info :

Public Sub simuleProgram(prgID As Integer)

Dim currentInstruction As instruction
Dim action As String

' fixe la vitesse de coupe initiale en mm/min
frmSimulation.simulateur.setSimulationSpeed (8200)

' initialise le simulateur
frmSimulation.simulateur.startSimulation

pause (1) ' pause 1 seconde pour laisser le timer démarrer

' appel les instructions du programme principale :
For Each currentInstruction In prg(prgID).instructions

' marque l'instruction courante dans l'éditeur
frmEdit.VSFlexEdit.Select currentInstruction.numLine + 1, 0

' traite l'instruction courante
Select Case currentInstruction.codeAction

Case ACTIVER_OUTILS: frmSimulation.simulateur.moveDownHead

Case DESACTIVER_OUTILS: frmSimulation.simulateur.moveUpHead

Case DEPLACEMENT_LINEAIRE_RAPIDE: frmSimulation.simulateur.increaseCut

Case DEPLACEMENT_LINEAIRE: frmSimulation.simulateur.increaseCut

Case DEPLACEMENT_ANGULAIRE_HORAIRE: frmSimulation.simulateur.increaseCut

Case DEPLACEMENT_ANGULAIRE_TRIGO: frmSimulation.simulateur.increaseCut


End Select

' traite les évenements de la file windows
DoEv

Next currentInstruction

' fin de la simulation
frmSimulation.simulateur.stopSimulation

End Sub

DoEv est execatement la fonction que j'ai trouvé sur ce site et increaseCut (incremente juste un compteur !)

l'intelligence c'est comme un parachute
si on en a pas on s'écrase
0