Suivez-nous sur X
|
|
|
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
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : Assembleur - PublicMenus (deuxième partie)
(Article écrit par Max et extrait d'Amiga News Tech - août 1992)
|
|
Vous avez eu droit le mois dernier à la première partie d'une
bibliothèque pas comme les autres... Vous croyiez en avoir fini avec moi, mais je suis encore là...
Les six pages de ce premier article nous avaient permis de lister tous les
fichiers annexes de la bibliothèque, à savoir les includes C et assembleur (publicmenus.[h|i]
et publicmenusbase.[h.i]), le fichier FD (publicmenus_lib.fd) et les autodocs (publicmenus.docs)
contenant un descriptif détaillé de toutes les fonctions de la bibliothèque. Nous ne reviendrons
donc pas dessus, seules les plus importantes seront survolées. Je vous conseille donc plus que
vivement de garder ce fichier à portée de main et de clavier.
Étaient également publiés le source des fonctions (PLib.s et PTask.i) ainsi qu'un fichier script
de type "make" permettant de construire le programme final, à savoir l'exécutable libs:publicmenus.library.
Au menu aujourd'hui
Il manquait cependant le plus important, à savoir le listing de la tâche s'occupant de la
gestion des menus déroulants. Cette tâche intègre un InputHandler qui surveille tout ce qui se
passe dans l'Amiga et détourne certains évènements à son profit. La priorité
de l'InputHandler a été arbitrairement fixée à 65, ce qui est bien au-dessus de celle d'Intuition
(qui est de 50, rappelons-le).
La séquence de travail de notre InputHandler est la suivante :
La clause "voler évènement" signifie que l'InputHandler retire l'évènement en question de
la liste des évènements, afin qu'Intuition n'en bénéficie pas. Ceci est nécessaire pour éviter
des problèmes de blocage du système : étant donné que pour dérouler les menus, la tâche "bloque"
l'écran cible (via la fonction LockLayers de la layers.library), Intuition ne pourrait pas
y accéder si elle devait, par exemple, redessiner les contours d'une fenêtre de cet écran. Et
si Intuition est bloquée, tout le système est bloqué.
Les autres routines de la tâche secondaire se chargent de l'affichage et de la gestion des menus ;
elles ne seront pas décrites ici car ne possédant aucune particularité... heu... particulière.
Listing 1 : PTask.s
|