bjet@@YGXPAUOBJET@@HHNNHH@Z" (ByRef Obj As Objet, ByVal x As Long, ByVal y As Long, ByVal zoom As Double, ByVal angle_degrés As Double, Optional ByVal effet As Long, Optional ByVal alpha As Long) As Long
Hier, je me suis mis à l'adaptation de ma librairie pour VB -> en C. En VB, j'avais fait une DLL écrite en C et l'API en VB. Et ce qu'il y a de bien pratique, c'est les arguments optionnels, par exemple:Public Declare Function RotationObjet Lib "vbDLL.dll" _ Alias "?RotationOVous voyez, les deux derniers arguments sont facultatifs (cette fonction étant déjà un monstre en elle-même). Si je prends une fonction plus simple (FxCadre qui dessine un rectangle plein), je peux l'écrire ainsi:
FxCadre 0,0,300,300,RGB(255,0,0)
Et ça me dessinera un grand cadre rouge. Là pas de problème, et si je veux utiliser un effet:
FxCadre 0,0,300,300,RGB(255,0,0),fxAddition
Avec un argument supplémentaire encore pour l'alpha-blend:
FxCadre 0,0,300,300,RGB(255,0,0),fxTransparence,128
Malheureusement en C, je suis obligé d'écrire une horreur même si je ne veux pas utiliser d'effet (voici l'équivalent de la première ligne):
FxCadre (0,0,300,300,RGB(255,0,0),FX_OPAQUE,0);
J'ai essayé avec les ... et les va_list, mais ce n'est pas adapté (on ne peut apparemment pas savoir s'il n'y a plus d'argument). La question, y'a-t-il un moyen en C de faire des arguments optionnels, qui prendront éventuellement la valeur nulle s'ils ne sont pas passés?
Merci d'avance.
[Edit] Pas bô le format...