La version actuelle est la v0.4.2
Auteur: Benoît GILON
Logo de HTMLEdit v3
Retour à la page de description !AddressB

Échanges inter-applications

Afin de faire communiquer les quatre applications composantes, une série de nouveaux messages Wimp a été définie; comme ces messages ne sont pas destinés à être diffusés mais uniquement transmis de point à point, il n'est nul besoin de réserver leur numéro.
enum
        {
        Wimp_MAdBCloseDown= 0x200,
        Wimp_MAdBDragNotify,
        Wimp_MAdBFetch,
        Wimp_MAdBFetchReply,
        Wimp_MAdBSeeDetail,
        Wimp_MAdBSeeDetailReply,
        Wimp_MAdBCheckForParent,
        Wimp_MAdBCheckForParentReply,
        Wimp_MAdBCheckForChild,
        Wimp_MAdBCheckForChildReply,
        Wimp_MAdBDeleteCascade
        };

typedef struct
        {
        int key;
        } WimpAdBFetchMessage, WimpAdBSeeDetailMessage, WimpAdBCheckForParentKeyMessage;

typedef struct
        {
        int key;
        int itask;
        } WimpAdBCheckForChildMessage, WimpAdBDeleteCascadeMessage;

typedef struct
        {
        int key;
        int reply;
        } WimpAdBCheckForParentKeyReplyMessage, WimpAdBCheckForChildReplyMessage;

typedef struct
        {
        int reply;
        char string[232];
        } WimpAdBFetchReplyMessage, WimpAdBSeeDetailReplyMessage;

typedef struct
        {
        int window_handle;
        int icon_handle;
        int key;
        } WimpAdBDragNotifyMessage;

typedef struct
        {
        struct 
                {
                int    size;
                int    sender;
                int    my_ref;
                int    your_ref;
                int    action_code;
                } hdr;
        union
                {
                int words[59];
                char bytes[236];
                WimpAdBFetchMessage      adb_fetch;
                WimpAdBFetchReplyMessage adb_fetch_reply;
                WimpAdBSeeDetailMessage  adb_see_detail;
                WimpAdBSeeDetailReplyMessage adb_see_detail_reply;
                WimpAdBDragNotifyMessage drag_notify;
                WimpAdBCheckForParentKeyMessage adb_check_for_parent;
                WimpAdBCheckForParentKeyReplyMessage adb_check_for_parent_reply;
                WimpAdBCheckForChildMessage adb_check_for_child;
                WimpAdBCheckForChildReplyMessage adb_check_for_child_reply;
                WimpAdBDeleteCascadeMessage adb_delete_cascade;
                } data;
        } MWimpMessage;
Wimp_MAdBCloseDown
Ce message est utilisé lorsque l'application !Address0, ayant lancé les applications !AddressB et !AddressG si elles n'étaient pas déjà installées initialement, leur envoie, avant de quitter, ce message afin que ces dernières se suicident (uniquement si elle a été lancée par le démarrage de !Address0).
Wimp_MAdBFetch et Wimp_MAdBFetchReply
Ces messages sont échangés d'une part entre !Address0 et chacune des applications !AddressB et !AddressG lorsque la première requiert l'affichage de données gérées par ces dernières; et d'autre part entre l'application !AddressI et l'application !AddressB dans le même contexte fonctionnel;
Wimp_MAdBSeeDetail et Wimp_MAdBSeeDetailReply
Ces messages sont échangés d'une part entre l'application !Address0 et une des applications !AddressB et !AddressG lorsque l'utilisateur clique sur l'un des boutons "Détails" de la fenêtre !Address0; et d'autre part entre l'application !AddressI et l'application !AddressB dans le même contexte. Cela force l'affichage de la ligne référée dans la fenêtre !Address0 (respectivement !AddressI) au sein de la fenêtre !AddressB ou !AddressG (suivant le bouton cliqué)(respectivement !AddressB).
Wimp_MAdBDragNotify
Message envoyé par l'une des applications !AddressB ou !AddressG en fin d'opération de "glisser/déposer". Ce message est traité par la tâche destinataire !Address0 ou !AddressI. Typiquement cette dernière envoie alors un message WimpAdbFetch comme résultat après avoir identifié la source du message (!AddressB ou !AddressG).
Wimp_MAdBCheckForChild et Wimp_MAdBCheckForChildReply
le premier message est émis par l'une des applications Wimp !AddressB ou !AddressG lorsque, devant traiter à la suppression d'une donnée en leur sein, elles vérifient que cette dernière n'est référée dans aucune autre application (ici !Address0 ou !AddressI). Le deuxième message est émis en réponse et peut signifier qu'une donnée est référencée auquel cas la clé de la donnée référante est aussi transmise pour affichage.
Wimp_MAdBCheckForParent et Wimp_MAdBCheckForParentReply
Ces deux messages jouent un rôle symmétrique par rapport aux deux messages précédents. Le premier est émis par l'une des applications !Address0 ou !AddressI avant insertion ou mise à jour d'une nouvelle donnée dans leur base respective afin de s'assurer que la donnée réfée existe bien dans l'application destinatrice (typiquement ici !AddressB ou !AddressG). Le second message est la réponse de l'application fournissant le résultat de la recherche de clé.