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 MOUSE

DESCRIPTION.


Le gestionnaire ON MOUSE est utilisé pour réagir lorsque l'utilisateur clique sur l'un des boutons de la souris.

L'instruction ON MOUSE OFF est utilisée pour annuler la surveillance des appuies sur les boutons de la souris.




SYNTAXE.


ON MOUSE action : RETURN

ON MOUSE OFF


ON MOUSE LOCAL action : RETURN

ON MOUSE 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 MOUSE active la surveillance des activations sur les boutons de la souris. Si l'utilisateur appuie sur l'un d'eux :

- 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.


L'instruction composée ON MOUSE LOCAL, qui doit se trouver uniquement à l'intérieur de la définition d'une procédure ou fonction personnalisée, permet de suspendre provisoirement la surveillance des appuis sur les boutons de la souris par le module principal s'il existe, qui redeviendra actif à la sortie de cette procédure ou fonction personnalisée.



La variable système @wparam% contient une valeur qui permettra de connaitre l'événement qui a été déclenché. Si @wparam% vaut : 

- 1, l'utilisateur a appuyé sur le bouton gauche ;

- 2, l'utilisateur a appuyé sur le bouton droit ;

- 4, la touche MAJ (majuscule) est enfoncée ;

- 8, la touche CTRL (controle) est enfoncée ;

- 16, l'utilisateur a appuyé sur le bouton central ; 


Ces valeurs peuvent être additionnées si plusieurs événements sont survenus simultanément. Par exemple, la valeur :

 - 5, c'est-à-dire 4 + 1, si la touche MAJ été enfoncée quand l'utilisateur a appuyé sur le bouton gauche de la souris ;  

- 10, pour 8 + 2, si l'utilisateur a appuyé sur le bouton droit alors que la touche CTRL été enfoncée ; 

- ...

 


La variable système @lparam% une valeur permettant de connaitre les coordonnées du pointeur de la souris sur la fenêtre de sortie, lorsque l'événement c'est produit, comme suit : 

- abscisse% = @lparam% AND &FFFF ; 

- ordonnee% = @lparam% >>> 16


Les coordonnées étant retournée en pixels depuis le coin supérieur gauche de la fenêtre de sortie. on pourra obtenir les coordonnées graphique avec  : 

- kabscisse% = ( abscisse% * 2 ) - @vdu.ox% ; 

- kordonnee% = ( ( @vdu%!212 - ordonnee% - 1 ) * 2 ) - @vdu.oy%

            

Le contenu des variables système @lparam% et @wparam% pouvant être modifiées par une autre interruption, elle doivent être consultées, et sauvegardées dans la première instruction suivant l'appel du gestionnaire ON MOUSE. Le plus simple étant de le passer comme paramètre à la procédure ou fonction personnalisée chargée de gérée une interruption provoquée par ON MOUSE, avec la forme : ON MOUSE PROC_Onclique( @wparam% , @lparam% ) : RETURN


La variable système @msg% recevra la  valeur :

- &700, pour , pour  ; 

- &701, pour SDL_FINGERUP ; 

- &702, pour SDL_FINGERMOTION ; 

- &802, pour SDL_MULTIGESTURE 


Rappel : un gestionnaire événement, tel que ON MOUSE, interrompra le cour 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 MOUSE OFF stoppe la surveillance des l'appuis sur l'un des boutons de la souris. Toutefois, toutes les gestions en attentes dans la pile des événements seront traitées normalement. 


La forme ON MOUSE 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 MOUSE pour plus de détails sur les déplacements de la souris.

Voir l'instruction MOUSE RECTANGLE pour plus de détails sur la façon de restreindre la zone de déplacement de la souris.

Voir l'instruction MOUSE TO pour plus de détails sue déplacer manuellement de la souris.

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.




EXEMPLE.


REM --- Initialisation generale ---

ON MOUSE PROC_Onclique( @wparam% , @lparam% ) : RETURN

MODE 8

PROC_Onclique( 0 , 0 )


REM --- Boucle principale ---

PRINT

REPEAT

MOUSE kabscisse , kordonnee , kbouton

DRAW kabscisse , kordonnee

PRINT TAB( 0 , 4 ) kabscisse , kordonnee

kpause$ = INKEY$( 10 )

UNTIL kpause$ = "Q" OR  kpause$ = "q" 

PRINT

PRINT "Fin du test. Au revoir."

END


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

DEF PROC_Onclique( Qwparam% , Qlparam% )

CLG

MOVE 640 ,  512

PRINT TAB( 0 , 0 )  "Appuyer sur un bouton de la souris pour effacer."

PRINT TAB( 0 , 1 )  "Appuyer sur Q pour quitter."

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