Obligement - L'Amiga au maximum

Samedi 20 avril 2024 - 12:20  

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 : Amiga C Manual - Les requêtes
(Article écrit par Anders Bjerin et extrait d'Amiga C Manual - mars 1990)


Note : traduction par Serge Hammouche.

5. Les requêtes

5.1 Introduction

Les requêtes sont des cadres pleins d'un type d'information qui attend une réponse en provenance de l'utilisateur. Il pourra s'agir d'une demande aussi simple que celle d'insérer une disquette dans le lecteur de disquette interne comme d'une requête de fichier totalement fonctionnelle. Les requêtes ressemblent à des petites fenêtres auxquelles on aurait relié des gadgets ; ils disparaîtront de l'écran dès que l'utilisateur "aura satisfait à la demande".

5.2 Les différents types de requêtes

Il y a trois types différents de requêtes :
  • Les requêtes du système.
  • Les requêtes d'application.
  • Les requêtes double-menu.
5.2.1 Les requêtes du système

Les requêtes du système sont ouvertes et gérées par Intuition et votre programme n'a aucun moyen de contrôle sur celles-ci. Par exemple, si l'utilisateur essaie de charger un fichier à partir du lecteur de disquettes DF1: et qu'il n'y a pas de disquette dans le lecteur, le système d'exploitation affichera la demande suivante :

-----------------------------------
| Requête du système ========[*][*]
-----------------------------------
| Pas de disquette présente    |  |
| dans l'unité 1               |  |
|                              |  |
| -------------    ----------- |  |
| | Réessayer |    | Annuler | |  |
| -------------    ----------- |  |
--------------------------------[*]


Une chose importante au sujet des requêtes du système est qu'elles ressemblent à des petites fenêtres. Vous pourrez les faire bouger, les envoyer derrière ou devant d'autres fenêtres/requêtes et les redimensionner.

5.2.2 Les requêtes d'application

C'est un type de requêtes qu'on peut ouvrir par programme. Elles peuvent avoir une taille quelconque (limitée seulement par la taille de l'écran) et pourront être aussi simples ou aussi compliquées que vous le voudrez.

Si vous voulez seulement une requête de type Oui/Non (Vrai/Faux), vous pourrez appeler la fonction AutoRequest() et Intuition ouvrira la requête et s'occupera du reste. Par ailleurs, si vous voulez une requête plus sophistiquée, vous devrez déclarer et initialiser une structure Requester avec vos spécifications et appeler ensuite la fonction Request().

Il est important de faire remarquer qu'on ne peut pas faire bouger, redimensionner, etc. une requête d'application (naturellement, on pourra toujours faire bouger et redimensionner la fenêtre où se trouve la requête). Seules les requêtes du système et celles bien simples ouvertes par la fonction AutoRequest se comportent comme des petites fenêtres.

Il y a aussi une autre différence importante. Lorsqu'on active une requête d'application, l'utilisateur ne pourra plus sélectionner les gadgets reliés à la fenêtre. La fenêtre est "gelée". Par exemple, essayez l'exemple 4 (voir fin d'article) et vous vous apercevrez que vous ne pouvez plus sélectionner le gadget de fermeture de la fenêtre tant que la requête est active. Par contre, si on a activée une requête du système, l'utilisateur pourra toujours cliquer sur le gadget de fermeture de la fenêtre et Intuition enverra le message CLOSEWINDOW.

5.2.3 Les requêtes double-menu

Les requêtes double-menu (réagissant à un double-clic du bouton droit de la souris) ressemblent aux requêtes d'application normales, si l'on excepte qu'elles s'afficheront dès que - et seulement si - l'utilisateur clique deux fois sur le bouton droit de la souris (bouton de menu). Pour créer une requête de ce type, vous devrez déclarer et initialiser une structure Requester et appeler ensuite la fonction SetDMRequest(). À partir de ce moment, chaque fois que l'utilisateur cliquera deux fois sur le bouton droit de la souris, la requête s'affichera à l'écran. Appelez la fonction ClearDMRequest(), si vous ne voulez plus que l'utilisateur puisse avoir accès à la requête.

On ne peut mettre qu'une seule requête de ce type par fenêtre.

5.3 Le graphisme des requêtes

Vous pouvez représenter une requête de deux manières différentes. Soit vous pouvez informer Intuition de ce que vous souhaitez - et Intuition s'occupera de tout -, soit vous pouvez fournir à Intuition votre image (bitmap) personnalisée (que vous aurez configurée vous-même).

Si vous souhaitez qu'Intuition dessine la requête à votre place, il vous suffira de décider de la couleur de fond de la requête, de déclarer et d'initialiser une ou plusieurs structures Border et IntuiText.

Si vous fournissez votre image personnalisée, Intuition ne dessinera plus rien. En d'autres termes, tous les gadgets reliés à la requête n'auront plus besoin de structures Border/IntuiText/Image du moment qu'Intuition ne s'en occupera pas.

5.4 Le positionnement

On peut positionner une requête soit par rapport au coin supérieur gauche de la fenêtre, soit par rapport à la position du pointeur. Si vous souhaitez la positionner par rapport à la fenêtre, vous devrez tout simplement mettre les variables LeftEdge et TopEdge à la valeur voulue. Par contre, si vous souhaitez positionner la requête par rapport à la position du pointeur, mettez à 1 le drapeau POINTREL et initialisez RelLeft et RelTop aux valeurs voulues.

5.5 Les requêtes et les gadgets

Quand vous créez une requête, sauf si vous le faites en appelant la fonction AutoRequest(), vous devrez lui relier au moins un gadget. Ces gadgets travaillent exactement comme ceux qui sont reliés aux fenêtres, mais en diffèrent sur deux points importants :
  1. Pour chaque gadget relié à une requête, on devra mettre à 1 le drapeau REQGADGET du champ GadgetType.
  2. Un gadget au moins devra pouvoir satisfaire à une demande, ce qui veut dire qu'un gadget au moins, devra avoir son drapeau ENDGADGET du champ Activation mis à 1 (lorsqu'on sélectionnera un gadget avec son drapeau ENDGADGET validé, la requête aura une réponse en retour et disparaîtra de l'écran).
Rappelez-vous que l'utilisateur devra toujours pouvoir avoir un moyen sûr d'abandonner la requête sans rien déranger. On devra toujours placer une "sortie par l'intermédiaire du gadget" dans la partie droite de la requête. Voici un exemple :

---------------------------------------
| Requête du système ============[*][*]
---------------------------------------
| Voulez-vous vraiment quitter ?   |  |
|                                  |  |
|                                  |  |
| -------                  ------- |  |
| | Oui |                  | Non | |  |
| -------                  ------- |  |
------------------------------------[*]


Remarquez que le bouton Oui/Vrai/Réessayer se trouve toujours à gauche et que le bouton Non/Faux/Annuler est toujours à droite.

Important : assurez-vous que les gadgets se trouvent à l'intérieur de la requête car Intuition n'opère aucune vérification des lignes de démarcation.

5.6 Les requêtes simples

Si vous voulez créer une requête simple avec une option Vrai/Faux (ou seulement Faux), vous pourrez employer la fonction AutoRequest(). Vous donnerez à Intuition des informations sur l'aspect de la requête (hauteur, texte, etc.) et Intuition prendra en charge tout le reste. Elle ouvrira la requête, mettra le programme en attente et, dès qu'on en aura fini, renverra au programme une valeur booléenne qui l'informera sur la sélection faite par l'utilisateur. Si l'utilisateur sélectionne le gadget de gauche (réponse affirmative), Intuition retournera TRUE [VRAI], si l'utilisateur sélectionne le gadget de droite (réponse négative), Intuition retournera FALSE [FAUX].

Exemple :
  • resultat = AutoRequest( window, info_text, pos_text, neg_text, pos_IDCMP, neg_IDCMP, width, height );
  • window : pointeur sur une fenêtre s'il y en a une, autrement NULL.
  • info_text : pointeur sur une structure IntuiText contenant le "texte général".
  • pos_text : pointeur sur une structure IntuiText contenant le "texte affirmatif". Par exemple "TRUE", "YES", "RETRY", etc. (optionnel).
  • neg_text : pointeur sur une structure IntuiText contenant le "texte négatif". Par exemple "FALSE", "NO", "CANCEL", etc.
  • pos_IDCMP : Les drapeaux IDCMP indispensables pour satisfaire à la condition du gadget "affirmatif" (le drapeau RELVERIFY est déjà mis à 1).
  • neg_IDCMP : les drapeaux IDCMP nécessaires pour satisfaire à la condition du gadget "négatif" (le drapeau RELVERIFY est déjà mis à 1).
  • width : largeur de la requête en pixels.
  • height : hauteur de la requête en lignes.
5.7 L'ouverture d'une requête

Si, à la place d'une requête simple, vous souhaitez en employer une plus compliquée, vous devrez :
  • Déclarer et initialiser une structure Requester répondant à vos besoins.
  • Déclarer et initialiser les structures Gadget qui devront être reliées à la requête.
  • Appeler la fonction Request() pour afficher la requête en tant que requête normale ou appeler la fonction SetDMRequest() pour permettre à l'utilisateur de faire apparaître la requête en tant que requête double-menu.
5.7.1 L'initialisation d'une requête

Si vous souhaitez employer une requête, il vous faudra déclarer et initialiser une structure Requester qui ressemble à ceci :

struct Requester
{
  struct Requester *OlderRequest;
  SHORT LeftEdge, TopEdge;
  SHORT Width, Height;
  SHORT RelLeft, RelTop;
  struct Gadget *ReqGadget;
  struct Border *ReqBorder;
  struct IntuiText *ReqText;
  USHORT Flags;
  UBYTE BackFill;
  struct Layer *ReqLayer;
  UBYTE ReqPad1[32];
  struct BitMap *ImageBMap;
  struct Window *RWindow;
  UBYTE ReqPad2[36];
};

  • OlderRequest : initialisé et géré par Intuition. Le mettre à la valeur NULL.
  • LeftEdge, TopEdge : position de la requête par rapport au coin supérieur gauche de la fenêtre (si le drapeau POINTREL n'est pas mis à 1).
  • Width, Height : dimensions de la requête.
  • RelLeft, RelTop : si le drapeau POINTREL est mis à 1, ces valeurs indiquent la position de la requête par rapport au pointeur.
  • ReqGadget : pointeur sur le premier gadget d'une liste chaînée. Rappelez-vous qu'il doit y avoir au moins un gadget relié à la requête, avec son drapeau ENDGADGET mis à 1.
  • ReqBorder : pointeur sur une structure Border employée pour représenter la requête.
  • ReqText : pointeur sur une structure IntuiText employée pour "imprimer" le texte de la requête.
  • Flags : il y a deux drapeaux que vous devrez mettre à 1 :

    • POINTREL : mettez à 1 ce drapeau, si vous souhaitez positionner la requête par rapport au pointeur. Il fixe RelLeft et RelTop à l'endroit voulu.
    • PREDRAWN : si vous fournissez votre propre image personnalisée, mettez ce drapeau à 1, de la sorte Intuition n'essaiera pas de dessiner quelque chose.

    Intuition met à 1 les drapeaux suivants :

    • REQACTIVE : ce drapeau est mis à 1 lorsqu'on active la requête et il est mis à 0 lorsqu'on ferme la requête (on le désactive).
    • REQOFFWINDOW : ce drapeau est mis à 1 lorsque la requête est active et se trouve à l'extérieur de la fenêtre (l'utilisateur a peut-être diminué la taille de la fenêtre de sorte que celle-ci est bien plus petite que vous ne l'auriez pensé).
    • SYSREQUEST : ce drapeau est mis à 1 lorsque la requête est du type requête du système.

  • BackFill : registre de couleur employé pour colorier la requête avant d'y dessiner quelque chose. Par exemple, pour dessiner des graphismes sur un fond orange, vous mettrez à la valeur 3 le champ BackFill (l'orange est l'une des couleurs du WorkBench par défaut).
  • ReqLayer : pointeur sur la structure Layer de cette requête. Initialisé et géré par Intuition. Le mettre à la valeur NULL.
  • ReqPad1 : initialisé et géré par Intuition. Le mettre à la valeur NULL (employé par le système).
  • ImageBMap : si l'attribut PREDRAWN est mis à 1, ce champ devra contenir un pointeur sur une image personnalisée, autrement le mettre à la valeur NULL.
  • RWindow : initialisé et géré par Intuition. Le mettre à la valeur NULL (employé par le système, il pointe sur la fenêtre à laquelle est reliée cette requête).
  • ReqPad2 : initialisé et géré par Intuition. Le mettre à la valeur NULL (employé par le système).
Voici un exemple d'initialisation d'une structure Requester :

struct Requester my_requester=
{
  NULL,             /* OlderRequester, utilisé par Intuition.   */
  40, 20,           /* LeftEdge, TopEdge, valeur X du point de  */
                    /* (40 pixels), valeur Y du point de départ */
                    /* (20 lignes).                             */
  320, 100,         /* Width, Height, largeur 320 pixels,       */
                    /* hauteur 100 lignes.                      */
  0, 0,             /* RelLeft, RelTop, étant donné que le      */
                    /* drapeau POINTREL n'est pas mis à 1,      */
                    /* Intuition ignorera ces valeurs.          */
  &my_first_gadget, /* ReqGadget, pointeur sur le premier       */
                    /* gadget.                                  */
  &my_border,       /* ReqBorder, pointeur sur une structure    */
                    /* Border.                                  */
  &my_text,         /* ReqText, pointeur sur une structure      */
                    /* IntuiText.                               */
  NULL,             /* Flags, aucun drapeau n'est mis à 1.      */
  3,                /* BackFill, dessinera tout sur un fond     */
                    /* orange.                                  */
  NULL,             /* ReqLayer, utilisé par Intuition.         */
                    /* Le mettre à la valeur NULL.              */
  NULL,             /* ReqPad1, utilisé par Intuition.          */
                    /* Le mettre à la valeur NULL.              */
  NULL,             /* ImageBMap, aucune 'Bitmap' configurée    */
                    /* à l'avance. Mettez-le à la valeur NULL   */
                    /* (on n'a pas mis à 1 le drapeau PREDRAWN) */
  NULL,             /* RWindow, utilisé par Intuition.          */
                    /* Le mettre à la valeur NULL.              */
  NULL              /* ReqPad2, utilisé par Intuition.          */
                    /* Le mettre à la valeur NULL.              */
};

Si vous souhaitiez employer votre propre image personnalisée et configurée à l'avance, au lieu de laisser dessiner la requête par Intuition, il vous faudrait :
  • Mettre à 1 le drapeau PREDRAWN dans le champ Flags.
  • Fixer ImageBMap pour qu'il pointe sur votre structure BitMap.
Rappelez-vous qu'à partir de cet instant Intuition ne dessinera plus rien à votre place. Les variables ReqBorder, ReqText et BackFill seront ignorées et par conséquent devront être mises à la valeur NULL. De plus, Intuition ne s'occupera plus du dessin des gadgets reliés à la requête. Il est donc important qu'on exécute avec soin le rendu de l'image et que l'emplacement des graphismes corresponde à l'endroit où se trouveront les gadgets, etc.

5.7.2 Comment activer une requête d'application

Si vous avez déclaré et initialisé une structure Requester, vous n'aurez plus qu'à appeler la fonction Request() pour l'activer.

Exemple :
  • resultat = Request( my_requester, my_window );
  • my_requester : pointeur sur une structure Requester.
  • my_window : pointeur sur la structure Window à laquelle la requête devra être reliée.
  • resultat : valeur booléenne en retour. Si Intuition a pu ouvrir avec succès la requête, la fonction retournera TRUE, autrement (quelque chose n'a pas fonctionné : mémoire insuffisante, etc.) la fonction retournera FALSE.
Par contre, si vous souhaitez que la requête soit une requête double-menu, vous devrez appeler la fonction SetDMRequest() qui permettra à l'utilisateur d'activer la requête en cliquant deux fois sur le bouton droit de la souris.

Exemple :
  • resultat = SetDMRequest( my_window, my_requester );
  • my_window : pointeur sur la structure Window à laquelle la requête devra être reliée.
  • my_requester : pointeur sur une structure Requester.
  • resultat : valeur booléenne en retour. Si Intuition a pu ouvrir avec succès la requête, la fonction retournera TRUE, autrement (quelque chose n'a pas fonctionné : mémoire insuffisante ou la requête en question est déjà reliée à la fenêtre, etc.) la fonction retournera FALSE.
Après avoir appelé la fonction SetDMRequest() avec succès, vous pourrez enlever à l'utilisateur la possibilité d'ouvrir la requête, en appelant la fonction ClearDMRequest().

Exemple :
  • resultat = ClearDMRequest( my_window );
  • my_window : pointeur sur la structure Window à laquelle la requête est reliée.
  • resultat : si la fonction a pu empêcher l'utilisateur d'activer cette requête, elle retournera TRUE, autrement (quelque chose n'a pas fonctionné : la requête est en service, etc.) elle retournera FALSE.
5.8 Les drapeaux IDCMP

Il y a trois drapeaux destinés tout spécialement aux requêtes. Lorsqu'une requête est activée, vous pourrez - si vous le souhaitez - recevoir un message qui vous dira qu'on a activé une requête. Ceci est particulièrement utile si vous utilisez des requêtes double-menu car ce message est le seul moyen de savoir si la requête a été ouverte.

Si vous voulez recevoir un message à chaque fois qu'on active une requête, vous devrez mettre à 1 le drapeau REQSET du champ IDCMPFlags de la structure NewWindow. Mettez à 1 le drapeau REQCLEAR si vous voulez recevoir un message à chaque fois qu'on désactive une requête. Voir l'exemple 5 pour plus de détails.

Il y a aussi un drapeau IDCMP spécial qui s'appelle REQVERIFY. Si vous mettez à 1 ce drapeau du champ IDCMPFlags de la structure NewWindow, votre programme recevra un message à chaque fois que l'utilisateur essaiera d'activer une requête double-menu. Ce qui est intéressant avec ce drapeau c'est que la requête ne sera pas ouverte tant que votre programme n'aura pas répondu par ReplyMsg(). Par conséquent, votre programme pourra terminer ce qu'il doit faire (exemple : terminer de dessiner quelque chose) avant d'afficher la requête et, dès qu'il sera prêt, il pourra répondre et activer la requête. Voir l'exemple 6 pour plus de renseignements.

5.9 Les fonctions

Voici quelques fonctions couramment employées :

AutoRequest()

Cette fonction ouvre une requête simple. Intuition l'activera automatiquement et fera attention à la réponse de l'utilisateur. Elle retournera TRUE si l'utilisateur a sélectionné le gadget de gauche et FALSE s'il a sélectionné celui de droite.
  • Synopsis : resultat = AutoRequest( my_window, info_txt, pos_txt, neg_txt, pos_IDCMP, neg_IDCMP, width, height );
  • my_window : (struct Window *). Pointeur sur une fenêtre s'il y en a une, autrement NULL.
  • info_txt : (struct IntuiText *). Pointeur sur une structure IntuiText contenant le "texte général".
  • pos_txt : (struct IntuiText *). Pointeur sur une structure IntuiText contenant le "texte affirmatif". Par exemple "TRUE", "YES", "RETRY", etc. (optionnel).
  • neg_txt : (struct IntuiText *). Pointeur sur une structure IntuiText contenant le "texte négatif". Par exemple "FALSE", "NO", "CANCEL", etc.
  • pos_IDCMP : (long). Drapeaux IDCMP qui satisfont à la condition du gadget "affirmatif" (le drapeau RELVERIFY est déjà activé).
  • neg_IDCMP : (long). Drapeaux IDCMP qui satisfont à la condition du gadget "négatif" (le drapeau RELVERIFY est déjà activé).
  • width : (long). Largeur de la requête en pixels.
  • height : (long). Hauteur de la requête en lignes.
  • resultat : (long). Valeur booléenne. La fonction retournera TRUE si on a sélectionné le gadget "affirmatif" et FALSE si on a sélectionné le gadget "négatif".
Request()

Cette fonction active une requête reliée à une fenêtre.
  • Synopsis : resultat = Request( my_requester, my_window );
  • my_requester : (struct Requester *). Pointeur sur une structure Requester.
  • my_window : (struct Window *). Pointeur sur une structure Window à laquelle on devra relier la requête.
  • resultat : (long). Valeur booléenne en retour. Si Intuition a pu ouvrir la requête avec succès, la fonction retournera TRUE, autrement (quelque chose n'a pas fonctionné : mémoire insuffisante, etc.) la fonction retournera FALSE.
EndRequest()

Cette fonction désactive une requête qui a été activée.
  • Synopsis : EndRequest( my_requester, my_window );
  • my_requester : (struct Requester *). Pointeur sur la structure Requester qu'on devra supprimer.
  • my_window : (struct Window *). Pointeur sur la structure Window à laquelle on avait relié la requête.
SetDMRequest()

Cette fonction permet à l'utilisateur d'activer une requête double-menu, lorsqu'on clique deux fois sur ce même bouton.
  • Synopsis : resultat = SetDMRequest( window, requester );
  • window : (struct Window *). Pointeur sur une structure Window à laquelle on devra relier la requête.
  • requester : (struct Requester *). Pointeur sur une structure Requester.
  • resultat : (long). Valeur booléenne en retour. Si Intuition a pu ouvrir la requête avec succès, la fonction retournera TRUE, autrement (quelque chose n'a pas fonctionné : mémoire insuffisante ou une requête doube-menu était déjà reliée à cette fenêtre, etc.) la fonction retournera FALSE.
ClearDMRequest()

Cette fonction désactive une requête double-menu. L'utilisateur ne pourra plus ouvrir cette requête.
  • Synopsis : resultat = ClearDMRequest( my_window );
  • my_window : (struct Window *). Pointeur sur une structure Window à laquelle on a relié la requête. Le pointeur sur DMRequest de la structure Window est mis à NULL.
  • resultat : (long). Si la fonction a pu désactiver la requête double-menu, elle retournera TRUE, autrement (quelque chose n'a pas fonctionné : la requête est en service, etc.) elle retournera FALSE.
5.10 Descriptif des exemples

Voici des exemples (dans le répertoire "Amiga_C_Manual/5.Requesters") avec des requêtes :

Exemple 1

Cet exemple ouvre une requête simple en appelant la fonction AutoRequest. Il affiche le message "This is a very simple request!" ; un seul gadget lui est relié (dans la partie droite de la requête) avec le texte "OK".

Exemple 2

Comme avec l'exemple 1, si l'on excepte que la requête affiche le message "Do you really want to quit?" et permet à l'utilisateur de choisir entre "Yes" et "No". Le programme continuera à ouvrir la requête tant que l'utilisateur n'aura pas choisi "Yes".

Exemple 3

Comme avec l'exemple 1, si l'on excepte que la requête affiche le message "Insert a disk in any drive!" et permet à l'utilisateur de choisir entre "Yes" et "No". Le programme continuera à ouvrir la requête tant que l'utilisateur n'aura pas choisi "Yes" ou qu'il n'aura pas inséré une disquette dans le lecteur.

Exemple 4

Ce programme ouvrira une fenêtre normale qui sera reliée à l'écran du Workbench. La fenêtre utilisera tous les gadgets du système et disparaîtra lorsque l'utilisateur aura sélectionné le gadget de fermeture de fenêtre du système. À l'intérieur de la fenêtre, nous avons activé une requête d'application et nous lui avons relié un gadget. On satisfera à la demande de la requête dès que l'utilisateur aura sélectionné ce gadget : à ce moment la requête sera désactivée et on pourra fermer la fenêtre.

Exemple 5

Comme avec l'exemple 4, si l'on excepte que la requête sera activée dès que l'utilisateur cliquera à deux reprises sur le bouton droit de la souris. Cet exemple vous montre comment créer une requête double-menu et comment contrôler les drapeaux IDCMP REQSET et REQCLEAR.

Exemple 6

Comme avec l'exemple 5, si l'on excepte que lorsque l'utilisateur cliquera à deux reprises sur le bouton droit de la souris, nous recevrons un message REQVERIFY et que la requête sera activée seulement quand nous aurons répondu au message. Cet exemple montre l'utilisation du drapeau REQVERIFY.

Exemple 7

Ce programme ouvrira une fenêtre normale qui sera reliée à l'écran du Workbench. La fenêtre utilisera tous les gadgets du système et disparaîtra seulement lorsque l'utilisateur aura sélectionné le gadget de fermeture de fenêtre du système. À l'intérieur de la fenêtre, nous avons activé une requête d'application et nous lui avons relié trois gadgets. Deux de ceux-ci sont des gadgets booléens ("OK" et "Cancel"), le troisième est un gadget de chaîne de caractères.

Exemple 8

Comme avec l'exemple 7, mais ici nous avons mis un gadget entier.

Exemple 9

Comme avec l'exemple 8, mais ici nous avons mis un gadget proportionnel.


[Retour en haut] / [Retour aux articles] [Chapitre précédent : les gadgets] / [Chapitre suivant : les alertes]