Obligement - L'Amiga au maximum

Samedi 16 décembre 2017 - 02:22  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


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.

Amiga E
Amiga E


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