Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| recup d' un clic souris | |
| | Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: recup d' un clic souris Lun 24 Mar 2014 - 23:33 | |
| J' ai un trou de mémoire...
Qui peut me rappeler comment récupérer un évènement souris sur l' écran ? Je veux juste savoir si il y a un clic souris. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: recup d' un clic souris Mar 25 Mar 2014 - 0:36 | |
| Désolé - pour l'heure, Panoramic ne donne aucun moyen de savoir si un évènement a eu lieu, de manière générale. On peut seulement être averti lorsqu'un évènement survient sur un objet précis, par l'intermédiaire d'une routine évènement via la commande ON_xxx.
Le seul moyen de s"en approcher, ce serait de déclarer, pour chaque type évènement (ON_CLICK, ON_KEY_DOWN etc) la même routine évènement, dans laquelle on positionnerait une valeur dans un variable dont le contenu serait 1 si l'évènement a eu lieu, par exemple, quelque soit l'évènement. Ensuite, il faut dispatcher le traitement de l'évènement en fonction de la variable système NUMBER_CLICK, par exemple. Lourd, mais efficace pour répondre à ton interrogation. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Mar 2014 - 0:41 | |
| @ Klaus, Je me bats avec une dll de Nardo26 (mouse.dll) qui fait cà... mais j' ai un souci quand j' essaye de combiner KGF et les deux dll de nardo dont j' ai besoin. regarde çà, c' est le code exemple de nardo26 : - Code:
-
' ----------------------------------------------------------------------- ' E X E M P L E D ' A P P E L A M O U S E . D L L ' -> Récuperation des coordonnées de la souris et de l'état des boutons ' Auteur : Nardo26 (26/10/2011) ' -----------------------------------------------------------------------
DLL_ON "mouse.dll" LABEL errProg,endProg ON_ERROR_GOTO errProg : ON_CLOSE 0, endProg
LABEL procTimer DIM coord$,txt$ : coord$=STRING$(8," ") DIM bouton,x,y
CAPTION 0,"DEMO : MOUSE.DLL" TIMER 1:TIMER_INTERVAL 1,100: ON_TIMER 1, procTimer ALPHA 2 : LEFT 2,20 : TOP 2,20 ALPHA 3 : LEFT 3,20 : TOP 3,40 ALPHA 4 : LEFT 4,20 : TOP 4,60 END
procTimer: bouton = DLL_CALL1("GetMouseXY",ADR(coord$)) x = VAL(LEFT$(coord$,4)) : y = VAL(RIGHT$(coord$,4)) txt$="Chaine retournée après appel ="+coord$ CAPTION 2,txt$ txt$="Coordonnées = X: "+STR$(x)+" Y: "+STR$(y) CAPTION 3,txt$ txt$="" IF BIN_AND(bouton,1)<>0 THEN txt$="Gauche " IF BIN_AND(bouton,2)<>0 THEN txt$=txt$+"Droite " IF BIN_AND(bouton,4)<>0 THEN txt$=txt$+" Central" IF txt$="" THEN txt$="Aucun" txt$="Bouton : "+txt$ CAPTION 4,txt$ RETURN
errProg: MESSAGE error_type$+" "+STR$(error_line) endProg: TIMER_OFF_ALL DLL_OFF TERMINATE la dll est sur son webdav ( mouse.dll ) Je te mets l' exemple de la deuxième dll, qui récupère la couleur du pixel sous le curseur de la souris n' importe où sur l' écran. - Code:
-
LABEL FinProg
DLL_ON "pick.dll" ON_CLOSE 0,FinProg LABEL Pick TIMER 1:TIMER_INTERVAL 1,100 ON_TIMER 1,Pick
END Pick: DIM Pick_Coordonnee$,Pick_retour% DIM Pick_x,Pick_y Pick_Coordonnee$=STRING$(20," ") Pick_retour%=dll_call1("GetMouseXY",ADR(Pick_Coordonnee$)) Pick_x = VAL(LEFT$(Pick_Coordonnee$,INSTR(Pick_Coordonnee$,":")-1)) Pick_y = VAL(MID$(Pick_Coordonnee$,INSTR(Pick_Coordonnee$,":")+1,200)) Pick_Coordonnee$=STRING$(20," ") Pick_retour%=dll_call3("GetColorXY",Pick_x,Pick_y,ADR(Pick_Coordonnee$))
' VAL(LEFT$(Pick_Coordonnee$,INSTR(Pick_Coordonnee$,":")-1)) CAPTION 0,"Coordonnées "+str$(Pick_x)+" x "+str$(Pick_y)+" couleur :"+Pick_Coordonnee$ FREE Pick_Coordonnee$:FREE Pick_retour% FREE Pick_x:FREE Pick_y return
FinProg: DLL_OFF TERMINATE la dll est pick.dll et elle est aussi sur le webdav de nardo Peut être est il possible d' intégrer les fonctions de ces deux dlls dans KGF ?..... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: recup d' un clic souris Mar 25 Mar 2014 - 1:56 | |
| Je ne vais pas intégrer les fonctions de Nardo dans KGF.dll. C'est son bébé, et je n'interviendrai pas dessus.
Mais, tu peux les utiliser à partir de KGF.dll. La seule DLL ouverte par Panormic sera KGF.dll. Et la fonction res% = dll_call1("LoadDLL",adr(dll$)) permettra de charger les deux autres DLLs pour pouvoir les utiliser simultanément. Regarde la doc dans KGF.chm, dans la section "Gestion des DLLs dynamiques". Tu utilises ensuite, pour chaque appel à une fonction d'une de ces deux DLLs, la fonction res% = dll_call2("TargetDLL",hnd%,adr(fonction$)) avec laquelle tu spécifies le nom de la fonction que tu veux appeler, puis tu utilises res% = dll_callx("CallDLLx",p1%,...,p6%) pour appeler la fonction choisie avec le bon nombre de paramètres.
Et voilà - tu pourras utiliser autant de DLLs dynamiques simultanément que tu veux. Mais n'oublie pas d'utiliser res% = dll_call1("UnLoadDLL",hnd%) pour décharger les DLLs dynamiques si tu n'en as plus besoin. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Mar 2014 - 3:21 | |
| Je me suis battu pendant une heure avant de comprendre que j' avais oublié une réservation du style m$=string$(255," ")... Je ne sais plus dans quel trou de souris me cacher... Ceci dit nous avons un problème lorsqu' un programme Panoramic en appelle un autre. Les deux sont des *.exe l' appelé fonctionne très bien tout seul mais si il est appelé par le premier il ne trouve plus les dlls... Je pense qu' il y aune confusion entre les deux sur dir_current$ Quand le premier se met en route il s' ouvre dans son propre dossier et quand il appelle le second, celui ci s'ouvre mais le dossier actif est le dossier du premier et dir_current$ doit renvoyer celui au lieu de son propre dossier. Je rencontre un autre problème avec Param_value$ qui ne lit pas les paramètres comme il le devrait . Bref que de soucis pour arriver à quelque chose de propre... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: recup d' un clic souris Mar 25 Mar 2014 - 8:57 | |
| Si tu lances un programme par - Code:
-
EXECUTE "C:\MonDossier\MonProgramme.exe alors - Code:
-
prog$ = PARAM_VALUE(0) retourne C:\MonDossier\MonProgramme.exe, et tu peux en extraire le nom du dossier pour imposer le dossier par défaut. Tu peux aussi faire - Code:
-
EXECUTE "C:\MonDossier\MonProgramme.exe C:\DossierDeTravail\ et - Code:
-
prog$ = PARAM_VALUE(1) retourne C:\DossierDeTravail\, et tu peux en extraire le nom du dossier pour imposer le dossier par défaut. Bien sûr, il convient en général d'entourer ces paramètres par des chr$(34) à cause des espaces dans les noms de dossier. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Mar 2014 - 11:25 | |
| @ Klaus,
Je vais essayer de faire un petit dossier sur mon webdav pour te montrer ce qu' il se passe. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mar 25 Mar 2014 - 13:39 | |
| - ygeronimi a écrit:
- Comment récupérer un évènement souris sur l'écran ?
Je veux juste savoir si il y a un clic souris. Et, de façon plus simple, avec une méthode comme celle-là, ça ne donne pas ce que tu demandes ? - Code:
-
label clic caption 0,"Cliquez sur les différents aspects apparaissant dans le picture" on_click 0,clic picture 10 2d_target_is 10 2d_fill_color 250,0,0 2d_circle 20,20,10 2d_fill_color 0,0,255 2d_circle 60,60,20 on_click 10,clic end clic: if clicked(0)=1 caption 0,"Beige" else if mouse_left_down(10)=1 caption 0,"Blanc" if color_pixel_red(10,mouse_x_position(10),mouse_y_position(10))=250 caption 0,"Rouge" end_if if color_pixel_red(10,mouse_x_position(10),mouse_y_position(10))=0 caption 0,"Bleu" end_if end_if end_if return (n'y voyez rien d'excessivement patriotique) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Mar 2014 - 14:45 | |
| @ jjn4,
ton code est le bon pour un objet panoramic mais ne s' applique qu' à un objet donné sur un form panoramic donné et pas à la souris elle même.
J' ai retrouvé mon bonheur dans les dlls de Nardo26
mouse.dll
On récupère un évènement souris n' importe où sur l' écran. | |
| | | Contenu sponsorisé
| Sujet: Re: recup d' un clic souris | |
| |
| | | | recup d' un clic souris | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |