185Fermer187
Kevin KoflerLe 20/04/2009 à 02:19
Sally (./175) :
je suppose que c'est un ROM call, il te donne juste son adresse...

Oui, *(*200u+1620u), c'est le ROM_CALL nº1620/4.
Folco (./176) :
Ok, j'avais pas pensé à caster, chsuikon ! Je déclare pas ça en WIN_RECT, parce que ces données (4 shorts) me servent tantôt à afficher un point (là faut des shorts), une ligne (idem), ou des rectangles (et là, on est sur du WIN_RECT)...

Et ben, tu le déclares en WIN_RECT, et tu utilises Data->CursX0.x0 etc. comme il faut quand tu as besoin des short directement.
Folco (./177) :
Et voilà, ça, ça marche :
DrawClipRect((WIN_RECT*)&(Data->CursX0),&(Data->Clip),Data->RectangleModePlane0);

Ce cast est une violation des règles d'aliasing, tu n'as pas le droit de faire ça, même si ça a l'air de marcher.
Folco (./185) :
Donc j'ai pas nommé l'union.

C'est une union anonyme, tu peux accéder à ses éléments directement sans passer par un nom d'union. C'est une extension GNU. (Et insérer WIN_RECT; sans nom est une extension de Visual C/C++ que GCC gère avec le flag -fms-extensions, activé par défaut dans TIGCC (en interne dans le compilateur).)