FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-55%
Le deal à ne pas rater :
Friteuse sans huile – PHILIPS – Airfryer HD9200/90 Série 3000
49.99 € 109.99 €
Voir le deal

 

 Nouvelle DLL: intercepter clic gauche, double et droit !

Aller en bas 
+2
JL35
Klaus
6 participants
Aller à la page : Précédent  1, 2
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 EmptyDim 29 Jan 2012 - 15:07

L'interception des évènements souris marchent aussi avec une FORM ! Et ceci avec la version de la DLL qui est déjà en distribution. En voici la démonstration:
Code:
'      demo clickintercept objets.bas

' ce programme montre l'usage de ClickIntercept.dll
' pour tous les objets possibles.

' les objets possibles sont ceux pour lesquels on peut
' avoir un handle par la fonction handle():
'    scene3d, button, edit, memo, combo, alpha, form
'    list, check, option, main_menu, sub_menu,
'    movie, track_bar, scroll_bar, progress_bar, scene2d
' malgré la possibilité d'avoir un handle pour SOUND, MAIN_MENU
' OPEN_DIALOG et SAVE_DIALOG, ces objets ne sont pas utlisables
' ici car ils sont invisibles.

' Les zones spécifiques à la gestion de la DLL sont commentées.
' On peut ainsi extraire les parties obligatoires, ainsi que les
' instructions spécifiques à la gestion de certains types d'objet.

' ATTENTION: l'objet COMBO pose problème - il n'est pas utilisable
' en l'état !.

' ATTENTION: à cause d'un bug pour HANDLE() pour un ALPHA, la gestion
' de cet objet ne peut pas encore être faite !

' ATTENTION: SUB_MENU pose encore un problème qui est à l'étude !

label montrer, communs1, communs2, clickobj, cacher, close0
label gauche, double, droit, molette, mousein, mouseout, timer99
label memolistcombo, communs1bis, clickobjbis, communs3, communs1ter
label communs4, clickformbouton


data    "scene3d",1, "button",1, "edit",1, "memo",1, "combo",1
data    "alpha",0, "form",1
data    "list",1, "check",1, "option",1, "sub_menu",0
data    "movie",1, "track_bar",1
data    "scroll_bar",1, "progress_bar",1, "scene2d",1
data    "*fini*"
dim  maxobj%  : maxobj% = 0

dim obj%, i%, s$, res%, f_simple%, f_dedans%
dim hndtab%(20)

height 0,650

' charger et afficher la liste des objets disponibles
alpha 101 : top 101,20 : left 101,10 : caption 101,"Objet:"
combo 102 : top 102,40 : left 102,10
repeat
    read s$
    if s$<>"*fini*"
        maxobj% = maxobj% + 1
        read hndtab%(maxobj%)
        item_add 102,s$
    end_if
until s$="*fini*"

' créer les boutons "Montrer" et "Cacher" mutuellement exclusifs
button 103 : top 103,70 : left 103,10 : caption 103,"Montrer"
on_click 103,montrer
button 104 : top 104,70 : left 104,10 : caption 104,"Cacher"
on_click 104,cacher : hide 104

' ceci sont les boutons d'interface avec la DLL ClickIntercept.dll.
' leur évènement ON_CLICK signale l'évènement détecté par la DLL.
button 201 : hide 201 : on_click 201,gauche
button 202 : hide 202 : on_click 202,double
button 203 : hide 203 : on_click 203,droit
button 204 : hide 204 : on_click 204,molette
button 205 : hide 205 : on_click 205,mousein
button 206 : hide 206 : on_click 206,mouseout

' cet EDIT sert à recevoir les coordonnées de la souris au moment du clic
alpha 301 : top 301,130 : left 301,10 : caption 301,"Coordonnées:"
edit 302 : top 302,130 : left 302,100
' ce MEMO sert à montrer les évènements détectés par la DLL
alpha 303 : top 303,160 : left 303,10 : caption 303,"Trace:"
memo 304 : top 304,160 : left 304,100 : height 304,400

' ce timer est indispensable pour différencier les simples clics
' des doubles clics. L'intervalle peut éventuellement être raccourci.
timer 99 : timer_off 99 : timer_interval 99,500
on_timer 99,timer99

' on crée tous les objets possibles, et on les cache. Les routines
' COMMUNSx serventà configurer des attributs communs à plusieurs objets.
obj% = 0
scene3d      1 : hide  1        : gosub communs1
button        2 : hide  2        : gosub communs1
edit          3 : hide  3        : gosub communs1
memo          4 : hide  4        : gosub communs1
combo        5 : hide  5        : gosub communs1
alpha        6 : hide  6        : gosub communs2
form          7 : hide  7        : gosub communs1ter
  button  1007 : parent 1007,7  : gosub communs4
list          8 : hide  8        : gosub communs1
check        9 : hide  9        : gosub communs1
option      10 : hide 10        : gosub communs1
  option  1010 : hide 1010      : gosub communs1bis
sub_menu    11 : hide 11        : gosub communs3
movie        12 : hide 12        : gosub communs2
track_bar    13 : hide 13        : gosub communs2
scroll_bar  14 : hide 14        : gosub communs2
progress_bar 15 : hide 15        : gosub communs2
scene2d      16 : hide 16        : gosub communs1

' on charage la DLL
dll_on "ClickIntercept.dll"
' la routine CLOSE0 servira à désactiver les interceptions de clics
' afin de ne pas perturber le système, e, sortant
on_close 0,close0

' ici, on établit le lien entre les évènements (par leur ID)
' et les boutons dont la routine ON_CLICK leur sera associée.
res% = dll_call2("ClickSetLink",0,0)            : ' tout effacer
res% = dll_call2("ClickSetLink",handle(201),1)  : ' clic gauche
res% = dll_call2("ClickSetLink",handle(202),2)  : ' double-clic
res% = dll_call2("ClickSetLink",handle(203),3)  : ' clic droit
' res% = dll_call2("ClickSetLink",handle(204),3)  : ' pas encore implémenté
res% = dll_call2("ClickSetLink",handle(205),5)  : ' souris entrante
res% = dll_call2("ClickSetLink",handle(206),6)  : ' souris sortante

end

' ******************* fin du programme principal *************

' ------------------- appelé en fermeture du programme -------
close0:
    if obj%>0    : ' est-ce qu'on a un traitement activé pour un objet ?
    ' si cet objet a une interception des clics, alors les désactiver
        if hndtab%(obj%)=1 then res% = dll_call1("ClickClearHook",handle(obj%))
    end_if
    dll_off  : ' décharger la DLL
return

' ------------------- évènement timer spécial pour les double-clics ---
timer99:
    timer_off 99    : ' couper le timer
    if f_simple%=1  : ' est-ce qu'on a déjà reçu un clic gauche ?
        f_simple% = 0    : ' oui donc on a un clic simple !
' ***** ici, on place le traitement spécifique au simple-clic
        item_add 304,"DLL: clic gauche"
        if instr("combo,list",s$)>0 then item_add 304,"--> indexe "+str$(item_index(obj%))
' ***** fin du traitement spécifique au double-clic
' ===== ici, on trouve des traitements à effectuer selon le type d'obbjet
        if instr("scene3d",s$)=0 then set_focus obj%
        if s$="check"
            if checked(obj%)=1
                mark_off obj%
            else
                mark_on obj%
            end_if
        end_if
' ===== fin des traitements selon le type d'objet
    end_if
return

' ------------------- évènement clic gauche détecté par la DLL -----
gauche:
    timer_off 99      : ' on coupe le timer
    f_simple% = f_simple% + 1  : ' on incrémente le compteur de clics gauches
    if f_simple%=2              : ' est-ce qu'on a déjà 2 clics ?
        f_simple% = 0          : ' oui, donc c'est un double-clic !
' ***** ici, on place le traitement spécifique au double-clic
        item_add 304,"DLL: clic double"
        if instr("combo,list",s$)>0 then item_add 304,"--> indexe "+str$(item_index(obj%))
' ***** fin du traitement spécifique au double-clic
' ===== ici, on trouve des traitements à effectuer selon le type d'obbjet
        if instr("scene3d",s$)=0 then set_focus obj%
        if s$="form" then to_foreground obj%
' ===== fin des traitements selon le type d'objets
        return
    end_if
' item_add 304,"attente"
    timer_on 99
return

' ------------------- évènement double clic détecté par PANORAMIC -----
double:
    timer_off 99    : ' on coupe le timer
    f_simple% = 0    : ' on remet le compteur de clics à zéro
' ***** ici, on place le traitement spécifique au double-clic
    item_add 304,"PANORAMIC: clic double"
    if instr("combo,list",s$)>0 then item_add 304,"--> indexe "+str$(item_index(obj%))
' ***** fin du traitement spécifique au double-clic
' ===== ici, on trouve des traitements à effectuer selon le type d'obbjet
    if instr("scene3d",s$)=0 then set_focus obj%
    if s$="form" then to_foreground obj%
' ===== fin des traitements selon les objets
return

' ------------------- évènement clic droit détecté par la DLL -----
droit:
' ***** ici, on place le traitement spécifique au double-clic
    item_add 304,"DLL: clic droit"
    if instr("combo,list",s$)>0 then item_add 304,"--> indexe "+str$(item_index(obj%))
' ***** fin du traitement spécifique au clic droit
' ===== ici, on trouve des traitements à effectuer selon le type d'obbjet
    if instr("scene3d",s$)=0 then set_focus obj%
    if s$="form" then to_foreground obj%
' ===== fin des traitements selon les objets
return

' ------------------- évènement molette détecté par la DLL -----
molette:
' ***** ici, on place le traitement spécifique au double-clic
    item_add 304,"DLL: molette"
' ***** fin du traitement spécifique à la molette
' ===== ici, on trouve des traitements à effectuer selon le type d'obbjet
    if instr("scene3d",s$)=0 then set_focus obj%
    if s$="form" then to_foreground obj%
' ===== fin des traitements selon les objets
return

' ------------------- évènement souris entrante détecté par la DLL -----
mousein:
    if f_dedans%=1 then return    : ' la souris est déjà dedans ? ignorer !
    f_dedans% = 1                  : ' mémoriser que la souris est dedans
' ***** ici, on place le traitement spécifique à l'entrée de la souris
    item_add 304,"DLL: souris entrée"
    if s$="alpha"
        font_color obj%,255,0,0
    end_if
    if instr("button,scene2d,movie,track_bar,scroll_bar,progress_bar",s$)>0
        height obj%,height(obj%)+2
        width obj%,width(obj%)+2
        if instr("movie,track_bar,scroll_bar,progress_bar",s$)=0 then font_bold obj%
    end_if
' ***** fin du traitement spécifique à l'entrée de la souris
' ===== ici, on trouve des traitements à effectuer selon le type d'obbjet
    if instr("memo,edit,list,scene3d,combo,check",s$)>0
        color obj%,220,220,255
        if instr("scene3d",s$)=0 then set_focus obj%
    end_if
    if s$="form" then to_foreground obj%
' ===== fin des traitements selon le type d'objet
return

' ------------------- évènement souris sortante détecté par la DLL -----
mouseout:
    if f_dedans%=0 then return  : ' souris déjà dehors ? ignorer
    f_dedans% = 0              : ' mémoriser que la souris est dehors
' ***** ici, on place le traitement spécifique à la sortie de la souris
    item_add 304,"DLE: souris sortie"
    if s$="alpha"
        font_color obj%,0,0,0
    end_if
    if instr("button,scene2d,movie,track_bar,scroll_bar,progress_bar",s$)>0
        height obj%,height(obj%)-2
        width obj%,width(obj%)-2
        if instr("movie,track_bar,scroll_bar,progress_bar",s$)=0 then font_bold_off obj%
    end_if
' ***** fin du traitement spécifique à la sortie de la souris
' ===== ici, on trouve des traitements à effectuer selon le type d'obbjet
    if instr("memo,edit,list,scene3d,combo,check",s$)>0
        color obj%,210,210,255
        if instr("scene3d",s$)=0 then set_focus obj%
    end_if
    if s$="form" then to_foreground obj%
' ===== fin des traitements selon le type d'objet
return

clickformbouton:
    item_add 304,"PANORAMIC: click bouton"
    to_foreground obj%
    return

' -------------------  routines de configuration des objets test ---
communs1:
    obj% = obj% + 1
    top obj%,10
    left obj%,300
    on_click obj%,clickobj
    return
   
communs1bis:
    top obj%+1000,70
    left obj%+1000,300
    on_click obj%+1000,clickobjbis
    return

communs1ter:
    obj% = obj% + 1
    top obj%,70
    left obj%,500
    on_click obj%,clickobj
    return

communs2:
    obj% = obj% + 1
    top obj%,10
    left obj%,300
    return

communs3:
    obj% = obj% + 1
    main_menu  obj%+1000
    parent obj%,obj%+1000
    caption 11,"Sous-menu "
    on_click obj%,clickobj
    return

communs4:
    top obj%+1000,30 : left obj%+1000,30 : caption obj%+1000,"Cliquer ici"
    on_click obj%+1000,clickformbouton
    return
   
' ------------------- évènement PANORAMIC ON_CLICK des objets teste ---
clickobj:
    item_add 304,"PANORAMIC: Click objet"
return

' ------------------- évènement PANORAMIC ON_CLICK sur second OPTION ---
clickobjbis:
    item_add 304,"PANORAMIC: Click objet"
return

' -------------------désactiver objet test et cacher tout --------
cacher:
    hide obj%    : ' cacher l'objet
    if s$="option" then hide obj%+1000  : ' cacher aussi la seconde option
' si l'objet peut intercepter les clics, alors déactiver l'interception
    if hndtab%(obj%)=1 then res% = dll_call1("ClickClearHook",handle(obj%))
' restaurer l'écran pour pouvoir lancer un nouveau test
    hide 104 : show 103
    obj% = 0 : f_simple% = 0
    active 102
return

' -------------------charger,les objets MEM, LIST et COMBO avec quelques lignes
memolistcombo:
    clear obj%
    for i%=1 to 8
        item_add obj%,s$+" ligne "+str$(i%)
    next i%
    return

' -------------------montrer l'objet à tester et intercepter les clics
montrer:
inactive 102
s$ = trim$(item_index$(102))  : ' récupérer le nom de l'objet
if s$="" then return          : ' rien choisi ?
obj% = item_index(102)        : ' récuper le ID de l'objet choisi
clear 304                      : ' effacer le mémo pour la trace
item_add 304,"Objet "+s$      : ' signaler le nom de l'objet
f_dedans% = 0                  : ' supposer "souris est dehors'
' traitements spécifiques pour tester un objet -----------------
select obj%

'---------- scene3d
case 1
    color obj%,210,210,255 : show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- button
case 2
    caption obj%,"Bouton" : show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- edit
case 3
    color obj%,210,210,255 : show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- memo
case 4
    color obj%,210,210,255 : show obj%
    gosub memolistcombo
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- combo
case 5
    item_add 304,"+++ ne marche pas !"
    color obj%,210,210,255 : show obj%
    gosub memolistcombo
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- alpha
case 6
    caption obj%,"Alpha" : font_color obj%,0,0,0 : show obj%
'    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    on_click obj%,clickobj : ' car BUG sur handle() pour ALPHA !
    hide 103 : show 104
   
'---------- form
case 7
    caption obj%,"Form"
    show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    to_foreground obj%
    hide 103 : show 104
   
' ---------- list
case 8
    color obj%,210,210,255 : show obj%
    gosub memolistcombo
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- check
case 9
    color obj%,210,210,255 : show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- option
case 10
' pour OPTION, une seconde option est automatiquement créée et
' affichée, avec le numéro obj%+1000, mais seule l'objet obj%
' est utilisé pour intercepter les clics par la DLL.
    color obj%,210,210,255 : show obj% : show obj%+1000
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- sub_menu
case 11
    item_add 304,"+++ ne marche pas !"
    caption obj%,"Sous-menu pas de curseur" : show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- movie
case 12
    color obj%,210,210,255 : show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- track_bar
case 13
    show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- scroll_bar
case 14
    position obj%,30 : show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- progress_bar
case 15
    position obj%,30 : show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
'---------- scene2d
case 16
    show obj%
    res% = dll_call2("ClickSetHook",handle(obj%),handle(302))
    hide 103 : show 104
   
end_select
return

Dans le combo de choix des objets, on peut choisir "form", et une nouvelle form s'affiche à droite, comportant un bouton. Tous les évènements souris sur cette form sont interceptés tant que le curseur reste dans la "zone client", à l'exclusion des bords et de la barre d'entête. Le bouton présent sur cette forme n'est pas compris non plus: dès que la souris entre dans le bouton, on signalé "sortie de la souris de l'objet surveillé", et inversement. Un clic sur le bouton déclenche l'évènement on_clic normal de Panoramic, alors qu'un clic sur la form déclenche un évènement par la DLL.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 EmptyDim 29 Jan 2012 - 15:45

Bonjour Klaus, Smile
Franchement, c'est extraordinaire ce que tu fais! Ta dll clickintercept, c'est du tonnerre! Je viens d'essayer ton petit programme, c'est top!
Bon, moi je me demandais, un sprite ou un picture, dans un scene 2d avec les coordonnées de la souris, on peut le rendre clickable. Mais dans un scene 3d, un objet 3d comme un cube ou une sphère ou un mesh, vu qu'il y a 3 coordonnées x,y,z pour le situer dans l'espace, ça me paraît plus difficile, voir quasiment impossible à rendre clickable. Si on se déplace dans l'espace 3d et que l'on tourne autour d'un cube ou que celui-ci tourne sur lui-même sur un des 3 axes, il faudrait qu'il soit clikable. Je ne sais pas si tu saisis ma question.
Cordialement Wink
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 EmptyDim 29 Jan 2012 - 18:30

Oh, je comprends très bien ta question. Mais je dois te renvoyer à Jack: en effet, à mon niveau, je n'ai aucun moyen de savoir quel objet 3D a été visé. Tout ce que je peux dire à mon niveau, c'est ceci:
- un objet 3D peut recevoir un évènement ON_CLICK. On peut donc savoir qu'un clic a eu lieu.
- dans la routine ON_CLICK, on peut utiliser MOUSE_X_LEFT_DOWN et MOUSE_Y_DOWN pour avoir les coordonnées du clic

Bien sûr, cela représente les coordonnées dans la "fenêtre de vision" que représente la SCENE3D dans le monde 3D qui se trouve derrière. En tout cas, on peut se le représenter comme suit. On peut alors édicter quelques règles, certes parfaitement artificielles, pour traiter ces coordonnées. On peut par exemple assumer qu'on touche le premier objet rencontré perpendiculairement à la SCENE3D, en respectant les coordonnées x et y. On peut aussi imaginer un pointe de fuite quelque part au loin, spécifié par des coordonnées fixes; on trouve alors l'objet sur la ligne d'intersection entre le point cliqué et le point de fuite. D'autres conventions sont possibles. A toi d'imaginer ta solution.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 EmptyDim 29 Jan 2012 - 21:42

Merci de ta réponse. C'est bien ce que j'avais compris. Seul Jack pourrais faire quelquechose là dessus, mais c'est pas gagné.
A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 EmptyDim 29 Jan 2012 - 22:17

Et qu'est-ce que tu penses de mon idée de projeter un axe, par exemple perpendiculairement à la surface de la SCENE3D et retenir le premier objet que cet axe rencontre ? Ce serait l'objet englobant les coordonnées (x,y) du clic de souris avec la valeur z la moins élevée ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 EmptyDim 29 Jan 2012 - 22:57

Oui, tu veux faire un point de fuite à partir de la coordonées x,y pour te représenter un axe imaginaire "zp" perpendiculaire au point x,y, et dès que tu rencontres l'objet sur cet axe tu récupères la coordonée que tu peux interpolée par rapport au vrai axe z. C'est ça que tu veux faire?
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 EmptyDim 29 Jan 2012 - 23:15

Oui et non. A mon niveau, dans la DLL, je n'au AUCUN moyen de savoir ce qu'il y a dans la SCENE3D. Pour moi, c'est juste une surface rectangulaire. C'est toi qui, à partir des coordonnées x/y d'un clic, dois effectuer cette projection pour retrouver le premier objet 3D rencontré. Tu en connais les coordonnées, et je n'ai aucun moyen d'interroger une SCENE3D pour savoir ce qu'elle a dans le ventre. Les objets 3D, tout comme les SPRITE dans un SCENE2D, un PICTURE ou un ALPHA. Ce ne sont pas des objets Windows.

Tout ce que je peux te donner (et ça marche déjà sur une SCENE3D) c'est de te donner le type d'évènement (clic gauche, clic droit, double-clic) et les coordonnées associées. Mais c'est toi qui feras le projection en direction de l'axe z à partir du point (x,y).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 EmptyDim 29 Jan 2012 - 23:39

OK, merci de tes éclaircissements, bonne soirée;)
Sleep Sleep
Revenir en haut Aller en bas
Contenu sponsorisé





Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty
MessageSujet: Re: Nouvelle DLL: intercepter clic gauche, double et droit !   Nouvelle DLL: intercepter clic gauche, double et droit ! - Page 2 Empty

Revenir en haut Aller en bas
 
Nouvelle DLL: intercepter clic gauche, double et droit !
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Clics droit, gauche et double clic dans un même menu
» Gestion du Simple clic et du Double clic
» Simuler un clic gauche souris
» Clic droit
» ON_CLICK (clic droit)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: