Search this site
Embedded Files
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • BBC BASIC
    • BBC OS
    • BBC MODULES
    • RUBRIQUES
    • LIENS

⇨ MENU ⇨ BBC BASIC

ON MOVE

DESCRIPTION.


Le gestionnaire ON MOVE est utilisé pour réagir lorsque la fenêtre de sortie est déplacée ou redimensionnée.

L'instruction ON MOVE OFF est utilisée pour annuler la surveillance de modification de la fenêtre de sortir.


Le gestionnaire ON MOVE LOCAL est utilisé pour réagir lorsque la fenêtre est modifiée dans un bloc d'instructions.

L'instruction ON MOVE LOCAL OFF est utilisée pour annuler la surveillance de la fermeture dans le bloc d'instructions.




SYNTAXE.


ON MOVE action : RETURN

ON MOVE OFF


ON MOVE LOCAL action : RETURN

ON MOVE LOCAL OFF




REMARQUES.


action peut être : 

- une instruction unique à exécuter ;

- une suite d'instructions, séparées par :, à exécuter ;

- un identifiant, tel qu'une procédure ou une fonction personnalisée, à exécuter ;


Le gestionnaire ON MOVE active la surveillance de modification des caractéristiques de la fenêtre de sortie. Si l'utilisateur déplace, redimensionne ou utilise l'une des barres de défilement, si elles existent :

- le déroulement du programme est suspendu ;

- le pointeur d’exécution est sauvegardé dans la pile ;

- action est exécutée ;

. le programme reprend là où il a été interrompu grâce à l'instruction RETURN.


Note : si on redimensionne la fenêtre de sortie à partir de son bord gauche, de son bord haut ou de son coin haut-gauche, le gestionnaire d'événement ON MOVE sera déclenché 2 fois. Une fois pour le redimensionnement lui-même, mais une autre fois aussi, car sa position par rapport au bord droit et/ou au bord haut de l'écran sera aussi modifiée.


Après une modification des caractéristiques de la fenêtre de sortie, la distance du point d'origine, coordonnées (0,0), avec le coin supérieur-gauche n'est pas modifiée.



La variable système @msg% permet d'identifier l'événement qui est survenu sur la fenêtre de sortie. La variable système @lparam%, quant à elle, contient les valeurs des modifications qui ont été apporté à la fenêtre de sortie : Si @msg% vaut : 

- 3 si la fenêtre de sortie a été déplacée et @lparam% retourne ses nouvelles coordonnées ;

- 5 si la fenêtre de sortie a été redimensionnée et @lparam% retourne ses nouvelles dimensions ;

- &114 s'il y eu une action sur la barre de défilement horizontal de la fenêtre de sortie ;

- &115 s'il y eu une action sur la barre de défilement vertical de la fenêtre de sortie ;



De plus, avec BBC BASIC pour SDL 2.0 uniquement, la variable système @wparam% fournit des informations supplémentaires. Si  @wparam%  vaut : 

- 0, le programme a été ramenée au premier plan après avoir été suspendue ;

- -1, signifie que des textures ont été détruites et doivent être recréées ; 

- autre valeur, donne l'identifiant de la fenêtre qui a été déplacée et/ou redimensionnée.


Si on désire utiliser les valeurs de @msg%, @wparam% et @lparam%, dans le traitement de l'interruption, il est préférable, soit de les mémoriser dans des variables utilisateur à la suite du gestionnaire ON MOVE, soit en les transmettant comme paramètres à la procédure ou fonction personnalisée qui sera appelée par le gestionnaire, ON MOVE, sinon elles pourraient être modifiées par d'autres actions du programme avant d'avoir pues être lues pour le traitement de l'interruption, par exemple si on redimensionne la fenêtre depuis son bord gauche (voir ci-dessus).


Rappel : quand on fait appel à une variable système, il est conseillé de fait marque une légère pause au programme avec la fonction WAIT() , en général WAIT( 10 ), afin de s'assurer que les traitements en cours sont bien terminés et que les valeurs de ces variables ont bien été mise à jour.


Rappel : un gestionnaire événement, tel que ON CLOSE, interrompra le cours de l'application en cour, pour exécuter action, que si aucune instruction INPUT, GET, GET$, INKEY(), INKEY$(), SOUND ou WAIT n'a mis le programme en pause, sauf si vous avez chargé et utilisé les routines de la bibliothèque NOWAIT.


Note : soyez attentif à préserver le traitement des données internes lors d'un traitement d'événements par un gestionnaire, car cela pourrait provoquer des comportements inattendus dans le déroulement de l'application. Consulter le manuel du BBC BASIC for SDL 2.0 pour plus de détails sur les interruptions d'un script et leur gestions.


L'instruction composée ON MOVE LOCAL, qui doit se trouver uniquement à l'intérieur de la définition d'une procédure ou fonction personnalisée, permet de suspendre et remplacer provisoirement la surveillance des modifications de la fenêtre de sortie par le module principal s'il existe, qui redeviendra actif à la sortie de cette procédure ou fonction personnalisée.


L'instruction composée ON MOVE OFF stoppe la surveillance des modifications de la fenêtre de sortie. Toutefois, toutes les gestions en attentes dans la pile des événements seront traitées normalement. 


La forme ON MOVE LOCAL OFF annulera le gestionnaire d"événements dans la procédure ou fonction personnalisée correspondante. Si un gestionnaire d'événements est actif dans le module principal, il redevient le gestionnaire par défaut.



Voir l'instruction MODE pour connaitre les différentes caractéristiques possibles des fenêtres de sortie.

Voir le gestionnaire ON CLOSE pour interdire la fermeture de la fenêtre de sortie par l'utilisateur.

Voir le module eventlib.bbc qui propose des procédures pour une gestion avancée des événements.



Pour plus de détails sur les désagréments liées aux interruptions, veuillez consulter les mises en gardes du manuel officiel.




RUBRIQUES.


Les dessins et les graphismes pour plus de détails sur la création de dessins et de graphismes.

La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.




EXEMPLE.


REM --- Initialisation generale ---

ON MOVE PROC_onmove( @msg% , @lparam% ) : RETURN

MODE 8


REM --- Boucle principale ---

PRINT "Appuyer sur une touche pour quitter ... "

PRINT

REPEAT

kpause = INKEY( 10 )

UNTIL kpause <> -1

PRINT

PRINT "Fin du test. Au revoir."

END


REM --- Gestionnaire d'evenement : ON MOVE ---

DEF PROC_onmove( Qtype , Qnouveaux )


kabscisse = Qnouveaux AND &FFFF

kordonnee = Qnouveaux >>> 16


IF Qtype = 3 THEN

PRINT "La fenetre a ete deplacee."

PRINT "Elle se trouve maintenant aux coordonnees : ( " ; kabscisse ; " , " ; kordonnee ; " )."

ENDIF


IF Qtype = 5 THEN

PRINT "La fenetre a ete redimensonnee."

PRINT "Elle mesure maintenant : " ; kabscisse ; " x " ; kordonnee ; " pixels."

ENDIF


ENDPROC

Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de

vos remarques, vos commentaires et de vos suggestions.

Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour

TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER

avec un exemple de résolution à télécharger pour vous inspirer.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse