J'ai vu un message sur le forum anglais avec peut-être un problème avec la commande Setlisticongadgetcolor() de ma librairie MorelisticonGadget.
J'ai pas bien compris le problème et j'ai testé mais avec succès.
Fred, faut-il que je réécrive mes fonctions avec la commande ISGadget() ?
Je teste dans chaque appel que le gadget existe avec GadgetId(Gadget).
Quels sont les changements de la version 3.90 qui pourraient troubler le fonctionnement des mes librairies ?
Merçi
Morelisticongadget() lib et PB 3.90
Effectivement, IsGadget() est la function qui te permet facilement de voir si un gadget existe. Mais a mon avis, faut mieux mettre un debugger check pour indiquer que le gadget n'existe pas, parce que IsGadget() peut devenir couteux si beaucoup de gadgets sont créés.
Dernière modification par Fred le ven. 23/avr./2004 14:55, modifié 1 fois.
Généralement, je teste dans ma librairie si le #Gadget passé existe effectivement avec ta fonction GadgetID() pour éviter les crash.
Quel est la différence avec IsGadget ?
Que fait exactement IsGadget ?
Code : Tout sélectionner
MOV eax, dword [Gadget]
CALL PB_GadgetID
TEST eax, eax
JZ _Erreur
Que fait exactement IsGadget ?
IsGadget valid un numero de gadget. Avec la fonctionality #PB_Any, il y 2 facons: un tableau (methode precedente) et une liste chainée (pour les #PB_Any). Maintenant, chaque library exporte une fonction du type: _PB_Gadget_GetObject, qui prend un numero d'objet et renvoie son id. Donc il te faudra utiliser cette fonction pour etre completement compable. Etant donné que c'est une fonction C, le parametre est passé sur la pile.
Le IsGadget(), je le mettrais dans la routine de debug, comme pour les autres fonctions PureBasic.
Code : Tout sélectionner
PUSH dword id
CALL _PB_Gadget_GetObject
; eax contient le pointer sur l'objet, qu'il soit dynamic ou non.