Fenêtre Intuition : remontée des évenements
6 sujets de 1 à 6 (sur un total de 6)
-
Bonjour,
j’ai besoin d’aide sur la remonté des événements du port-série dans une fenêtre intuition.
Dans « intuition.h », j’ai bien vu les constantes pour les bits à positionner IDCMP_xyz.
Mais rien qui concerne le port-série.
Dans un prog. sans fenêtre j’utilise un WAIT(msg du port-série).
Mais sous une fenêtre intuition suis-je limité aux seuls événements IDCMP_xyz ???
Et aussi sur l’événement MOUSEMOVE:
J’ai un comportement différent (remontée ou non de cet Événement) selon que j’utilise OpenWindowTags ou que je fasse sans (dans ce cas je passe directement l’adresse d’une struct NewWindow à OpenWindow() ).
Si quelqu’un peut m’expliquer ?
Merci
Pour MOUSEMOVE, il faudrait regarder dans les autodocs, mais cela pourrait venir de WFLG_REPORTMOUSE qui n’est peut-être pas positionné par défaut avec l’une des fonctions, bien que cela paraisse bizarre vu que OpenWindow() doit juste se contenter d’appeler l’autre fonction.
Cette ligne de code m’a toujours laissé froid
Tu peux m’expliquer pourquoi on fait un décalage à gauche des signaux ?
C’est parce que les SigBit sont des numéros de bit (sur un registre 32 bits).
Donc, si SigBit vaut 0, il faut « allumer » le bit 0 (=1<<0) si tu veux quitter l'état d'attente de ta tâche sur le port représenté par ce bit. S'il vaut 1, il faut allumer le bit 1 (1<<1) pour quitter l'état d'attente, etc... Chaque port que tu crées à un bit alloué. Tu peux allouer jusqu’à 32 ports par tâche. Mais je crois qu’il y a une histoire de 15 bits réservé je sais plus trop pour quoi. Le coup des bits, c’est pour que le système fasse un test rapide sur un « registre » mémoire 32 bits pour savoir si la tâche doit rester en attente ou pas. Si ce registre vaut 0, alors il n’y a aucun événement à prendre en compte sur un des ports de la tâche. S’il est non nul, alors ça veut dire qu’il y a au moins un port mis à jour avec un message. Toi, dans ta fonction Wait(), tu passes les bits des ports qui t’intéressent et le système, en faisant un AND sur ce registre mémoire, saura qu’il faut quitter l’état d’attente de ta tâche. En pratique, dès qu’un message se plug à un port, le bit représenté par ce port s’allume à 1. Du coup, le système peut switcher sur ta tâche. Voilà pour l’explication simplifiée.
6 sujets de 1 à 6 (sur un total de 6)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Fenêtre Intuition : remontée des évenements