-
ActiveX et Thread
Bonjour :)
Je suis en traint de plancher sur l'integration d'une application au sein d'une page web ou autres application.
Suivant l'exemple d'une ancienen application utilisée, je pensait transformer mon application en activeX (ocx).
J'ai donc developpé une bibliotheque activeX avec une active form qui me sert de base a mon application.
Pour le reste, je considere mon active form comme le TForm principal d'une applciation classique.
Tout samble fonctionner a peu pres comme il fait mise a part que j'ai besoin de boucler sur une fonction sans que cela interagisse sur le deroulemetn de l'application.
C'est une applciation 3D avec rendu graphique.
J'ai donc besoin de faire appel a la boucle de rendu en permanance.
Sous un application standard, soit je l'inclut dans un TThread soit je la met dans une boucle infinie interompue par un application.processmessage, soit (le cas courrant) j'utilise l'event OnIdle d'un TApplicationMessage.
Toutes ces techniques ne fonctionnent pas ... et j'aurais besoin d'avoir vos avis la dessus.
Dernierement j'ai teste la creation d'un thread Win32 (CreateThread) mais j'ai des erreur de violation d'acces et autres problemes d'execution ....
Merci d'avance :)
-
Synchronize
que veut dire exactement "ces techniques ne fonctionnent pas" ? Quels sont les symptômes ?
Si il y a des problèmes type des violations d'accès, est-ce que le thread secondaire utilise bien la méthode Synchronize pour les affichages? Tout ce qui concerne la VCL doit absolument être executé dans le thread principal, cf l'aide sur Tthread.Synchronize.
Bruno
-
- Le TThread ne semble pas du tout s'executer.
- Le application.processMessage ne debloque pas une boucle de rendue infinie "while true" dans le cadre d'une application mono thread
- Le TApplicationEvent.OnIdle ne s'execute pas.
J'ai fini par regler le probleme via un thread win32 (createThread) et en corrigeant la violation d'acces par un "coinitialize" que j'avais oublié.
sinon la boucle de rendu en question ne s'execute que sur des fonction d'interfaces COM chargee depuis la dll proprietaire des APIS 3D.
C'est lourd mais bon ca a l'avantage de marcher quand meme.
Si une solution autre existe je suis preneur :)
Sinon je me penche aussi sur la solution OLE qui est plus "standard" peut etre vu que OOo Impress ne semble pas accepter l'insertion d'activeX mais accepte les Objets OLE.
La encore j'ai des soucis car si j'ajoute un objet automation a mon application pour la piloter, j'ai bien l'application qui se lance lors du chargement de l'objet mais elle s'execute de maniere independante et non au sein de l'application hote (comme adobe PDF dans une page web ....)
Quand on manipule Excel ou Word ca marche :(