Tibz8> Hmm, ben donc dans cette structure, tu donnes des coordonnées au composant (représentant le centre, je pense que c'est meiux de cette manière). Comme ça tu peux dessiner les composants au bon endroit (en utilisant aussi les infos. de type, pour la taille et la forme), et ensuite pour les fils c'est plus simple, puisqu'ils ne peuvent-êtres que horizontaux ou verticaux (avec éventuellement des "ponts" pour les endroits où les fils se chevauchent, mais ce n'est pas une "feature" essentielle

) et que grâce aux infos sur les composants (et leurs types) tu sais d'où part le fil et où est-ce qu'il arrive.
La position a seulement une importance relative la dedans, donc c'est pas la peine de chercher à établir un système de coordonées complexe. Il suffit juste d'avoir un espace assez grand comme (short, short) dans lequel tu pourras défiler. (donc il faudra faire un clipping pour le dessin)
En ce qui concerne les parties spécifiques à chaque composant, tu as le choix:
- soit tu fais un tableau de structures qui définissent les fonctions (de dessin, et de position des entrées/sorties) spécifique à chaque type de composant
struct COMPONENT_TYPE {
DRAWING_FUNCTION *draw;
INPUT_POSITION_FUNCTION *in_pos;
OUTPUT_POSITION_FUNCTION *out_pos;
// Et aussi les infos comme la taille, etc... (j'avais oublié)
} components[];
^^ ça ressmblerait un peu à ça
- soit tu fais une fonction de chaque type qui gère tous les composants. C'est toi qui vois (je pencherais plutôt pr la première sachant qu'elle pourrait permettre des extensions

)