Prog: passage de valeur dans une action
Bonjour,
j'ai un nouveau problème très étrange et spécifique au développement d'extension MMF.
Voilà, je suis actuellement en train de faire une fonction qui permet de régler la transparence de la fenêtre (vu que l'ancienne extension dédiée ne sera pas portée). Tout fonctionne parfaitement si je fait ceci :
- setOpacity(100)
Mais si je fait ceci :
- setOpacity(alterable value A("obj"))
Ca ne marche plus sachant que la valeur de alterable value A("obj") est 100...
Faut-il faire quelque chose de spécial lors de la récupération du paramètre pour que les alterables values fonctionnent ?
Merci d'avance [img]/centre/images/graemlins/wink.gif[/img]
EDIT: C'est d'autant plus étrange qu'avec un compteur ça fonctionne...
Re: Prog: passage de valeur dans une action
Non, en principe il n'y a rien de spécial à faire, comme l'action a un seul paramètre il suffit de le récupérer dans la variable param1. Il faut mettre un PARAM_EXPRESSION dans la définition du paramètre dans la ligne de définition de l'action, c'est peut-être ça?
IDMN_ACT_SETOPACITY, IDS_ACT_SETOPACITY, ACT_SETOPACITY, 0, 1, PARAM_EXPRESSION, IDS_ENTER_OPACITY,
Yves.
Re: Prog: passage de valeur dans une action
Très étrange, je viens de remarquer que ça me fait la même chose avec une récupération de chaine d'un edit (si je fait mafonction("truc"), ça marche mais si je fait mafonction(Str$(edit)), ça ne marche pas).
Voici la ligne de déclaration de ma fonction pour changer l'opacité :
IDMN_ACT_SETWINDOWOPACITY,M_ACT_SETWINDOWOPACITY,A CT_SETWINDOWOPACITY,0, 1, PARAM_EXPRESSION, P_OPACITY,
Je ne pense pas que ça vienne de là car l'édition fonctionne bien et ça écrit bien tout correctement.
Je ne comprend pas là...
EDIT: Je récupère l'argument comme ceci pour SetWindowOpacity() (action) :
<font class="small">Code:</font><hr /><pre>int opacity=param1;</pre><hr />
Et je récupère ma chaine de caractère en argument comme ceci pour mon autre fonction (expression) :
<font class="small">Code:</font><hr /><pre>char *machaine;
long p1 = CNC_GetFirstExpressionParameter(rdPtr, param1, TYPE_STRING);
machaine= (LPSTR)p1;</pre><hr />
EDIT2: Pour le passage de INT, ça ne marche pas avec une Alterable Value mais ça marche avec une valeur fixe ou un compteur... Pour le passage de STRING, ça ne marche pas avec une Edit mais ça marche avec une chaine fixe ou un objet String (mais si j'utilise un objet string, ça plante à la fermeture !)... Je comprend rien là...
Re: Prog: passage de valeur dans une action
Je viens de remarquer un autre problème, je ne sais pas si c'est lié mais si j'utilise plusieurs fonctions de mon extension dans une même expression, le résultat est mauvais.
Ca me fait penser au bug de QuickHash qui ne peux pas faire un MD5 et un SHA1 dans une même expression...
C'est peut-être que je déclare des variables dans mes fonctions (action et expression) que j'utilise en return ?
Re: Prog: passage de valeur dans une action
Tu pourrais poster le source de l'action et de l'expression, ainsi que la ligne de définition de l'expression ?
Difficile de voir ce qui cloche sans voir le source...
Pour le coup des valeurs fausses, c'est peut-être parce que tu utilises un buffer mémoire qui est écrasé par l'appel à une fonction dans la même epxression.
Yves.