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 : Amiga E et MUI - la notification
(Article écrit par Pierre Girard et extrait d'Amiga News - juin 1997)
|
|
La notification
Comme promis le mois dernier, nous continuons notre saga MUI. Comme j'ai l'impression que les objets MUI sont relativement
faciles à appréhender, j'ai décidé de vous présenter la notification.
C'est une notion qui a déjà été abordée dans Amiga News dans la série d'articles
d'Éric Totel sur le C en 1995. La notification permet de relier un événement à un objet. L'interaction peut se réaliser entre
plusieurs objets ou bien entre des objets et votre programme. J'en vois déjà un qui bâille, alors je m'en vais prendre un exemple.
Vous voulez programmer un logiciel de dessin et inclure un bouton pour effacer l'écran ? Facile ! Il vous suffit de faire une
notification sur le bouton en question en précisant que l'action à effectuer est un appel à votre propre routine d'effacement.
Autre exemple, il est possible de faire des notifications entre objets, pour faire correspondre une entrée d'un gadget cyclique
à un élément d'une listview, par exemple. Cette liste étant infinie, je ne m'attarderai pas plus sur le sujet. Pour résumer, grâce
à la notification, il est possible de modifier les attributs d'un autre objet ou d'interagir avec votre programme (appel de fonction,
ou renvoi d'un identificateur à l'objet application).
En pratique
La notification s'effectue en appliquant une méthode sur l'objet origine de l'événement. Voilà comment ça se présente :
doMethod( Objet d'origine, [MUIM_Notify, Attribut responsable de l'événement, Valeur attribut, Objet_Destination, Nombre de
Paramètres utilisés pour décrire l'action, Paramètre1, Paramètre2...]).
Il faut ici noter que le nombre de paramètres est le nombre total, c'est-à-dire que l'action elle-même est considérée comme un
paramètre. L'action est effectuée quand l'attribut atteint la valeur spécifiée, ou tout le temps si on fixe sa valeur
à MUIV_EveryTime (pour tout changement de la valeur de l'attribut). Une autre constante intéressante à connaître est MUIV_TriggerValue
qui permet de communiquer à l'objet-destination la position (ou valeur) de l'objet source. Voici un ou deux exemples classiques :
doMethod( mywindow, [MUI_Notify, MUIA_Window_CloseRequest, MUI_TRUE, mywindow, 3, MUIM_Set, MUIA_Window_Open, FALSE]).
|
Quand on clique sur le gadget de fermeture de la fenêtre, celle-ci se ferme. Notez l'usage de MUI_TRUE qui, en E, n'a pas la
même valeur que TRUE.
L'exemple suivant montre comment renvoyer une valeur (définie par vos soins) à votre programme quand un certain événement se
produit :
doMethod( Objet_Source, [MUIM_Notify, Attribut, Valeur, app, 3, MUIM_Application_ReturnID, id_Constante]).
|
Il reste à introduire la gestion de l'événement dans la boucle d'attente de votre programme puis l'action à effectuer suivant la
valeur retournée (voir programme). La dernière possibilité est l'appel direct d'une fonction qui s'effectue grâce à MUIM_CallHook
mais qu'il serait trop long ici de détailler (Cf. Autodocs). Je pense que l'on peut conclure en citant deux macros qui sont bien
utiles, même si elles sortent un peu du cadre de la notification. Il s'agit de get() et set() qui permettent soit de trouver la
valeur de tel attribut d'un objet, soit de fixer une valeur à un attribut :
get(objet,attribut,{variable})
set(objet,attribut,valeur)
|
Conclusion
Je pense que j'ai à peu près fait le tour du problème. Le mieux pour bien appréhender la notion de notification est d'examiner
les exemples fournis avec le kit développeur de MUI avant d'expérimenter vous-même. Atchao.
|