FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF_dll - nouvelles versions
par pascal10000 Aujourd'hui à 13:15

» Casse-tête : Echanger les positions des cavaliers
par jean_debord Aujourd'hui à 10:21

» demande pour recuperer un text speciale
par silverman Hier à 23:00

» Amélioration de la commande HINT
par papydall Mer 19 Juil 2017 - 3:30

» TEST SUR SHAPE
par papydall Mer 19 Juil 2017 - 1:17

» Un challenge à relever
par papydall Mar 18 Juil 2017 - 21:25

» Astuce : Indenter plusieurs lignes de code à la fois
par papydall Mar 18 Juil 2017 - 1:32

» Suggestion pour le forum
par papydall Lun 17 Juil 2017 - 20:28

» Truver les handles des onglets de Panoramic Editor
par Klaus Lun 17 Juil 2017 - 18:20

» Synedit_Editor - nouvelles versions
par Klaus Lun 17 Juil 2017 - 13:46

» Détermine si oui ou non un objet est PARENT d'un autre objet
par Klaus Dim 16 Juil 2017 - 11:58

» Une autre façon de terminer une application.
par papydall Dim 16 Juil 2017 - 3:53

» Déterminer le Handle de l’objet ayant le focus
par papydall Dim 16 Juil 2017 - 3:15

» Déterminer le HANDLE du Bureau
par papydall Dim 16 Juil 2017 - 1:59

» Généralisation de a fonction OBJECT_INTERNAL
par Klaus Dim 16 Juil 2017 - 1:10

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3  Suivant
AuteurMessage
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 9 Avr 2013 - 19:30

Je ne sais pas ce qui cloche mais j'ai droit à çà ( je suis sous W7):


J'aurai peut être une piste

Par
Code:
res% = dll_call1("ClickClearHook",handle(hnd%))
je stoppe la surveillance du form 0 mais pas celle des rectangles
ce qui fait que la fonction renvoi dans quelque chose qui n'existe plus...

Il faudrait peut être

stopper la fonction sur les rectangles
stopper la fonction sur le container
Fermer la dll
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Mar 9 Avr 2013 - 19:40

Essaie comme ceci:
Code:
res% = dll_call1("ClickClearHook",0)
A ce moment, dans la routine ON_CLOSE de la form 0, il faut annuler tous les hooks déclarés. Cela est fait en passant la valeur 0 comme paramètre, et non pas le handle de la form 0.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 9 Avr 2013 - 21:39

Essayé mais pas adopté ! Laughing

Même punition mais le plus rigolo c'est que contrairement aux autres messages,
celui ci ne provoque pas le blocage de la fonction "exécuter" de l' éditeur.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Mar 9 Avr 2013 - 22:04

Réflexion faite, je crois que je t'ai induit en erreur !

Il faut en effet faire un ClickClearHook pour tous les objets pour lesquels un a fait un ClickSetHook !

Et dans ton cas, c'est bien la form 0.

Donc, ta routine on_close de la form 0 devrait etre ceci:
Code:
Close:
  hnd%=handle(0)
  res% = dll_call1("ClickClearHook",hnd%)
  Dll_off
return

ou plus simplement:
Code:
Close:
  res% = dll_call1("ClickClearHook",handle(0))
  Dll_off
return

Je ne me rappelle plus si c'est ce que tu avais au début, mais c'est le code qui devrait marcher. Tu fais 4 ClickSetHook, tous les 4 pour la form 0, et donc seule la form 0 est concernée. Inutile (et dangereux !) de faire le ClickClearHook 4 fois...

EDIT

Tui pourrais éventuellement ajouter un WAIT 200 juste avant le DLL_OFF.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 9 Avr 2013 - 22:15

Même tarif, même punition...
J'ai même poussé le wait à 1000 et toujours ce foutu message
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 9 Avr 2013 - 22:20

En fait il n' y a qu'un ClickSetHook et 4 ClickSetLinkRect ....
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Mar 9 Avr 2013 - 22:41

Exact. Mais les ClickSetLink sont inoffensifs. ce qui compte, c'est d'annuler l'effet de ClickSetHook.

EDIT

D'ailleurs, vérification faite, un appel multiple à ClickClearHook avec le même handle d'objet ne produit pas de problème. Cela a été sécurisé à l'intérieur de la DLL: dès le deuxième appel, la fonction retourne immédiatement et ne fait plus rien. Mais il est essentiel de le faire une fois, avant de fermer le programme.

D'ailleurs, pour info: ClickClearHook élimine aussi tous les ClickSetLink, mais pas les ClickSetRect ! Les rectangles restent définis, mais cela est sans influence sur l'exécution ultérieur (ou l'arrêt) du programme.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 10 Avr 2013 - 10:31

Le mystère du message reste donc entier... Laughing

Avis à ceux qui aurait une idée sur la question... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5840
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Mer 10 Avr 2013 - 11:47

Alors la, si même Klaus sèche sur ce sujet, ce n'est pas gagné ... bon courage ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 10 Avr 2013 - 13:42

En voilà une bien drôle !!!

J'ai pris le risque du plantage monumentale, j'ai mis "on_close 0,close" en rem et j'ai cliqué sur la croix.

SURPRISE !!! la fenêtre se ferme sans aucun message.
Par curiosité masochiste, j'ai ouvert le gestionnaire de tâches à la recherche d'un processus résiduel.
RE SURPRISE !!!! rien, même pas un "panoramic.exe"...

CQFD , Apparemment W7 ferme tout par la croix.
Autrement dit le "On_close 0,close" fait doublon si il inclut des fermetures ou destructions... Suspect
Il ne servirait que pour ne pas oublier de sauvegarder des changements.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5840
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Mer 10 Avr 2013 - 14:32

et pour les timer quand il y en a. W7 n'aime pas quand on laisse tourner un timer en quittant (affichage d'un message d'erreur)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 10 Avr 2013 - 15:54

Je pense que c'est dû au fait qu'un timer peut être une execution en cours en même temps que la fermeture
alors que pour la detection sur le form 0, elle est ponctuel et pas en cours losque la souris est sur la croix.

Mais, je dis peut être encore une bêtise... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
pascal10000

avatar

Nombre de messages : 506
Localisation : Troyes
Date d'inscription : 05/02/2011

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Mer 10 Avr 2013 - 22:48

ygeronimi

tu vas nous faire le logiciel du ciecle lol! lol! lol! lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 11 Avr 2013 - 0:05

HOUUUULALALALA.....

J'en suis loin, très loin même jjn4 sur sa planète en est plus près que moi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5840
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Sam 27 Avr 2013 - 17:48

Klaus, je dois faire mal quelque chose, mais je ne trouve pas ...
Si tu peux m'expliquer mon erreur ...

En fait je voudrais afficher un zoom quand je suis sur le sprite a terme. Là pour mon test, j'ai juste voulu afficher la position de la souris si on est dans la zone du sprite, mais je patauge ...


Code:
REM -------------------------------------------------------------
REM ---                                                      ---
REM ---            Sprites tool en Panoramic v1.0            ---
REM ---                                                      ---
REM -------------------------------------------------------------
REM
REM Permet de:
REM      - Remplacer les couleurs 0;0;0 des images par des 0;0;1
REM      - Remplacer une couleur de fond par des 0;0;0
REM      - Ajuster et déplacer un sprite en hauteur ou largeur
REM

LABEL Charger,Quitter,Sauver,Couleur,aff_palette,aff_loupe
LABEL AfficherZoom
' ,Pipette,Remplace,Selectionne_couleur,Echange
' LABEL CopieCouleurARemplacer,CopieCouleurDeRemplacement
' LABEL R_NOIR,R_ROSE,R2_FAUXNOIR,R2_NOIR

DIM D$ : D$ = "C:\Panoramic-Init\sources\Barbarian-jc\"
DIM Ligne,Col,C1%,C2%,C3%,S1$,S2$,S3$,Modif%
DIM Charger%,Sauver%
DIM wco%, hco%, wct%, hct%, ech%, ecv%, ra%, ga%, ba%, i%, j%, x%, y%
DIM affich_palette%,affich_zoom%
DIM Menu%,no%,no2%,bpalette%,bzoom%,res%,hnd_button%

DLL_ON D$+"KGF.dll"
HEIGHT 0,300:WIDTH 0,400:LEFT 0,(screen_x-211)/2
CAPTION 0,"SPRITES TOOLS"

IMAGE 2
BUTTON 3: LEFT 3,-1000 : CAPTION 3,"SOURIS SUR LE SPRITE"
hnd_button% = HANDLE(3): ON_ClICK 3,AfficherZoom

' Trace la palette de couleurs html, de &000000 à &FFFFFF, pas de &33
' &000000, &000033, &000066, &000099, &0000CC, &0000FF, &003300, &003333, etc.
wco% = 15: hco% = 15: ech% = 0: ecv% = 0
wct% = 6*(wco%+ech%): hct% = 36*(hco%+ecv%)
affich_palette%=0:affich_zoom%=0
FORM 300: HIDE 300 : TOP 300, 0: LEFT 300, 0: BORDER_SMALL 300
CAPTION 300, " - PALETTE -"
WIDTH 300, wct%+16: HEIGHT 300, hct%+34
PICTURE 301: PARENT 301, 300: WIDTH 301, wct%: HEIGHT 301,hct%
2D_TARGET_IS 301
ra% = 0: ga% = 0: ba% = 0
FOR j% = 0 TO 35
    y% = j%*(hco%+ecv%)
    FOR i% = 0 TO 5
        x% = i%*(wco%+ech%)
        2D_FILL_COLOR ra%,ga%,ba%
        2D_RECTANGLE x%,y%,x%+wco%-1,y%+hco%-1
        ba% = ba% + HEX("33")
        IF ba% > 255
            ba% = 0: ga% = ga% + HEX("33")
            IF ga% > 255
                ga% = 0: ra% = ra% + HEX("33")
            END_IF
        END_IF
    NEXT i%
NEXT j%
ON_CLICK 301, Couleur
CONTAINER 310 : HIDE 310 : PARENT 310,300 :WIDTH 310,200 : HEIGHT 310, 80
TOP 310,5 : LEFT 310,6*(wco%+ech%)+5
ALPHA 311 : PARENT 311,310 : WIDTH 311, 200 : TOP 311, 7: LEFT 311,3
FONT_BOLD 311 : FONT_COLOR 311,50,50,200 : CAPTION 311,"  COULEUR SELECTIONNEE"
ALPHA 316 : PARENT 316,310 : WIDTH 316,58 : TOP 316,27 : LEFT 316,6
FONT_COLOR 316,255,0,0 : CAPTION 316,"ROUGE"
ALPHA 317 : PARENT 317,310 : WIDTH 317,58 : TOP 317,27 : LEFT 317,70
FONT_COLOR 317,0,200,0 : CAPTION 317,"VERT"
ALPHA 318 : PARENT 318,310 : WIDTH 318,58 : TOP 318,27 : LEFT 318,134
FONT_COLOR 318,0,0,255 : CAPTION 318,"BLEU"
EDIT 319 : PARENT 319,310 : WIDTH 319,58 : TOP 319,47 : LEFT 319,6 : TEXT 319,"0"
EDIT 320 : PARENT 320,310 : WIDTH 320,58 : TOP 320,47 : LEFT 320,70 : TEXT 320,"0"
EDIT 321 : PARENT 321,310 : WIDTH 321,58 : TOP 321,47 : LEFT 321,134 : TEXT 321,"0"
ALPHA 302 : PARENT 302,300 : HIDE 302 : WIDTH 302,58 : TOP 302,92 : LEFT 302,6*(wco%+ech%)+10
FONT_BOLD 302 : CAPTION 302,"APPERCU"
PICTURE 303 : HIDE 303 : PARENT 303,300 : WIDTH 303,60 : TOP 303,90 : LEFT 303,6*(wco%+ech%)+74
HEIGHT 303,18

' Menu principal
no%=100 : main_menu no% : Menu% = no%
' Sous menu fichier
no% = no% + 1 : sub_menu no% : parent no%,Menu% : no2% = no% : caption no%,"Fichier"
no% = no% + 1 : sub_menu no% : parent no%,no2% : Charger% = no%
caption no%,"Charger": on_click no%,charger
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer"
inactive no% : Sauver% = no% : on_click no%,sauver
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Quitter": on_click no%,quitter
' Sous menu outils
no% = no% + 1 : sub_menu no% : parent no%,Menu% : no2% = no% : caption no%,"Outils"
' Sous menu affichage
no% = no% + 1 : sub_menu no% : parent no%,Menu% : no2% = no% : caption no%,"  Afficher"
no% = no% + 1 : sub_menu no% : parent no%,no2% : bpalette% = no%
caption no%,"Afficher Palette": on_click no%,aff_palette

PICTURE 4: LEFT 4,70
gosub aff_loupe
END

aff_palette:
  affich_palette%=1-affich_palette%
  IF affich_palette%=1
    CAPTION bpalette%,"X Afficher Palette"
    SHOW 300 : ON_CLOSE 300,aff_palette
  ELSE
    CAPTION bpalette%,"  Afficher Palette"
    HIDE 300 : OFF_CLOSE 300
  END_IF
RETURN

AfficherZoom:
OFF_CLICK 3
CAPTION 0,"Souris en : " + STR$(MOUSE_X_POSITION(4)) + ";" +STR$(MOUSE_Y_POSITION(4))
WAIT 200
CAPTION 0,""
ON_CLICK 3,AfficherZoom
RETURN

aff_loupe:
' définir un rectangle de numéro num% (de 1 à 200)
res% = dll_call2("ClickSetHook",handle(0),hnd_button%)
res% = dll_call3("ClickSetLinkRect",hnd_button%,0-7,4)
RETURN

Charger:
  OpenImg()
  WIDTH 4,res_x%:HEIGHT 4,res_y%: TOP 4,10
  2D_TARGET_IS 4 : 2D_IMAGE_PASTE 2,0,0
  CAPTION 0,"Edition du sprite : " + R_OpenImg$
  C1% = WIDTH(4)  : IF C1% <  60 THEN C1%= 60
  C2% = HEIGHT(4) : IF C2% < 100 THEN C2%=100
  HEIGHT 0,C2%+160 : WIDTH 0,C1%+306
  Modif% = 0 : INACTIVE Sauver%
RETURN

Sauver:
  SaveImg()
  Modif%=0 : inactive Sauver%
RETURN

SUB SaveImg()
  FILE_SAVE 4,Img_File$
RETURN

SUB OpenImg()
  IF VARIABLE("R_OpenImg$") = 0 THEN DIM R_OpenImg$
  IF VARIABLE("Img_File$") = 0 THEN DIM Img_File$
  DIM_LOCAL OpenImg_res%,OpenImg_filter$:OpenImg_filter$="*.JPG;*.BMP;*.GIF;*.PNG;*.EMF;*.ICO;*.WMF"
  OPEN_DIALOG 1
  FILTER 1,"Fichiers images|"+OpenImg_filter$+"|Tous|*.*"
  Img_File$ = FILE_NAME$(1) : DELETE 1
  IF Img_File$ <> "_"
    IF INSTR(OpenImg_filter$,UPPER$(RIGHT$(Img_File$,4)))=0
      MESSAGE "Désolé mais ce format ("+LOWER$(RIGHT$(Img_type$,3))+")"+chr$(10)+"n'est pas pris en compte !"
    ELSE
      OpenImg_res%=DLL_CALL1("LoadAnyImageFile",adr(Img_File$))
      DimImg(): WIDTH 2,res_x% : HEIGHT 2,res_y%: CLIPBOARD_PASTE 2
      Rinstr(Img_File$,"\")
      R_OpenImg$ = RIGHT$(Img_File$,LEN(Img_File$)-rs_k%)
    END_IF
  END_IF
END_SUB

SUB Rinstr(ch$,sq$)
' recherche de sq$ dans ch$ à partir de la fin (~Instr inversé) -> rs_k%
IF VARIABLE("rs_k%") = 0 THEN DIM rs_k%
FOR rs_k% = LEN(ch$)-LEN(sq$)+1 TO 1 STEP -1
    IF MID$(ch$, rs_k%, LEN(sq$)) = sq$ THEN EXIT_FOR
NEXT rs_k%
END_SUB

SUB DimImg()
  IF VARIABLE("res_x%") = 0 THEN DIM res_x%,res_y%
  res_x% = DLL_CALL0("GetClipboardPictureWidth")
  res_y% = DLL_CALL0("GetClipboardPictureHeight")
END_SUB

Couleur:
  x% = MOUSE_X_POSITION(301): y% = MOUSE_Y_POSITION(301)
  ra% = COLOR_PIXEL_RED(301,x%,y%)
  ga% = COLOR_PIXEL_GREEN(301,x%,y%)
  ba% = COLOR_PIXEL_BLUE(301,x%,y%)
  wct% = 6*(wco%+ech%)+210 : WIDTH 300, wct%+16 : SHOW 310 : SHOW 302
  TEXT 319,STR$(ra%) :  TEXT 320,STR$(ga%):  TEXT 321,STR$(ba%)
  COLOR 303,ra%,ga%,ba% : SHOW 303
RETURN

Quitter:
  TIMER_OFF_ALL
  res% = dll_call1("ClickClearHook",handle(4))
  DLL_OFF
Terminate
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Sam 27 Avr 2013 - 19:32

Le problème est ici:
Code:
aff_loupe:
' définir un rectangle de numéro num% (de 1 à 200)
res% = dll_call2("ClickSetHook",handle(0),hnd_button%)
res% = dll_call3("ClickSetLinkRect",hnd_button%,0-7,4)
RETURN

1. La fonction ClickSetHook établit un lien entre un objet (dans ton cas, la form 0) et un objet EDIT dont on passe le handle. Ce EDIT recevra les informations sur l'évènement intercepté. Or, tu passes le handle d'un bouton, pas celui d'un edit.

2. La fonction ClickSetLinkRect établie un lien entre un bouton invisible à déclencher par l'évènement, un code fonction (tu as choisi -7 = souris bouge dans le rectangle) et un numéro de rectangle (tu as choisi le rectangle 4).
Or, le rectangle 4 n'est pas défini. Il faut auparavant appeler la fonction ClickDefineRect pour le définir. Attention: fais cela une seule fois, au début du programme, et pas de façon répététive !
Ensuite, en utilisant le code -7, tu auras des milliers d'évènements à traiter. Tu ferais mieux de déclarer 2 évènements: u pour entrée de souris et l'autre pour sortie de souris

Conseils:
1. définis ton rectangle au début du programme.
2. crée un objetr EDIT caché et utilise-le pour la fonction ClickSetHook, au lieu du handle du bouton
3. utilise deux boutons cachés, chacun avec un appel à ClickSetLinkRect, avec le même rectangle. Le premier avec le code -5 (entrée de souris), le second avec le code -6 (sortie de souris). Le code -7 (mouvement de souris) ne sert que si tu veux suivre à la trace la position de la souris tant qu'elle est dans le rectangle.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5840
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Sam 27 Avr 2013 - 19:52

OK Klaus, je fais le test dans quelques minutes, je donne ma première leçon de Panoramic à mon fils en ce moment... Wink
J'en suis à la page 7 ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Sam 27 Avr 2013 - 19:55

Louable initiative !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5840
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Sam 27 Avr 2013 - 20:40

Désolé, je ne comprends toujours pas, je voudrais juste qu'il m'affiche la position de la souris quand je suis sur le sprite.
Mais j'ai dû passer trop de temps depuis les explications, je ne comprends vraiment pas ce que je dois faire ...

J'ai modifié le programme plusieurs fois pour essayé mais rien ne se passe... Je m'y prends mal mais je n'arrive pas à faire mieux ...
Code:
REM -------------------------------------------------------------
REM ---                                                      ---
REM ---            Sprites tool en Panoramic v1.0            ---
REM ---                                                      ---
REM -------------------------------------------------------------
REM
REM Permet de:
REM      - Remplacer les couleurs 0;0;0 des images par des 0;0;1
REM      - Remplacer une couleur de fond par des 0;0;0
REM      - Ajuster et déplacer un sprite en hauteur ou largeur
REM

LABEL Charger,Quitter,Sauver,Couleur,aff_palette,aff_loupe
LABEL AfficherZoom
' ,Pipette,Remplace,Selectionne_couleur,Echange
' LABEL CopieCouleurARemplacer,CopieCouleurDeRemplacement
' LABEL R_NOIR,R_ROSE,R2_FAUXNOIR,R2_NOIR

DIM D$ : D$ = "C:\Panoramic-Init\sources\Barbarian-jc\"
DIM Ligne,Col,C1%,C2%,C3%,S1$,S2$,S3$,Modif%
DIM Charger%,Sauver%
DIM wco%, hco%, wct%, hct%, ech%, ecv%, ra%, ga%, ba%, i%, j%, x%, y%
DIM affich_palette%,affich_zoom%
DIM Menu%,no%,no2%,bpalette%,bzoom%,res%,hnd_button%

DLL_ON D$+"KGF.dll"
HEIGHT 0,300:WIDTH 0,400:LEFT 0,(screen_x-211)/2
CAPTION 0,"SPRITES TOOLS"

IMAGE 2
BUTTON 3: LEFT 3,-1000 : CAPTION 3,"SOURIS SUR LE SPRITE"
hnd_button% = HANDLE(3): ON_ClICK 3,AfficherZoom

' Trace la palette de couleurs html, de &000000 à &FFFFFF, pas de &33
' &000000, &000033, &000066, &000099, &0000CC, &0000FF, &003300, &003333, etc.
wco% = 15: hco% = 15: ech% = 0: ecv% = 0
wct% = 6*(wco%+ech%): hct% = 36*(hco%+ecv%)
affich_palette%=0:affich_zoom%=0
FORM 300: HIDE 300 : TOP 300, 0: LEFT 300, 0: BORDER_SMALL 300
CAPTION 300, " - PALETTE -"
WIDTH 300, wct%+16: HEIGHT 300, hct%+34
PICTURE 301: PARENT 301, 300: WIDTH 301, wct%: HEIGHT 301,hct%
2D_TARGET_IS 301
ra% = 0: ga% = 0: ba% = 0
FOR j% = 0 TO 35
    y% = j%*(hco%+ecv%)
    FOR i% = 0 TO 5
        x% = i%*(wco%+ech%)
        2D_FILL_COLOR ra%,ga%,ba%
        2D_RECTANGLE x%,y%,x%+wco%-1,y%+hco%-1
        ba% = ba% + HEX("33")
        IF ba% > 255
            ba% = 0: ga% = ga% + HEX("33")
            IF ga% > 255
                ga% = 0: ra% = ra% + HEX("33")
            END_IF
        END_IF
    NEXT i%
NEXT j%
ON_CLICK 301, Couleur
CONTAINER 310 : HIDE 310 : PARENT 310,300 :WIDTH 310,200 : HEIGHT 310, 80
TOP 310,5 : LEFT 310,6*(wco%+ech%)+5
ALPHA 311 : PARENT 311,310 : WIDTH 311, 200 : TOP 311, 7: LEFT 311,3
FONT_BOLD 311 : FONT_COLOR 311,50,50,200 : CAPTION 311,"  COULEUR SELECTIONNEE"
ALPHA 316 : PARENT 316,310 : WIDTH 316,58 : TOP 316,27 : LEFT 316,6
FONT_COLOR 316,255,0,0 : CAPTION 316,"ROUGE"
ALPHA 317 : PARENT 317,310 : WIDTH 317,58 : TOP 317,27 : LEFT 317,70
FONT_COLOR 317,0,200,0 : CAPTION 317,"VERT"
ALPHA 318 : PARENT 318,310 : WIDTH 318,58 : TOP 318,27 : LEFT 318,134
FONT_COLOR 318,0,0,255 : CAPTION 318,"BLEU"
EDIT 319 : PARENT 319,310 : WIDTH 319,58 : TOP 319,47 : LEFT 319,6 : TEXT 319,"0"
EDIT 320 : PARENT 320,310 : WIDTH 320,58 : TOP 320,47 : LEFT 320,70 : TEXT 320,"0"
EDIT 321 : PARENT 321,310 : WIDTH 321,58 : TOP 321,47 : LEFT 321,134 : TEXT 321,"0"
ALPHA 302 : PARENT 302,300 : HIDE 302 : WIDTH 302,58 : TOP 302,92 : LEFT 302,6*(wco%+ech%)+10
FONT_BOLD 302 : CAPTION 302,"APPERCU"
PICTURE 303 : HIDE 303 : PARENT 303,300 : WIDTH 303,60 : TOP 303,90 : LEFT 303,6*(wco%+ech%)+74
HEIGHT 303,18

' Menu principal
no%=100 : main_menu no% : Menu% = no%
' Sous menu fichier
no% = no% + 1 : sub_menu no% : parent no%,Menu% : no2% = no% : caption no%,"Fichier"
no% = no% + 1 : sub_menu no% : parent no%,no2% : Charger% = no%
caption no%,"Charger": on_click no%,charger
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer"
inactive no% : Sauver% = no% : on_click no%,sauver
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Quitter": on_click no%,quitter
' Sous menu outils
no% = no% + 1 : sub_menu no% : parent no%,Menu% : no2% = no% : caption no%,"Outils"
' Sous menu affichage
no% = no% + 1 : sub_menu no% : parent no%,Menu% : no2% = no% : caption no%,"  Afficher"
no% = no% + 1 : sub_menu no% : parent no%,no2% : bpalette% = no%
caption no%,"Afficher Palette": on_click no%,aff_palette

PICTURE 4: LEFT 4,70
res% = dll_call5("ClickDefineRect",1,70,0,WIDTH(4),HEIGHT(4))
gosub aff_loupe
END

aff_palette:
  affich_palette%=1-affich_palette%
  IF affich_palette%=1
    CAPTION bpalette%,"X Afficher Palette"
    SHOW 300 : ON_CLOSE 300,aff_palette
  ELSE
    CAPTION bpalette%,"  Afficher Palette"
    HIDE 300 : OFF_CLOSE 300
  END_IF
RETURN

AfficherZoom:
OFF_CLICK 3
CAPTION 0,"Souris en : " + STR$(MOUSE_X_POSITION(4)) + ";" +STR$(MOUSE_Y_POSITION(4))
WAIT 200
CAPTION 0,""
ON_CLICK 3,AfficherZoom
RETURN

aff_loupe:
' définir un rectangle de numéro num% (de 1 à 200)
res% = dll_call3("ClickSetLinkRect",hnd_button%,0-7,1)
Message "Activé"
RETURN

Charger:
  OpenImg()
  WIDTH 4,res_x%:HEIGHT 4,res_y%: TOP 4,10
  2D_TARGET_IS 4 : 2D_IMAGE_PASTE 2,0,0
  CAPTION 0,"Edition du sprite : " + R_OpenImg$
  C1% = WIDTH(4)  : IF C1% <  60 THEN C1%= 60
  C2% = HEIGHT(4) : IF C2% < 100 THEN C2%=100
  HEIGHT 0,C2%+160 : WIDTH 0,C1%+306
  res% = dll_call5("ClickDefineRect",1,left(4),top(4),WIDTH(4),HEIGHT(4))
  Modif% = 0 : INACTIVE Sauver%
RETURN

Sauver:
  SaveImg()
  Modif%=0 : inactive Sauver%
RETURN

SUB SaveImg()
  FILE_SAVE 4,Img_File$
RETURN

SUB OpenImg()
  IF VARIABLE("R_OpenImg$") = 0 THEN DIM R_OpenImg$
  IF VARIABLE("Img_File$") = 0 THEN DIM Img_File$
  DIM_LOCAL OpenImg_res%,OpenImg_filter$:OpenImg_filter$="*.JPG;*.BMP;*.GIF;*.PNG;*.EMF;*.ICO;*.WMF"
  OPEN_DIALOG 1
  FILTER 1,"Fichiers images|"+OpenImg_filter$+"|Tous|*.*"
  Img_File$ = FILE_NAME$(1) : DELETE 1
  IF Img_File$ <> "_"
    IF INSTR(OpenImg_filter$,UPPER$(RIGHT$(Img_File$,4)))=0
      MESSAGE "Désolé mais ce format ("+LOWER$(RIGHT$(Img_type$,3))+")"+chr$(10)+"n'est pas pris en compte !"
    ELSE
      OpenImg_res%=DLL_CALL1("LoadAnyImageFile",adr(Img_File$))
      DimImg(): WIDTH 2,res_x% : HEIGHT 2,res_y%: CLIPBOARD_PASTE 2
      Rinstr(Img_File$,"\")
      R_OpenImg$ = RIGHT$(Img_File$,LEN(Img_File$)-rs_k%)
    END_IF
  END_IF
END_SUB

SUB Rinstr(ch$,sq$)
' recherche de sq$ dans ch$ à partir de la fin (~Instr inversé) -> rs_k%
IF VARIABLE("rs_k%") = 0 THEN DIM rs_k%
FOR rs_k% = LEN(ch$)-LEN(sq$)+1 TO 1 STEP -1
    IF MID$(ch$, rs_k%, LEN(sq$)) = sq$ THEN EXIT_FOR
NEXT rs_k%
END_SUB

SUB DimImg()
  IF VARIABLE("res_x%") = 0 THEN DIM res_x%,res_y%
  res_x% = DLL_CALL0("GetClipboardPictureWidth")
  res_y% = DLL_CALL0("GetClipboardPictureHeight")
END_SUB

Couleur:
  x% = MOUSE_X_POSITION(301): y% = MOUSE_Y_POSITION(301)
  ra% = COLOR_PIXEL_RED(301,x%,y%)
  ga% = COLOR_PIXEL_GREEN(301,x%,y%)
  ba% = COLOR_PIXEL_BLUE(301,x%,y%)
  wct% = 6*(wco%+ech%)+210 : WIDTH 300, wct%+16 : SHOW 310 : SHOW 302
  TEXT 319,STR$(ra%) :  TEXT 320,STR$(ga%):  TEXT 321,STR$(ba%)
  COLOR 303,ra%,ga%,ba% : SHOW 303
RETURN

Quitter:
  TIMER_OFF_ALL
  DLL_OFF
Terminate
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Sam 27 Avr 2013 - 21:55

Tu y est presque. Tu as malheureusement supprime l'appel à ClickSetHook - la fonction centrale qui initialise le système d'interception :

Fais ceci:
Code:
dim hnd_edit%
edit 1234 : hide 1234 : hnd_edit% = handle(1234)
...
aff_loupe:
' définir un rectangle de numéro num% (de 1 à 200)
res% = dll_call2("ClickSetHook",handle(0),hnd_edit%)
res% = dll_call3("ClickSetLinkRect",hnd_button%,0-7,1)
Message "Activé"
RETURN

Et ça marchera comme tu le souhaites.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5840
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Sam 27 Avr 2013 - 22:25

Merci Klaus, non seulement ça marche mais en plus, je crois avoir compris mon erreur ...
Merci beaucoup pour ton explication et tes fonctions si pratiques (même si c'est parfois complexe à comprendre pour nos petits cerveaux ... Wink )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5840
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Lun 29 Avr 2013 - 12:51

Klaus, je me suis fait 2 petits sous programmes pour faire les miroirs horizontaux et verticaux. Tu me confirmes, ce n'était pas faisable directement par un appel dans KGF ?
Autre question, dans tes fonctions, as tu une fonction de substitution de couleur(s) vers une autre couleur ?
Je demande ça puisque certaiens fonctions pourraient être plus rapudes à l'éxecution que celles que je code.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Lun 29 Avr 2013 - 13:00

Effectivement, pour le moment, je n'ai ni effet miroir ni remplacement d'une couleur, dans les fonctions existantes. J'ai seulement la rotation d'une image et l'application d'un filtre de couleurs.

Mais l'effet miroir et le remplacement d'une couleur est réalisable aisément par le même principe que les routines existantes. Si cela présente un intérêt, je peux le faire.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Lun 29 Avr 2013 - 13:38

J'ai jouté la fonction ReplacePictureColor qui remplace une couleur RGB par une autre. Recharger KGF.dll, KGF_SUB.bas et la doc qui est à jour.

Ca, c'était la partie "facile". Pour l'effet miroir, qu'est-ce que tu souhaites: miroir selon un axe vertical placé horizontalement au milieu de l'image, ainsi que miroir selon un axe horizontal placé verticalement au milieu de l'image ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5890
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   Lun 29 Avr 2013 - 13:48

Il voudrait bien les deux...

(par contre je ne comprends pas bien les expressions 'un axe vertical placé horizontalement' ou 'un axe horizontal placé verticalement' ?
J'aurais pensé symétrie horizontale, inversion gauche/droite, ou symétrie verticale, inversion haut/bas, tout simplement ?)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect   

Revenir en haut Aller en bas
 
2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 3Aller à la page : Précédent  1, 2, 3  Suivant
 Sujets similaires
-
» Convention de Troyes: 27-28 avril 2013
» mail de masse pour ANIMAL CROSSING WII U.(Fait le 28 avril 2013)
» Nouvelle interface Bbox, toujours rien ?
» 2.16 du 22 avril 2013: nouvel objet RichEdit
» beIN SPORT en clair du 26 mars au 01 avril 2013 sur Bbox

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: