Obligement - L'Amiga au maximum

Vendredi 06 juin 2025 - 12:23  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : Assembleur - Structure Menu
(Article écrit par Max et extrait d'Amiga News Tech - juin 1989)


Initialiser un menu est une chose assez harassante à mettre en oeuvre. Non pas que cela pose des difficultés particulières, mais il faut y passer un certain temps, pour ne pas dire un temps certain. Nous allons voir maintenant qu'une structure Menu complète prend beaucoup de place dans un listing.

Composition de la structure Menu

Une structure Menu est donc composée de 28 octets :

Décalage Signification
0 Prochain Menu
4 Position X
6 Position Y
8 Largeur
10 Hauteur
12 MenuFlag
14 Pointeur sur le texte
18 Pointeur sur le 1er pont
20 Quatre mots réservés au système

Le premier mot long est l'adresse de la prochaine structure Menu, dans la barre de menus. Le nombre de structures possibles n'est limité que par la largeur de l'écran. Si aucun autre menu ne suit, ce mot doit être mis à zéro.

Les quatre mots suivants (position et dimension) ne devraient poser aucun problème, si l'on se rappelle que les valeurs sont exprimées en pixels.

Le mot intitulé "MenuFlag" ne peut prendre que deux valeurs. Il indique si le menu en question peut être déroulé (MenuFlag = 1) ou non (MenuFlag = 0). Un menu non sélectionnable se reconnaît au fait que toutes ses entrées apparaissent en grisé. Le mot long suivant est l'adresse du texte-titre de notre menu.

On trouve ensuite un autre mot long, qui est un pointeur sur la structure du premier point de notre menu (un point de menu n'étant rien d'autre que l'une des options sélectionnables dans ledit menu). Quatre mots viennent enfin conclure cette structure, qui sont réservés pour Intuition.

Les entrées

Mais tout cela ne suffit bien entendu pas. En plus des titres de menus eux-mêmes (nous grouperons tous les textes en fin de listing), il faut définir leurs différentes entrées. Là encore, des structures particulières sont à initialiser. Nous appellerons cette structure MenuPoint, qui ne devra bien sûr pas être confondue avec la structure Menu évoquée ci-dessus. Cette structure MenuPoint est définie de la manière suivante :

Décalage Signification
0 Prochain point de menu
4 Position X
6 Position Y
8 Largeur
10 Hauteur
12 MenuPointFlag
14 Exclude
18 Pointeur sur le texte
22 Pointeur HighImage
26 ShortCut
28 Pointeur sur le sous-menu
32 Un mot long réservé

Détaillons maintenant cette structure. Le premier mot long est un pointeur sur la structure du prochain point dans le menu. Si le point de menu actuel est le dernier, il doit être mis à 0.

On trouve encore une fois une indication de la position de notre point de menu. Par rapport à la boîte entourant tous les points du menu et exprimée en pixels.

Le mot "MenuPointFlags" permet de définir les particularités de notre point de menu. Chaque bit a une signification particulière :

Bit/Nom Signification
0 - CHECKIT Le point sera crocheté s'il est sélectionné
1 - ITEMTEXT Le point de menu est du texte
2 - COMMSEQ La sélection est également possible avec Amiga+Touche
3 - MENUTOGGLE Crochet activé puis enlevé
4 - ITEMENABLED Point du menu sélectionnable
6 - HIGHCOMP Point inversé si sélectionné
7 - HIGHBOX Point encadré si sélectionné
8 - CHECKED Point déjà crocheté

Intuition offre la possibilité de désélectionner un point de menu particulier, lors de la sélection d'un autre point de menu. Le mot long qui suit est donc un pointeur sur le point de menu à désélectionner dans ce cas, ou bien 0 si aucune exclusion ne doit avoir lieu. On trouve ensuite un pointeur sur le texte, qui composera ce point de menu.

Il est également possible, lors de la sélection du point de menu, de remplacer son texte par un autre texte, ou bien par un dessin. Le mot long suivant est un pointeur sur le texte, ou le dessin de remplacement. L'octet suivant contient le code ASCII de la touche qui, combinée avec la touche Amiga-droite, permettra d'appeler le point de menu, sans dérouler le menu lui-même (on appelle cela un raccourci clavier). Il est suivi d'un octet de remplissage, afin que l'adresse suivante soit paire.

Vient ensuite un mot long pointant sur le sous-menu qui se déroulera par la sélection de ce point. Si aucun sous-menu ne doit apparaître, ce pointeur doit être nul. Et pour terminer, on trouve un mot long qu'Intuition utilisera de manière transparente au programme.

Tous les points de menu sont bâtis d'après cette structure MenuPoint. Les différents points d'un sous-menu sont, eux aussi, bâtis d'après cette structure.

IntuiText

Il nous reste toutefois une dernière structure à étudier, la structure IntuiText. Tous les textes présents dans un menu, à l'exception du titre des menus eux-mêmes, sont bâtis d'après une structure IntuiText. En effet, je vous rappelle qu'un point de menu n'est rien d'autre qu'une "boîte", dans laquelle viendra s'inscrire un texte particulier. La structure IntuiText ne fait que 16 octets et est conçue comme suit :

Décalage Signification
0 Detail Pen
1 Block Pen
2 Write Mode
4 Position X
6 Position Y
10 Police à utiliser
14 Pointeur sur le texte
18 Pointeur sur le prochain texte

Nous avons déjà vu, à l'occasion des structures NewScreen et NewWindow, la signification de Detail Pen, Block Pen et Fonte. La position est là encore exprimée en pixels et par rapport au coin supérieur gauche de la boîte contenant le texte, autrement dit, le point de menu.

Nous trouvons ensuite un mot long, pointeur sur le texte lui-même. Une structure IntuiText étant également obligatoire pour, par exemple, les requêtes, il est possible qu'il y ait plusieurs lignes de textes à afficher, d'où la présence du dernier mot long. Toutefois, dans le cas de menu, il est évident qu'une seule ligne de texte devra apparaître ; ce pointeur sera donc fixé sur 0.

Ben dis donc !

Voilà qui clôt notre étude des différentes structures associées à un menu. Pour illustrer tout cela, nous allons mettre en place une barre de menus qui comportera deux titres ("Titre1" et "Titre2"). Le premier titre comportera trois points ("Point1_1" à "Point1_3"), tandis que le second en comportera cinq ("Point1_1" à "Point1_5"). Le troisième point de ce second titre provoquera l'apparition d'un sous-menu, comportant lui-même deux points ("Point2_3_1" et "Point2_3_2"). En voici une représentation "graphique" :

Menu1        Menu2
ùPoint 1_1   ùPoint 2_1
ùPoint 1_2   ùPoint 2_2
ùPoint 1_3   ùPoint 2_3--ùPoint 2_3_1
             ùPoint 2_4--ùPoint 2_3_2
             ùPoint 2_5

Étudiez donc ce menu et, en vous aidant des routines de mise en place et de fermeture d'un menu, amusez-vous à le modifier à votre guise pour le mieux comprendre. Je suis conscient que les explications que j'ai pu vous donner ici ne soient pas forcément très claires dès le premier abord. N'oubliez pas que c'est en se mouchant que l'on devient moucheron...

Assembleur
Assembleur
Assembleur


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]