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.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect | |
| | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 9 Avr 2013 - 18: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 | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Mar 9 Avr 2013 - 18: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. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 9 Avr 2013 - 20:39 | |
| Essayé mais pas adopté ! 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. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Mar 9 Avr 2013 - 21: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. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 9 Avr 2013 - 21:15 | |
| Même tarif, même punition... J'ai même poussé le wait à 1000 et toujours ce foutu message | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 9 Avr 2013 - 21:20 | |
| En fait il n' y a qu'un ClickSetHook et 4 ClickSetLinkRect .... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Mar 9 Avr 2013 - 21: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. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 10 Avr 2013 - 9:31 | |
| Le mystère du message reste donc entier... Avis à ceux qui aurait une idée sur la question... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Mer 10 Avr 2013 - 10:47 | |
| Alors la, si même Klaus sèche sur ce sujet, ce n'est pas gagné ... bon courage ... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 10 Avr 2013 - 12: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... Il ne servirait que pour ne pas oublier de sauvegarder des changements. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Mer 10 Avr 2013 - 13: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) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 10 Avr 2013 - 14: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... | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Mer 10 Avr 2013 - 21:48 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 10 Avr 2013 - 23:05 | |
| HOUUUULALALALA.....
J'en suis loin, très loin même jjn4 sur sa planète en est plus près que moi. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Sam 27 Avr 2013 - 16: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
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Sam 27 Avr 2013 - 18: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. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Sam 27 Avr 2013 - 18:52 | |
| OK Klaus, je fais le test dans quelques minutes, je donne ma première leçon de Panoramic à mon fils en ce moment... J'en suis à la page 7 ... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Sam 27 Avr 2013 - 18:55 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Sam 27 Avr 2013 - 19: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
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Sam 27 Avr 2013 - 20: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. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Sam 27 Avr 2013 - 21: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 ... ) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Lun 29 Avr 2013 - 11: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. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Lun 29 Avr 2013 - 12: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. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Lun 29 Avr 2013 - 12: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 ? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect Lun 29 Avr 2013 - 12: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 ?) | |
| | | Contenu sponsorisé
| Sujet: Re: 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect | |
| |
| | | | 2.13 du 8 Avril 2013: correction bug dans ClickSetLinkRect | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |