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 |
|
|
| 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... Dim 7 Avr 2013 - 10:28 | |
| Nouvelle version: KGF.dll du 7/4/2013 J'ai optimisé le traitement du survol d'un objet par le curseur de la souris. Aucun changement fonctionnel, aucun changement de la doc. Je remets ici les 3 programmes de démo: test_mouse_over.bas: - survol d'objets dans form 0 et dans un container avec changement d'aspect - sélection dune ligne d'une liste par simple survol, sans cliquer - Code:
-
' test_mouse_over.bas
label changer_type dim res%
' === définition de quelques objets dont le survol est contrôlé alpha 1 : top 1,10 : left 1,10 : caption 1,"Votre nom:" edit 2 : top 2,10 : left 2,70 : width 2,200 container 10 : top 10,40 : left 10,10 : caption 10,"Fiche personnelle" width 10,400 : height 10,300 alpha 11 : parent 11,10 : top 11,20 : left 11,10 : caption 11,"Adresse:" memo 12 : parent 12,10 : top 12,20 : left 12,80 width 12,200 : height 12,50 alpha 13 : parent 13,10 : top 13,80 : left 13,10 : caption 13,"Numéro SS:" edit 14 : parent 14,10 : top 14,80 : left 14,80 : width 14,200 list 15 : top 15,10 : left 15,430 : height 15,400 item_add 15,"aaaaaa" item_add 15,"bbbbbb" item_add 15,"cccccc" check 16 : top 16,340 : left 16,10 : caption 16,"Surveillance permanente" width 16,150 : mark_on 16 : on_click 16,changer_type check 17 : top 17,360 : left 17,10 : caption 17,"Sélection dans liste par glissement" width 17,250 : mark_on 17
' objet pour la trace du programme alpha 99 : top 99,400 : left 99,10 : caption 99,"Repos" alpha 98 : top 98,420 : left 98,10 : caption 98,"Rien"
KGF_initialize("KGF.dll")
create_mouse_over(8,100,1) add_mouse_over(1,0,0,0,0) add_mouse_over(2,0,255,0,0) add_mouse_over(11,10,0,0,0) add_mouse_over(12,10,0,255,255) add_mouse_over(13,10,0,0,0) add_mouse_over(14,10,0,255,255) add_mouse_over(10,0,0,0,0) add_mouse_over(15,0,255,255,0)
end
changer_type: mouse_over_type(checked(16)) return
' cette procédure est appelée chaque fois que le curseur entre ' dans un des objets surveillés, ou sur la form 0 ' flag%=1 ==> on est dans la form ' flag%=0 ==> on est en-dehors de la form sub on_mouse_over(flag%,obj%) if flag%=1 caption 99,str$(mouse_over_x%)+","+str$(mouse_over_y%)+" sur objet "+str$(obj%)+" "+str$(mouse_over_n%) ' à titre d'exemple, on va interdire l'entrée dans le champ "adresse" ' (objet 12) si le nom est vide (objet 2) if obj%=12 if trim$(text$(2))="" MousePosition(left(12)+width(12)+left(10)+10,top(12)+top(10)+10) end_if end_if if object_type(obj%)=8 GetListBoxItemFromPoint(obj%,mouse_over_x%, mouse_over_y%) if GetListBoxItemFromPoint>0 if checked(17)=1 then SelectListBoxItem(handle(obj%),GetListBoxItemFromPoint) end_if caption 99,str$(mouse_over_x%)+","+str$(mouse_over_y%)+" sur objet "+str$(obj%)+" "+str$(mouse_over_n%)+" item "+str$(GetListBoxItemFromPoint) end_if else caption 99,"Sorti" end_if GetObjectHandleUnderCursor() caption 98,"Han dle: "+str$(GetObjectHandleUnderCursor) end_sub
#INCLUDE "mouse_over_SUB.bas" #INCLUDE "KGF_SUB.bas"
test_mouse_over_bis.bas: - survol de mémo et list avec changement d'aspect - survol de boutons avec changement de taille - Code:
-
' test_mouse_over_bis.bas
label mouse_enter_memo, mouse_exit_memo label mouse_enter_list, mouse_exit_list label mouse_enter_B1, mouse_exit_B1 label mouse_enter_B2, mouse_exit_B2 label mouse_enter_B3, mouse_exit_B3
dim dll$ : dll$ = "KGF.dll" dim langage$ : langage$ = "FR" ' dim langage$ : langage$ = "EN"
KGF_initialize(dll$)
memo 1 : top 1,10 : left 1,10 width 1,300 : height 1,300 if langage$="FR item_add 1,"Déplacez le curseur" item_add 1,"à l'aide de la souris" else item_add 1,"Hoover the cursor" item_add 1,"over the objects" end_if list 2 : top 2,10 : left 2,350 width 2,200 : height 2,400 if langage$="FR item_add 2,"Les objets vont" item_add 2,"changer d'aspect" else item_add 2,"and they will" item_add 2,"change their aspect" end_if button 3 : top 3,360 : left 3,10 : width 3,30 : caption 3,"B1" button 4 : top 4,360 : left 4,40 : width 4,30 : caption 4,"B2" button 5 : top 5,360 : left 5,70 : width 5,30 : caption 5,"B3"
edit 101 : top 101,320 : width 101,60 : left 101,10 : ' hide 101 button 201 :hide 201 : on_click 201,mouse_enter_memo button 301 :hide 301 : on_click 301,mouse_exit_memo
edit 102 : top 102,320 : width 102,60 : left 102,80: ' hide 102 button 202 :hide 202 : on_click 202,mouse_enter_list button 302 :hide 302 : on_click 302,mouse_exit_list
edit 103 : hide 103 edit 104 : hide 104 edit 105 : hide 105 button 203 : on_click 203,mouse_enter_B1 : hide 203 button 303 : on_click 303,mouse_exit_B1 : hide 303 button 204 : on_click 204,mouse_enter_B2 : hide 204 button 304 : on_click 304,mouse_exit_B2 : hide 304 button 205 : on_click 205,mouse_enter_B3 : hide 205 button 305 : on_click 305,mouse_exit_B3 : hide 305
' ClickSetHook(1,101) ' ClickSetLink(201,5) ' ClickSetLink(301,6) DefineMouseOver(1,201,101,5) DefineMouseOver(1,301,101,6)
' ClickSetHook(2,102) ' ClickSetLink(202,5) ' ClickSetLink(302,6) DefineMouseOver(2,202,102,5) DefineMouseOver(2,302,102,6)
ClickSetHook(3,103) ClickSetLink(203,5) ClickSetLink(303,6)
ClickSetHook(4,104) ClickSetLink(204,5) ClickSetLink(304,6)
ClickSetHook(5,105) ClickSetLink(205,5) ClickSetLink(305,6)
end
mouse_enter_memo: color 1,255,230,230 font_color 1,0,0,255 if langage$="FR caption 0,"Entrée mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Enter mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_exit_memo: color 1,255,255,255 font_color 1,0,0,0 if langage$="FR caption 0,"Sortie mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Exit mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_enter_list: color 2,230,230,255 font_color 2,0,0,255 if langage$="FR caption 0,"Entrée list "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Enter list "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_exit_list: color 2,255,255,255 font_color 2,0,0,0 if langage$="FR caption 0,"Sortie list "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Exit list "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_enter_B1: top 3,top(3)-1 : left 3,left(3)-1 height 3,height(3)+2 : width 3,width(3)+2 return mouse_exit_B1: top 3,top(3)+1 : left 3,left(3)+1 height 3,height(3)-2 : width 3,width(3)-2 return
mouse_enter_B2: top 4,top(4)-1 : left 4,left(4)-1 height 4,height(4)+2 : width 4,width(4)+2 return
mouse_exit_B2: top 4,top(4)+1 : left 4,left(4)+1 height 4,height(4)-2 : width 4,width(4)-2 return
mouse_enter_B3: top 5,top(5)-1 : left 5,left(5)-1 height 5,height(5)+2 : width 5,width(5)+2 return
mouse_exit_B3: top 5,top(5)+1 : left 5,left(5)+1 height 5,height(5)-2 : width 5,width(5)-2 return
' DefineMouseOver: ' P1 = le numéro d'objet à surveiller ' P2 = le numéro du bouton fictif qui sert de relais/déclencheur (çà c'est pas encore trop dur à comprendre Laughing ) ' P3 = la variable de retour pour l'objet dans lequel se trouve la souris ' P4 = la variable de retour du type d'évènement en cours sub DefineMouseOver(obj%,btn%,edt%,act%) ClickSetHook(obj%,edt%) ClickSetLink(btn%,act%) end_sub
#INCLUDE "KGF_SUB.bas"
test_mouse_over_ter.bas: - survol de deux pictures avec dessin d'une trace - Code:
-
' test_mouse_over_ter.bas
label mouse_enter_memo, mouse_exit_memo label mouse_enter_rect, mouse_exit_rect, mouse_move_rect
dim dll$ : dll$ = "KGF.dll" dim langage$ : langage$ = "FR" ' dim langage$ : langage$ = "EN"
dim x%, y%, r%, s$, p%
KGF_initialize(dll$)
memo 1 : top 1,10 : left 1,10 width 1,300 : height 1,300 if langage$="FR item_add 1,"Déplacez le curseur" item_add 1,"à l'aide de la souris." item_add 1,"Les objets vont" item_add 1,"changer d'aspect" else item_add 1,"Hoover the cursor" item_add 1,"over the objects" item_add 1,"and they will" item_add 1,"change their aspect" end_if picture 2 : top 2,10 : left 2,350 width 2,200 : height 2,400 picture 3 : top 3,320 : left 3,200 width 3,120 : height 3,100 edit 101 : top 101,320 : width 101,60 : left 101,10 : ' hide 101 button 201 :hide 201 : on_click 201,mouse_enter_memo button 301 :hide 301 : on_click 301,mouse_exit_memo
edit 102 : top 102,320 : width 102,60 : left 102,80: ' hide 102 button 202 :hide 202 : on_click 202,mouse_enter_rect button 302 :hide 302 : on_click 302,mouse_exit_rect button 402 :hide 402 : on_click 402,mouse_move_rect
' ClickSetHook(1,101) ' ClickSetLink(201,5) ' ClickSetLink(301,6) DefineMouseOver(1,201,101,5) DefineMouseOver(1,301,101,6)
' ClickSetHook(0,102) ' ClickDefineRect(1,left(2),top(2),width(2),height(2)) ' ClickDefineRect(2,200,320,120,100) ' ClickSetLinkRect(202,5,1) ' ClickSetLinkRect(302,6,1) ' ClickSetLinkRect(402,7,1) ' ClickSetLinkRect(202,5,2) ' ClickSetLinkRect(302,6,2) ' ClickSetLinkRect(402,7,2)
DefineMouseOverRect(0,202,102,5,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,302,102,6,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,402,102,7,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,202,102,5,2,200,320,120,100) DefineMouseOverRect(0,302,102,6,2,200,320,120,100) DefineMouseOverRect(0,402,102,7,2,200,320,120,100)
end
mouse_enter_memo: color 1,255,230,230 font_color 1,0,0,255 if langage$="FR" caption 0,"Entrée mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Enter mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_exit_memo: color 1,255,255,255 font_color 1,0,0,0 if langage$="FR" caption 0,"Sortie mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Exit mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_enter_rect: s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) 2d_target_is r%+1 if langage$="FR" caption 0,"Entrée picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Enter picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_exit_rect: s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) 2d_target_is r%+1 if langage$="FR" caption 0,"Sortie picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Exit picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_move_rect: s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) s$ = left$(s$,p%-1) p% = instr(s$,",") x% = val(left$(s$,p%-1))-left(r%+1) y% = val(mid$(s$,p%+1,len(s$)))-top(r%+1) 2d_circle x%, y%, 3 if langage$="FR" caption 0,"Move picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Move picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
' DefineMouseOver: ' P1 = le numéro d'objet à surveiller ' P2 = le numéro du bouton fictif qui sert de relais/déclencheur (çà c'est pas encore trop dur à comprendre Laughing ) ' P3 = la variable de retour pour l'objet dans lequel se trouve la souris ' P4 = la variable de retour du type d'évènement en cours sub DefineMouseOver(obj%,btn%,edt%,act%) ClickSetHook(obj%,edt%) ClickSetLink(btn%,act%) end_sub
' DefineMouseOverRect: ' P1 = le numéro d'objet à surveiller ' P2 = le numéro du bouton fictif qui sert de relais/déclencheur (çà c'est pas encore trop dur à comprendre Laughing ) ' P3 = la variable de retour pour l'objet dans lequel se trouve la souris ' P4 = la variable de retour du type d'évènement en cours sub DefineMouseOverRect(obj%,btn%,edt%,act%,num%,x%,y%,w%,h%) ClickSetHook(obj%,edt%) ClickDefineRect(num%,x%,y%,w%,h%) ClickSetLinkRect(btn%,act%,num%) end_sub
#INCLUDE "KGF_SUB.bas"
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Avr 2013 - 15:45 | |
| @ Klaus, Je sais que je vais être casse.... mais serait il possible de récupérer le numéro de l'objet traité dans une variable. Je m'explique. Actuellement, si je créé 10 objets à surveiller, je me retrouve avec 20 button ( dans mon cas, 1 button "in", 1 button "out") . Si la fonction renvoyée le numéro de l'objet dans une variable "Object_Detect%", on aurait besoin d'un button par action mais plus de multiplication par le nombre d' objet. Il suffit de traiter l'application selon le numéro d'objet retourné ( if Object_detect%=x then ...). Je ne sais pas si j'ai été très clair sur ce coup là... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... Dim 7 Avr 2013 - 16:55 | |
| Pas du tout ! mais est-ce que Number_Click ne ferait pas l'affaire ? | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... Dim 7 Avr 2013 - 16:58 | |
| Pas dans son cas, si j'ai bien compris puisque ses objets n'en sont pas mais que ce sont en fait des bouts d'images | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Avr 2013 - 17:04 | |
| Number_click renvoit le numéro cliqué mais ne me permet pas de diminuer le nombre de bouton à cliquer. ce que je voudrais c'est que la fonction declenche le traitement par le bouton mais qu'à fois que le traitement est le même, ce soit le même bouton qui soit declenché et que le dispaching selon l'objet survolé se fasse sur la valeur de la variable de retour contenant son numéro. c'est pas très clair tout çà... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Avr 2013 - 17:19 | |
| Je me reprends pour être sûr d'être compris...
Actuellement, si je créé un objet avec effet, il me deux boutons invisibles par objet pour le traitement des actions "in" et "out". Si on renvoi le numéro de l'objet dans une variable, je peux créer autant d' objet que je veux et seulement un bouton par action à traiter.
Mouse_in:
if In%=objet1 => ....... if In%=objet1 => .......
return
Actuellement :
10 objets créés et surveillés avec "in" et "out" => 20 boutons
Avec renvoi du num dans une variable :
10 objets créés et surveillés avec "in" et "out" => 2 boutons | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... Dim 7 Avr 2013 - 18:29 | |
| Je comprend bien ta question. Pour y répondre, il faut que j'explique un peu plus en détail la méthode de réalisation de ces fonctions.
Tout tourne autour de la façon dont Windows gère les évènements. C'est un système de messages très courts, envoyés aux différents destinataires (fenêtre, container, objets comme edit, bouton etc). Chaque destinataire a sa propre routine d'évènement pour gérer l'ensemble des évènements qui lui sont adressés. Il arrive souvent que Windows adresse un message à une fenêtre (form 0 en Panoramic), mais ce message est destiné à un objet dans cette fenêtre. La routine évènement de la form 0 reconnaît alors ce fait et redirige le message vers le destinataire présumé, en se remettant immédiatement à l'écoute des messages suivants.
Dans le cas de Panoramic, la routine évènement est générée automatiquement lors de la création de l'exécutable. Elle fait partie intégrante de l'environnement généré automatiquement pour le programme lui-même, puis pour la form 0, ainsi que pour tous les objets fenêtrés. Seuls les objets picture et alpha ne sont pas des objets fenêtrés et n'ont donc pas de routine évènement. C'est la routine évènement de leur "contenant" (form 0 ou un container) qui est mise à contribution.
Le noyau de Panoramic, à son tour, permet d'appeler un sous-programme Panoramic lorsqu'un de ces évènements arrive. Certes, Panoramic ne donne accès qu'à un choix restreint d'évènements à traiter. Mais pour tous les évènements traités par Panoramic, c'est d'abord la routine d'évènement de Windows qui agit, et qui transfert le contrôle au noyau de Panoramic pour les cas où le programmeur a créé un ON_xxx, et c'est le noyau de Panoramic appelle à son tour le sous-programme évènement en PAnoramic. Le cas des picture et alpha est particulier: c'est la form contenant le picture qui réagit à sa place et qui est responsable de redessiner le picture ENTIER à chaque modification.
La difficulté, tant qu'on est à l'intérieur de cette chaîne de routines en cascade, c'est qu'on est dans un environnement "évènement". C'est pour un programme application l'équivalent d'une interruption hardware pour un driver. On est soumis à des contraintes de temps très strictes. Trop de temps passé dans une routine d'évènement, et un voir une multitude d'évènements suivants peuvent être "oubliés". Il y a bien une sorte de file d'attente, encore faut-il qu'elle soit vidée suffisamment vite pour que les nouveaux évènements puissent y trouver une place.
Et c'est exactement ce qui se produit avec mon module test_mouse_over_ter.bas, losqu'on essaie d'avoir une trace du passage de la souris dans le picture. Les fonctions de dessin 2d sont fatalement lentes, et de plus, à chaque cherche affiché, le picture entier est redessiné ! Il n'y a pas moyen d'ajouter juste ces quelques pixels ! C'est pourquoi l'affichage paraît saccadé, et décalage parfois.
On n'a pas le même problème avec les deux autres modules, lors du survol de boutons, listes ou mémos. Ces objets sont des objets Windows fenêtrés, et le changement d'état est réalisé par Windows dans un mode prioritaire. On ne passe que très peu de temps dans la routine évènement Panoramic.
J'ai choisi d'intercepter l'évènement Windows lorsqu'il est envoyé à un objet (fonction ClickSetHook). Je détourne le flot du programme vers une routine évènement localisée dans la DLL. Là, je filtre les évènements qui m'intéressent et je passe les autres à la routine qui aurait normalement été appelée. Cela s'appelle la méthode du hameçonnage (hooking en anglais). Et pour chaque évènement qui m'intéresse, je déclenche une action de mon choix.
Donc, connaissant ces contraintes pour en avoir fait l'amère expérience, j'ai tenté de concevoir un mécanisme qui permet d'enrichir la gestion des évènements de Panoramic, mais en prenant le stricte minimum de temps au niveau des routines évènement écrites en Panoramic. Et la méthode qui donne l'exécution la plus rapide, est bien celle qui cible directement la bonne portion de code, sans avoir à passer par une procédure de reconnaissance avec des IFs en cascade, ou des SELECT, ou que sais-je. J'ai choisi de simuler le clic sur un bouton, mais j'aurais pu choisir autre chose, comme ON_CHANGE sur un edit etc. Mais, crois-moi, si tu passes du temps à analyser quelle action il faut exécuter, il pourra déjà être trop tard pour pouvoir intercepter l'action suivante. Je suis tombé dans ce piège, au début, et le cas de la trace dans un picture en est la démonstration flagrante. Par contre, dans test_mouse_over.bas, le cas de sélection d'une ligne dans un objet list par simple survol montre ce que l'on peut faire si l'on est strict avec la gestion du temps des routines évènements.
Pour résumer: oui, je pourrais fournir une indication sur l'objet ayant déclenché l'action. Mais même dans ce cas, cela ne règle pas tout, car pour un seul et même objet, on peut gérer, simultanément, plusieurs évènements par mes fonctions: entrée/sortie de souris, déplacements de la souris dans l'objet, clic gauche ou droit, double clic etc. Il faudrait fournir: l'objet concerné, la nature de l'évènement et les coordonnées. Et le décodage en serait encore plus complexe.
Au final, pour ces raisons techniques, je préfère rester avec cette structure dans laquelle, pour chaque évènement géré, un a un bouton caché et une routine évènement liée à ce bouton par un on_click. Ainsi, il est d'ailleurs très facile d'ajouter le traitement d'un évènement supplémentaire ou d'en enlever un, sans changer le cours global du programme. To comme si l'on ajoutait un ON_CLICK et la routine correspondante à on objet Panoramic, il suffit simplement d'ajouter le bouton et sa routine on_click, puis une ligne ClickSetLink pour liéer l'évèmenent au bouton.
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Avr 2013 - 18:43 | |
| Sniff!!!.... Le vrai "Button_Picture" serait donc la vraie solution.... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... Dim 7 Avr 2013 - 19:02 | |
| Bien sûr. Et ça viendra sûrement.
En attendant, un picture peut déjà servir de bouton. Certes, on n'a pas le changement d'aspect si le curseur entre dans le picture-button, comme pour un vrai bouton, mais on peut le cliquer. C'est ce que je fais dans la barre d'outils de mon IDE, et c'est possible dans DLL. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Avr 2013 - 19:09 | |
| En tout cas merci pour ta réponse avec autant d'explications. Cela va nous permettre de comprendre certaines difficultés dans la création des fonctions de KGF.dll .
| |
| | | Invité Invité
| Sujet: Re: 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... Dim 7 Avr 2013 - 20:13 | |
| Bonsoir, Je me permets tout le temps de ne pas intervenir, mais il y a les démons derrière moi. Est-ce ce que ce bout de code ne pourrait pas servir de base. Il y a le problème du déplacement de la fenêtre, mais il y a peut-être une solution. - Code:
-
dim res%,hnd%,mode%,left%,top%,width%,height% label remettre dll_on "C:\PANO\DLL\KGF.dll" hnd%=handle(0):top% = top(0)+100 :left%=left(0)+100 res% = DLL_call6("WindowRectangleHole",hnd%,1,left%,top%,80,30)
form 10:border_hide 10:width 10,80:height 10,30:color 10,255,0,0:gosub remettre on_click 0,remettre end remettre: left 10,left(0)+100:top 10,top(0)+100 return Le bouton c'est la form 10, et peut-être que ...? |
| | | Contenu sponsorisé
| Sujet: Re: 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... | |
| |
| | | | 2.12 du 7 Avril 2013: amélioration des fonctions ...Click... | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |