Salut à tous
J'ai créé un système de plugin (DLL) pour mon application. Pour cela, chaque plugin a une procedure exportée qui transmet les informations du plugin (nom, rang, pleins d'autres choses et surtout icône).
Cette procédure admet un paramètre qui est une classe contenant uniquement ces informations.
Chaque plugin contient son propre icône en ressource. La classe contenant les informations contient entre autres un TBitmap créé à la création de la classe et détruit à se destruction. Jusque là, rien d'anormal.
L'appel à cette fonction du plugin renseigne les informations et charge la ressource dans le TBitmap. Tout s'affiche correctement mais à la fermeture (donc à la destruction du TBitmap) j'ai une belle access Violation Error des familles que j'essaie de corriger depuis quelques jours maintenant.
Je pense avoir identifié le problème sans en être vraiment sûr: D'après ce que j'ai lu, TBitmap ne contient pas à proprement parler une image mais pointe vers un handle de l'image. C'est pour cela qu'une copie de TBitmap est ultra rapide.
Donc, je me retrouve à la sortie de la procédure avec un TBitmap qui pointe potentiellement vers un handle qui n'existe plus (puisque "contenu" par le plugin déchargé à la sortie de l'appel à la procédure). Mais le fait que l'image s'affiche correctement me fait douter de cette raison.
Donc j'ai essayé de rendre mon TBitmap indépendant mais rien à faire... FreeImage ne donne rien, ReleaseHandle ne donne rien, dessiner la ressource sur le TBitmap ne donne rien bref, aucun succès jusqu'à aujourd'hui.
La seule particularité de cette image est qu'elle est issue d'un PNG donc avec de la transparence.
Quelqu'un connait-il la solution de ce mystère ?
Partager