Retour sur #PB_MessageRequester_Ok

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Retour sur #PB_MessageRequester_Ok

Message par Ar-S »

Je trouve dommage qu'il ni ait pas de valeur de retour autre que 0 pour #PB_MessageRequester_Ok
Dans le cas ou l'utilisateur clique sur la croix pour fermer/annuler.
Dans l'exemple suivant, j'aimerai que le OK s'affiche si on clique sur le bouton et que cancel ne s'affiche que si l'utilisateur ferme via la croix.
C'est un popup informatif qui ne nécessite pas de YesNo

Code : Tout sélectionner

MessagePathDestination = MessageRequester("Destination","Vous allez choisir un dossier de destination",#PB_MessageRequester_Ok|#PB_MessageRequester_Info)
If MessagePathDestination = #PB_MessageRequester_Ok
    Debug "OK"
Else
    Debug "CANCEL"
EndIf
Qu'en pensez vous ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Retour sur #PB_MessageRequester_Ok

Message par cage »

Bonjour,

Ça ressemble a un bug.

L'exemple 1 ne fonctionne pas

Code : Tout sélectionner

MessagePathDestination.a = MessageRequester("Destination","Vous allez choisir un dossier de destination",#PB_MessageRequester_Ok)

Select MessagePathDestination
  Case #PB_MessageRequester_Ok     : Debug "OK"     ; 1
  Case #PB_MessageRequester_Cancel : Debug "CANCEL" ; 2
  Case #PB_MessageRequester_Yes    : Debug "YES"    ; 6
  Case #PB_MessageRequester_No     : Debug "NO"     ; 7
  Default                          : Debug "???"
EndSelect

Debug "MessagePathDestination = "+MessagePathDestination
L'exemple 2 fonctionne

Code : Tout sélectionner

MessagePathDestination.a = MessageRequester("Destination","Vous allez choisir un dossier de destination",#PB_MessageRequester_YesNoCancel)

Select MessagePathDestination
  Case #PB_MessageRequester_Ok     : Debug "OK"     ; 1
  Case #PB_MessageRequester_Cancel : Debug "CANCEL" ; 2
  Case #PB_MessageRequester_Yes    : Debug "YES"    ; 6
  Case #PB_MessageRequester_No     : Debug "NO"     ; 7
  Default                          : Debug "???"
EndSelect

Debug "MessagePathDestination = "+MessagePathDestination
Dans l'exemple 1, malgré que la valeur de retour vaut 1, ??? s'affiche a la place de OK
Que l'on appuie sur OK, la croix ou ESCAPE, la valeur de retour vaut toujours 1
Ce comportement me parait bizarre et n'est pas du tout ce a quoi on s'attend.

cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Retour sur #PB_MessageRequester_Ok

Message par Ar-S »

Dans la doc

Code : Tout sélectionner

Les valeurs de retour sont les suivantes: 
  #PB_MessageRequester_Yes    : Le bouton 'Oui' a été pressé
  #PB_MessageRequester_No     : Le bouton 'Non' a été pressé
  #PB_MessageRequester_Cancel : Le bouton 'Annuler' a été pressé
Rien pour #PB_MessageRequester_OK Je pense que c'est un manque plus qu'un bug.

Le comportement est incohérent.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Mindphazer
Messages : 693
Inscription : mer. 24/août/2005 10:42

Re: Retour sur #PB_MessageRequester_Ok

Message par Mindphazer »

En fait, la valeur de #PB_MessageRequester_Ok est bien 0 (tu peux le vérifier en faisant Debug #PB_MessageRequester_Ok), mais dans ton 1er exemple, c'est la valeur 1 qui est renvoyée. Du coup, ce 1 ne correspond à aucune possibilité de ton select, d'où l'affichage du "???"

Ce qui est marrant, sur MacOS, la valeur retour dans ton 1er exemple est 0 (il n'y a pas de croix de fermeture dans les messagerequester sur Mac)
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
nemerod
Messages : 40
Inscription : mer. 24/août/2022 0:58

Re: Retour sur #PB_MessageRequester_Ok

Message par nemerod »

le truc avec les message request, c'est que la croie prendra la valeur par defaut d'annulation si c'est un oui ou non, mais dans le cas d'un OK tous seul c'est comme faire le bouton OK car il y a pas d'autre possibilité, donc au niveau de la doc de PB il manque un detail, dans le cas si c'est fermé par la croie c'est une valeur non défini depuis la doc officiel non PB, donc si il y a le bouton cancel par exemple, il retourne cancel, sinon il retourne rien et n'a aucun effect


EDIT : ah et petit note en bonus, il devrai avoir au niveau de purebasic bien plus de constant pour savoir la valeur retourné, il devrai y en avoir 7 si se n'est 8, listé comme suite pour les constant pour windows

0 undefined
1 ok
2 cancel
3 abord
4 retry
5 ignore
6 yes
7 no
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Retour sur #PB_MessageRequester_Ok

Message par boddhi »

Un petit code récupéré ad hoc sur une de mes applis qui créé un MessageRequester custom avec jusqu'à trois boutons pour les principales options de choix manquantes dans PB par rapport à Windows. L'affichage et la gestion de deux CheckBox est également possible.

Il peut être adapté pour d'autres usages (Changement du texte des boutons, rajout de gadgets, etc.)

4 exemples d'utilisations sont fournis.

J'ai fait des tests et j'espère simplement ne pas avoir induit de bogues en découpant le code qui était intégré dans mon source un peu différemment.

Code : Tout sélectionner

EnableExplicit
;{ ════  PLUGINS              ════
UsePNGImageDecoder()
;}
;{ ════  ENUMERATIONS         ════
Runtime Enumeration FenetresFilles 50
  #FEN_BOITEMESSAGE
EndEnumeration
Runtime Enumeration GadgetsFenFilles 100      ; Gadgets fenêtres filles
  #GAD_FBM_IM_IMAGE                           ; Gadgets fenêtre boîte message
  #GAD_FBM_BT_OPTION1
  #GAD_FBM_BT_OPTION2
  #GAD_FBM_BT_BOUTON3
  #GAD_FBM_BT_BOUTON2
  #GAD_FBM_BT_BOUTON1
EndEnumeration
Enumeration MenusRaccourcis                   ; Menus & raccourcis-clavier
  #RACCOURCI_FBM_ENTREE                       ; ENTRÉE
  #RACCOURCI_FBM_OK                           ; O
  #RACCOURCI_FBM_ALTOK                        ; ALT+O
  #RACCOURCI_FBM_OUI                          ; O
  #RACCOURCI_FBM_ALTOUI                       ; ALT+O
  #RACCOURCI_FBM_NON                          ; N
  #RACCOURCI_FBM_ALTNON                       ; ALT+N
  #RACCOURCI_FBM_ANNULER                      ; A
  #RACCOURCI_FBM_ALTANNULER                   ; ALT+A
  #RACCOURCI_FBM_REESSAYER                    ; R
  #RACCOURCI_FBM_ALTREESSAYER                 ; ALT+R
  #RACCOURCI_FBM_IGNORER                      ; I
  #RACCOURCI_FBM_ALTIGNORER                   ; ALT+I
  #RACCOURCI_FBM_CONTINUER                    ; C
  #RACCOURCI_FBM_ALTCONTINUER                 ; ALT+C
  #RACCOURCI_FBM_ESCAPE                       ; ESCAPE
EndEnumeration
Enumeration DialoguesXML
  #XML
  #XML_FENBOITEMSG
EndEnumeration
Enumeration XML
  #XML_BOITEMSG
EndEnumeration
Enumeration Images
  #IMG_RESSOURCES
  #IMG_BM_ERREUR
  #IMG_BM_QUESTION
  #IMG_BM_ATTENTION
  #IMG_BM_INFORMATION
  #IMG_BM_OK
EndEnumeration

;}
;{ ════  STRUCTURES           ════
Structure PARAMBOITEMSG
  Titre.s
  Message.s
  Options.a
  BoutonDefaut.a
  ValeurEchap.a
  Option1.a
  Option1Texte.s
  Option2.a
  Option2Texte.s
  Gadget.l
  FenetreParente.u
  ValeurRetour.a
EndStructure
;}
;{ ════  CONSTANTES           ════
;{ ════  CONSTANTES BOUTONS MESSAGEREQUESTER  ════
#PB_MessageRequester_Ok2Cancel=#MB_OKCANCEL                 ;  1
#PB_MessageRequester_AbortRetryIgnore=#MB_ABORTRETRYIGNORE  ;  2
#PB_MessageRequester_RetryCancel=#MB_RETRYCANCEL            ;  5
#PB_MessageRequester_CancelRetry2Continue=6                 ;  6
;}
;{ ════  CONSTANTES ICONES MESSAGEREQUESTER   ════
#PB_MessageRequester_Question=#MB_ICONQUESTION              ; 32
#PB_MessageRequester_Check=80                               ; 80
;}
;{ ════  CONSTANTES REPONSES MESSAGEREQUESTER ════
#PB_MessageRequester_Ok2=1                                  ;  1
#PB_MessageRequester_Abort=3                                ;  3
#PB_MessageRequester_Retry=4                                ;  4
#PB_MessageRequester_Ignore=5                               ;  5
#PB_MessageRequester_Retry2=10                              ; 10
#PB_MessageRequester_Continue=11                            ; 11
;}
;}
;{ ════  VARIABLES GLOBALES   ════
Global.PARAMBOITEMSG ParamBoiteMsg
;}
;{ ════  MAPS                 ════
Global NewMap TextesGadgets.s() ;{
TextesGadgets("BT-BM"+Str(#PB_MessageRequester_Ok))="&Ok,"+Str(#PB_MessageRequester_Ok)
TextesGadgets("BT-BM"+Str(#PB_MessageRequester_Ok2Cancel))="&Ok,&Annuler,"+Str(#PB_MessageRequester_Ok2)+","+Str(#PB_MessageRequester_Cancel)
TextesGadgets("BT-BM"+Str(#PB_MessageRequester_AbortRetryIgnore))="&Abandonner,&Réessayer,&Ignorer,"+Str(#Pb_MessageRequester_Abort)+","+Str(#PB_MessageRequester_Retry)+","+Str(#PB_MessageRequester_Ignore)
TextesGadgets("BT-BM"+Str(#PB_MessageRequester_YesNoCancel))="&Oui,&Non,&Annuler,"+Str(#PB_MessageRequester_Yes)+","+Str(#PB_MessageRequester_No)+","+Str(#PB_MessageRequester_Cancel)
TextesGadgets("BT-BM"+Str(#PB_MessageRequester_YesNo))="&Oui,&Non,"+Str(#PB_MessageRequester_Yes)+","+Str(#PB_MessageRequester_No)
TextesGadgets("BT-BM"+Str(#PB_MessageRequester_RetryCancel))="&Réessayer,&Annuler,"+Str(#PB_MessageRequester_Retry)+","+Str(#PB_MessageRequester_Cancel)
TextesGadgets("BT-BM"+Str(#PB_MessageRequester_CancelRetry2Continue))="&Annuler,&Réessayer,&Continuer,"+Str(#PB_MessageRequester_Cancel)+","+Str(#PB_MessageRequester_Retry2)+","+Str(#PB_MessageRequester_Continue)
;}
;}
;-══════════════════════════════════════════════════════════════════════════════════════════════════════
; Découpage des images affichées dans la boîte de message
Procedure   Pc_Decoupage_ImagesGadgets()
  Protected.a Compteur
  
  CatchImage(#IMG_RESSOURCES,?Image_BM_Debut,?Image_BM_Fin-?Image_BM_Debut)
  For Compteur=0 To 4
    GrabImage(#IMG_RESSOURCES,#IMG_BM_ERREUR+Compteur,Compteur*48,0,48,48)
  Next
  FreeImage(#IMG_RESSOURCES)
EndProcedure
; Ouverture dialogues XML
Procedure.a Fc_Fenetres_OuvertureDialogueXML(ArgArbreXML.u,ArgDialogueXML.u,ArgChaineXML.s,ArgNomFenetre.s,ArgIdFenetreParente.i=0)
  Protected.i NoDialogue
  If ArgChaineXML
    If ParseXML(ArgArbreXML,ArgChaineXML)
      If XMLStatus(ArgArbreXML)=#PB_XML_Success
        If CreateDialog(ArgDialogueXML)
          If ArgIdFenetreParente<>0
            NoDialogue=OpenXMLDialog(ArgDialogueXML,ArgArbreXML,ArgNomFenetre,0,0,0,0,ArgIdFenetreParente)
          Else
            NoDialogue=OpenXMLDialog(ArgDialogueXML,ArgArbreXML,ArgNomFenetre,0,0,0,0)
          EndIf
          If NoDialogue
            ProcedureReturn #True
          Else
            Debug "  Erreur : "+DialogError(ArgDialogueXML)
          EndIf
          FreeDialog(ArgDialogueXML)
        EndIf
        FreeXML(ArgArbreXML)
      Else
        Debug "  Ligne : "+Str(XMLErrorLine(ArgArbreXML))+" Colonne : "+Str(XMLErrorPosition(ArgArbreXML))
        Debug "  No erreur : "+XMLStatus(ArgArbreXML)+"  "+XMLError(ArgArbreXML)
        ;Debug ComposeXML(ArgArbreXML)
      EndIf
    Else
      Debug "  Ligne : "+Str(XMLErrorLine(ArgArbreXML))+" Colonne : "+Str(XMLErrorPosition(ArgArbreXML))
      Debug "  No erreur : "+XMLStatus(ArgArbreXML)+"  "+XMLError(ArgArbreXML)
      ;Debug ComposeXML(ArgArbreXML)
    EndIf
  EndIf
EndProcedure
; Gestion fermeture boîte de message
Procedure   Pc_FenBoiteMessage_Traitement(ArgAction.a)
  ClearStructure(@ParamBoiteMsg,PARAMBOITEMSG)
  With ParamBoiteMsg
    If IsGadget(#GAD_FBM_BT_OPTION1):\Option1=GetGadgetState(#GAD_FBM_BT_OPTION1):EndIf
    If IsGadget(#GAD_FBM_BT_OPTION2):\Option2=GetGadgetState(#GAD_FBM_BT_OPTION2):EndIf
    \ValeurRetour=ArgAction
  EndWith
  ProcedureReturn #True
EndProcedure
; Gestion raccourcis boîte de message
Procedure.b Fc_FenBoiteMessage_TraitementRaccourci(ArgAction.u)
  Protected.u ValeurGadget
  Protected.a ValeurRetour=#True

  If ArgAction=#RACCOURCI_FBM_ENTREE
    If GetActiveGadget()<0:ProcedureReturn:EndIf
    ValeurGadget=GetGadgetData(GetActiveGadget())
    If ValeurGadget=0:ProcedureReturn:EndIf
  Else
    Select ArgAction
      Case #RACCOURCI_FBM_OK,#RACCOURCI_FBM_ALTOK:ValeurGadget=#PB_MessageRequester_Ok
      Case #RACCOURCI_FBM_OUI,#RACCOURCI_FBM_ALTOUI:ValeurGadget=#PB_MessageRequester_Yes
      Case #RACCOURCI_FBM_NON,#RACCOURCI_FBM_ALTNON:ValeurGadget=#PB_MessageRequester_No
      Case #RACCOURCI_FBM_ANNULER,#RACCOURCI_FBM_ALTANNULER:ValeurGadget=#PB_MessageRequester_Cancel
      Case #RACCOURCI_FBM_REESSAYER,#RACCOURCI_FBM_ALTREESSAYER:ValeurGadget=#PB_MessageRequester_Retry
      Case #RACCOURCI_FBM_IGNORER,#RACCOURCI_FBM_ALTIGNORER:ValeurGadget=#PB_MessageRequester_Ignore
      Case #RACCOURCI_FBM_CONTINUER,#RACCOURCI_FBM_ALTCONTINUER:ValeurGadget=#PB_MessageRequester_Continue
    EndSelect
  EndIf
  Pc_FenBoiteMessage_Traitement(ValeurGadget)
  ProcedureReturn ValeurRetour
EndProcedure
; Gestion évènements boîte de message
Procedure   Pc_FenBoiteMessage_GestionEvenements()
  Protected.l Evenmt,TypeEvenmt,NoFenetre,NoGadget,EvenmtMenu

  Repeat
    Evenmt=WaitWindowEvent()
    NoFenetre=EventWindow()
    TypeEvenmt=EventType()
    Select NoFenetre
      Case #FEN_BOITEMESSAGE ;{
        Select Evenmt
          Case #PB_Event_CloseWindow ;{
            ParamBoiteMsg\ValeurRetour=ParamBoiteMsg\ValeurEchap
            Break ;}
          Case #PB_Event_Menu ;{
            EvenmtMenu=EventMenu()
            Select EvenmtMenu
              Case #RACCOURCI_FBM_ESCAPE,#RACCOURCI_FBM_ANNULER,#RACCOURCI_FBM_ALTANNULER ;{
                ParamBoiteMsg\ValeurRetour=ParamBoiteMsg\ValeurEchap
                Break ;}
              Case #RACCOURCI_FBM_ENTREE,#RACCOURCI_FBM_OK,#RACCOURCI_FBM_ALTOK,#RACCOURCI_FBM_OUI,#RACCOURCI_FBM_ALTOUI,#RACCOURCI_FBM_NON,#RACCOURCI_FBM_ALTNON,#RACCOURCI_FBM_ANNULER,#RACCOURCI_FBM_ALTANNULER,#RACCOURCI_FBM_REESSAYER,#RACCOURCI_FBM_ALTREESSAYER,#RACCOURCI_FBM_IGNORER,#RACCOURCI_FBM_ALTIGNORER,#RACCOURCI_FBM_CONTINUER,#RACCOURCI_FBM_ALTCONTINUER ;{
                If Fc_FenBoiteMessage_TraitementRaccourci(EvenmtMenu):Break:EndIf ;}
            EndSelect ;}
          Case #PB_Event_Gadget ;{
            NoGadget=EventGadget()
            Select NoGadget
              Case #GAD_FBM_BT_BOUTON1,#GAD_FBM_BT_BOUTON2,#GAD_FBM_BT_BOUTON3 ;{
                Pc_FenBoiteMessage_Traitement(GetGadgetData(NoGadget))
                Break;}
            EndSelect ;}
        EndSelect ;}
    EndSelect
  ForEver

  If NoFenetre=#FEN_BOITEMESSAGE
    If IsXML(#XML_BOITEMSG)
      If IsDialog(#XML_FENBOITEMSG)
        RemoveKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_All)
        FreeDialog(#XML_FENBOITEMSG)
      EndIf
      FreeXML(#XML_BOITEMSG)
    EndIf
  EndIf
EndProcedure
; Définition UI fenêtre Boîte de dialogue Message
Procedure.a Fc_FenBoiteMessage_Affichage()
  Protected.a Boutons,NbBoutons,NbLignes,Compteur
  Protected.b Image
  Protected.s ChaineXML

  With ParamBoiteMsg
    Image=(\Options>>3<<3)/16-1
    Debug image
    NbLignes=CountString(\Message,Chr(10))+1
    Boutons=\Options-\Options>>3<<3
    Select Boutons
      Case #PB_MessageRequester_Ok2Cancel,#PB_MessageRequester_YesNo,#PB_MessageRequester_RetryCancel
        NbBoutons=2
      Case #PB_MessageRequester_AbortRetryIgnore,#PB_MessageRequester_YesNoCancel,#PB_MessageRequester_CancelRetry2Continue
        NbBoutons=3
      Default
        NbBoutons=1
    EndSelect
    ChaineXML="<?xml version='1.0' encoding='UTF-8'?>"+Chr(10)+ ;{
              "<dialogs>"+Chr(10)+
              "  <window id='#FEN_BOITEMESSAGE' name='FEN_BOITEMESSAGE' text='"+EscapeString(\Titre,#PB_String_EscapeXML)+"' margin='top:20,left:24,right:24,bottom:16' height='160' width='600' minwidth='auto' minheight='auto' maxwidth='auto' maxheight='auto' flags='#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered'>"+Chr(10)+
              "    <vbox spacing='0' expand='item:1'>"+Chr(10)+
              "      <vbox>"+Chr(10)+
              "        <hbox spacing='4' expand='item:3'>"+Chr(10)
    If Image>=0
      ChaineXML+"          <vbox spacing='0' expand='no' align='top'>"+Chr(10)
      If NbLignes>2
        ChaineXML+"            <singlebox expand='no' align='top,left'/>"+Chr(10)
      EndIf
      ChaineXML+"            <image id='#GAD_FBM_IM_IMAGE' name='GAD_FBM_IM_IMAGE' width='50' height='50'/>"+Chr(10)+
              "          </vbox>"+Chr(10)+
              "          <singlebox margin='top:8,right:24' expand='no'/>"+Chr(10)
    EndIf
    ChaineXML+"         <vbox align='' spacing='0' expand='no'>"+Chr(10)
    For Compteur=1 To NbLignes
      ChaineXML+"           <text id='#Pb_Any' name='GAD_FBM_LIB_MESSAGE"+Str(Compteur)+"' text='"+EscapeString(StringField(\Message,Compteur,Chr(10)),#PB_String_EscapeXML)+"'/>"+Chr(10)
    Next
    ChaineXML+"         </vbox>"+Chr(10)+
              "        </hbox>"+Chr(10)+
              "      </vbox>"+Chr(10)+
              "      <singlebox height='0' expand='no' align='left'/>"+Chr(10)
    If \Option1Texte+\Option2Texte
      ChaineXML+"      <vbox expand='no'>"+Chr(10)+
              "        <hbox spacing='8' expand='no'>"+Chr(10)+
              "          <singlebox height='0' expand='no' align='left'/>"+Chr(10)+
              "          <vbox align='' expand='no'>"+Chr(10)
      If \Option1Texte:ChaineXML+"            <checkbox  id='#GAD_FBM_BT_OPTION1' name='GAD_FBM_BT_OPTION1' text='"+EscapeString(\Option1Texte,#PB_String_EscapeXML)+"'/>"+Chr(10):EndIf
      If \Option2Texte:ChaineXML+"            <checkbox  id='#GAD_FBM_BT_OPTION2' name='GAD_FBM_BT_OPTION2' text='"+EscapeString(\Option2Texte,#PB_String_EscapeXML)+"'/>"+Chr(10):EndIf
      ChaineXML+"          </vbox>"+Chr(10)+
              "        </hbox>"+Chr(10)+
              "        <singlebox height='32' expand='no'/>"+Chr(10)+
              "      </vbox>"+Chr(10)
    EndIf
    ChaineXML+"      <vbox align='' expand='no'>"+Chr(10)+
              "        <hbox align='"
    If NbBoutons=1
      ChaineXML+"center"
    Else
      ChaineXML+"right"
    EndIf
    ChaineXML+"' expand='no'>"+Chr(10)
    For Compteur=1 To NbBoutons
      ChaineXML+"          <button id='#GAD_FBM_BT_BOUTON"+Str(Compteur)+"' name='GAD_FBM_BT_BOUTON"+Str(Compteur)+"' text='"+EscapeString(StringField(TextesGadgets("BT-BM"+Str(Boutons)),Compteur,","),#PB_String_EscapeXML)+"' width='120'/>"+Chr(10)
    Next
    ChaineXML+"        </hbox>"+Chr(10)+
              "      </vbox>"+Chr(10)+
              "    </vbox>"+Chr(10)+
              "  </window>"+Chr(10)+
              "</dialogs>" ;}
  EndWith
  If Fc_Fenetres_OuvertureDialogueXML(#XML_BOITEMSG,#XML_FENBOITEMSG,ChaineXML,"FEN_BOITEMESSAGE",ParamBoiteMsg\FenetreParente)
    If IsGadget(#GAD_FBM_IM_IMAGE):SetGadgetState(#GAD_FBM_IM_IMAGE,ImageID(#IMG_BM_ERREUR+Image)):EndIf
    If IsGadget(#GAD_FBM_BT_OPTION1):SetGadgetState(#GAD_FBM_BT_OPTION1,ParamBoiteMsg\Option1):EndIf
    If IsGadget(#GAD_FBM_BT_OPTION2):SetGadgetState(#GAD_FBM_BT_OPTION2,ParamBoiteMsg\Option2):EndIf
    For Compteur=NbBoutons To 1 Step-1
      SetGadgetData(DialogGadget(#XML_FENBOITEMSG,"GAD_FBM_BT_BOUTON"+Str(Compteur)),Val(StringField(TextesGadgets("BT-BM"+Str(Boutons)),NbBoutons+Compteur,",")))
    Next
    SetActiveGadget(DialogGadget(#XML_FENBOITEMSG,"GAD_FBM_BT_BOUTON"+Str(ParamBoiteMsg\BoutonDefaut)))
    ;{ **** RACCOURCIS ****
    AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Return,#RACCOURCI_FBM_ENTREE)
    If Boutons=#PB_MessageRequester_Ok Or Boutons=#PB_MessageRequester_Ok2Cancel
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_O,#RACCOURCI_FBM_OK)
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Alt|#PB_Shortcut_O,#RACCOURCI_FBM_ALTOK)
    EndIf
    If Boutons=#PB_MessageRequester_YesNo Or Boutons=#PB_MessageRequester_YesNoCancel
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_O,#RACCOURCI_FBM_OUI)
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Alt|#PB_Shortcut_O,#RACCOURCI_FBM_ALTOUI)
    EndIf
    If Boutons=#PB_MessageRequester_YesNo Or Boutons=#PB_MessageRequester_YesNoCancel
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_N,#RACCOURCI_FBM_NON)
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Alt|#PB_Shortcut_N,#RACCOURCI_FBM_ALTNON)
    EndIf
    If Boutons=#PB_MessageRequester_Ok2Cancel Or Boutons=#PB_MessageRequester_YesNoCancel Or Boutons=#PB_MessageRequester_RetryCancel Or Boutons=#PB_MessageRequester_CancelRetry2Continue Or Boutons=#PB_MessageRequester_AbortRetryIgnore
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_A,#RACCOURCI_FBM_ANNULER)
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Alt|#PB_Shortcut_A,#RACCOURCI_FBM_ALTANNULER)
    EndIf
    If Boutons=#PB_MessageRequester_RetryCancel Or Boutons=#PB_MessageRequester_CancelRetry2Continue
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_R,#RACCOURCI_FBM_REESSAYER)
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Alt|#PB_Shortcut_R,#RACCOURCI_FBM_ALTREESSAYER)
    EndIf
    If Boutons=#PB_MessageRequester_CancelRetry2Continue
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_C,#RACCOURCI_FBM_CONTINUER)
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Alt|#PB_Shortcut_C,#RACCOURCI_FBM_ALTCONTINUER)
    EndIf
    If Boutons=#PB_MessageRequester_AbortRetryIgnore
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_I,#RACCOURCI_FBM_IGNORER)
      AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Alt|#PB_Shortcut_I,#RACCOURCI_FBM_ALTIGNORER)
    EndIf
    AddKeyboardShortcut(DialogWindow(#XML_FENBOITEMSG),#PB_Shortcut_Escape,#RACCOURCI_FBM_ESCAPE) ;}
    Pc_FenBoiteMessage_GestionEvenements()
    ;ProcedureReturn #True  
  EndIf
EndProcedure
;-
; Définition paramètres et appel fenêtre Boîte de dialogue Message
Procedure.a Fc_Affichage_BoiteMessage(ArgTitre.s,ArgMessage.s,ArgOptions.a=#PB_MessageRequester_Ok,ArgBoutonDefaut.a=1,ArgValeurEchap.a=0,ArgOption1Texte.s="",ArgOption1.a=0,ArgOption2Texte.s="",ArgOption2.a=0)
  ClearStructure(@ParamBoiteMsg,PARAMBOITEMSG)
  With ParamBoiteMsg
    \Titre=ArgTitre
    \Message=ArgMessage
    \Options=ArgOptions
    \BoutonDefaut=ArgBoutonDefaut
    \ValeurEchap=ArgValeurEchap
    \Option1Texte=ArgOption1Texte
    \Option1=ArgOption1
    \Option2Texte=ArgOption2Texte
    \Option2=ArgOption2
    \ValeurRetour=#PB_MessageRequester_Cancel
    Fc_FenBoiteMessage_Affichage()
    ProcedureReturn \ValeurRetour
  EndWith
EndProcedure
;-══════════════════════════════════════════════════════════════════════════════════════════════════════
Pc_Decoupage_ImagesGadgets()

Debug Fc_Affichage_BoiteMessage("Exemple 1","Ceci est une boite simple sans image !")
Debug Fc_Affichage_BoiteMessage("Exemple 2","Ceci est une boite simple avec image !",#PB_MessageRequester_Error)
Debug Fc_Affichage_BoiteMessage("Exemple 3","Vous-vous vraiment quitter ?",#PB_MessageRequester_YesNo|#PB_MessageRequester_Question)
Debug Fc_Affichage_BoiteMessage("Exemple 4","Continuer ?",#PB_MessageRequester_YesNoCancel|#PB_MessageRequester_Warning,2,#PB_MessageRequester_Cancel,"Mémoriser le choix",#True)

DataSection
Image_BM_Debut: ;{
  Data.q $0A1A0A0D474E5089,$524448490D000000,$30000000F0000000,$F7BD2F0000000608,$5845742E00000026,$6F69746165724374,$7300656D6954206E,$C3642034202E6D61
  Data.q $31323032202E63A9,$323A36313A323220,$E0303031302B2033,$7407000000087D32,$17040CE507454D49,$00003C82BCD41C01,$0000735948700900,$7801232E0000232E
  Data.q $6704000000763FA5,$0B8FB10000414D41,$49381000000561FC,$7B9DEDDA78544144,$DDEEEFC71DC5558C,$242EEC29B1F1165D,$AD48D4B12B4D256D,$ADAAD1A3FD6D8088
  Data.q $D05910595489F05D,$6207D7468B515656,$5AE0ACBCB0AF4695,$C46CAB0456BE0B51,$34D496C98B5A282D,$A349A1B62B724369,$EF9D30D2686A6CD0,$798F3DCE73B3999C
  Data.q $F601BE49DE8FBB9D,$FEE7DFDBF0EE73DE,$A55CB9399BF37E66,$5A55A55A55A55A55,$1B6369DCF6D30DA5,$4554BD540AA85AA8,$EFE056BF9152122A,$F7C2768B7EEC186D
  Data.q $7AA81550B5503596,$AD7F22A424548AA9,$B6D51FFA643BDFC0,$0FBAA76AA44DC92C,$6EE1B524FEEC1F7F,$A16AA06B9B5C2FFF,$4848A91552F5502A,$FBF077BF815AFE45
  Data.q $6FA006EAA56C214F,$7F24694FF6471E4E,$1C89A73A1C89BB3E,$F0D7867E101CD19D,$075B6B8D4397BC1E,$65BAA95A09D4FFAB,$ECD46483C1FFA947,$B351A02BA6BDA902
  Data.q $AE153B08ADAFA31E,$14EC0A35C7FEB41D,$F760CB52445423AA,$AD8429FDBB86DC2B,$C8E71763A832DD54,$F0A0EEF1A4725BB8,$BF96D71A8216BC33,$238FA72BE2DC1CFF
  Data.q $5CDE9CFF246CDF7D,$3DC5AE0D709A6C02,$0E3B847FDB2E7478,$EEA49DE17D1F96FB,$6B9255E0BF24B58A,$B927BF586969EFDF,$2EEA4DDF9F94079B,$F287472E5DAF4B5F
  Data.q $6808B5851A6222FF,$CFC601C4C8986C0F,$CFEDFC373F5BFF06,$E80A7CEC765165C1,$B0991CF3FCD239ED,$CD4072FD08C9EB89,$D14AD77997A0510F,$F550A6C853FEFB39
  Data.q $6D0DA4D5BE8FBA01,$233E1F720E2F709C,$3EAA14F25FD3FEAB,$17D69A90771738E6,$CE0A38E0387CC3A9,$BAE6A407D0A7EBE3,$7091C21D45F4646D,$ADA428D2AFFACCEF
  Data.q $DDFC7206BEE7B600,$F880BC62FDF699F3,$853FB770DBECC1BE,$051177031F550A6C,$9EBEBC22AD04A571,$1F42D7BD00FCD4F0,$DAB053FE9B3BDC64,$61B815D810C5EC31
  Data.q $F3819EDD687CDEE1,$934FB9DAFC6F8BB4,$DAAC8F3B5A1F2DDC,$ABFEF38223929FAB,$C774FE7431584434,$BFF4977CEFC01ED9,$F0A2B0647C004D39,$DC445DAB053FB770
  Data.q $95E1ED9B7C287BA6,$3FEDBB22205778D5,$E723634985EBAA05,$33E167C0CF85AEB6,$DD555F98974F3A1D,$03E4FD30F3B9C7B4,$D6734F3CB6F6D552,$0AE22C5613C6D57F
  Data.q $710145FE3FF68578,$40A7F6EE1AFDDCA1,$F03175F8EDF98975,$F7BD03699787326E,$D201FF4DD93CC0EA,$0A9AE79A338FAF8E,$1E70B10174CF859F,$79DB4F7E6EAAB3CC
  Data.q $4DE92D5532770BF2,$BE375523BF4F1E74,$72C43B2CEB2EEA43,$E85E006E75DFEDF4,$011AD2DB6499EED8,$AAFED6CBF572C4F1,$B9E62F017F6566F0,$57801C6EF097400C
  Data.q $F104756EE3105F08,$9879D96212EBC060,$120965600F3828E3,$09A67AD970BAAF3E,$F9A1B21A21B3772D,$9E4DD30F3A4677EB,$AE244BB285310DCA,$B427EF581D0AF0C2
  Data.q $5E03FB1327D1CBBA,$B0140574E76A0EFC,$77801FEDAEBC0C79,$210DAE46F361E3B3,$18A1E6310D64F7AD,$387CC432BC060ECA,$E7552E7310273DAD,$11E8FFD49D7C2FC9
  Data.q $7BCBED64A3DB6E72,$A3B70919F1FF5FC9,$D393F6BB2D939FFD,$BBE375520E64AEE7,$89CE9944E113CE91,$9EDEC7B08B2F9AF9,$02F56DCAF4300B19,$E5FDAE93ECB3F3E2
  Data.q $53CE76ADC3600BC8,$66F398BFB0BAF0CA,$D620237868C6EF0A,$ABCE659736CF3FEB,$1CECE52D89E62732,$1B61C52E737A76CF,$0695123FBEDAFFDE,$7D2FEA4ADAAD1790
  Data.q $497BC5AAA079D624,$28ECB32C9CFE25FD,$C22627EBBE8B2A22,$6F700124D5FC1D0B,$566C3CBFB131FD56,$6CF3FB1B5E053802,$E0559B0EC68F9B33,$42F0F18DDE05227D
  Data.q $AB10F9B43ED0D7E3,$FFCDB29273960FFB,$B2B7D79FF234E0BA,$4ECF17B955016D3F,$3A9DB21F503869F7,$78510DC392FC1309,$1EFF0703920E1FEF,$39467EC8D6863209
  Data.q $D86EAA99F7C6EE4F,$FDCAA3B2C05F464D,$35911200A48869D7,$F3B4C3BF7BE3DE0D,$BFB130EE2D3313AE,$1B5E0158054DD73C,$84D8E119073963FB,$F0A055C75DE03955
  Data.q $828F3A949896F3CE,$BFDFF70126C9AC0A,$D6206D3F8A8CC47C,$1E70556E275F17B9,$AF00C8552F680914,$8BCE63261B17667C,$D08E1DFE26CC8B28,$B5423CE711CE1C00
  Data.q $BAFFB52051166D57,$C0AAB2223014910D,$C3B8BF4CE97E1D0B,$06B00CAFED4C7F75,$4BEA1A45E7F626BC,$57AB7804E699AA45,$E5E14BEB07DA91D7,$41FF74E147EE5C6A
  Data.q $DCA5A20691525455,$4EF70D15E196214C,$88A81C14DF40F62A,$40182FC1E75D0122,$15D86FAB680C0E62,$21856C48DFE1B218,$0F3AC477F3F3FBC6,$3029CC5245F792D3
  Data.q $B4DEF256090DA281,$73DC4324C39DF6A0,$00F429DD3880836F,$9DFAEAD2A07FB236,$E08D3B05F959580C,$51A450A2AA3FB5D5,$EBC4F783C1BBC896,$0E20C19E9793264E
  Data.q $9FFB923D8BC42BC3,$F4D885D3C0E37D16,$549BFB7C5851691E,$3EE66B9A643AE0F8,$80C1D82FCCED9B1B,$496CD735C2E61B95,$51E756EE66A81E74,$12CCF97E1E4C9458
  Data.q $74FE018501CBE980,$AFEC6C3B8BCE59FB,$45FDAAAF0BA454B3,$0637034AB0AE35F4,$FBFE8E473CF767DE,$4576A479E7719928,$9B18510A1D4DC434,$D7B680159C9F500B
  Data.q $6375038263E86FA2,$DBAEF1CC3CE265EE,$DB8632B9E13CEA96,$C4F7A78F3925A218,$5469DF0E12C9CC5C,$6AADF68601557D12,$DE197F6369625A76,$4D3CBE13DABE0440
  Data.q $EE6017363FB555E1,$C41268E4FD786E5B,$96F9FF7470B9FD6B,$A36D10132365E540,$CE110DD233C6FA37,$DD4F38185B2FE0D3,$BE0187F37D284F95,$079C8700D1ABFD7D
  Data.q $88AB014446BD9BAA,$C0199A7378DA2817,$1455337FFA4DBE7B,$BFB5B0EE2DB11C77,$C9181CC96E01791C,$04B7CFECD3780B42,$990CAAF03A46CB7A,$09C7751E0195E015
  Data.q $FFA952B2D242F025,$63CED9F9B62E8F60,$56F886F4317480E3,$AD511EC2070896C4,$97BCFCB6C3BA2D5D,$FE7E77F86E59E659,$497DAFE503CEA96B,$19325037F6559038
  Data.q $78530089AC02B091,$AB6144553BAC0E85,$02D8058FF6971382,$BB5ABA3DF3FB34DE,$5BFADE195E455C8A,$03EFDD350BC244C7,$51B26F68D83FEA5C,$4A4B4AF0574C0541
  Data.q $E74CEF46C2070885,$7C390ACC3E97F55C,$8DEB021CCE7FF7A3,$903B89EC5B93CE69,$C88238DA2F323D71,$12C02268017D1519,$B1293BA6B7B1D0BC,$06B004AAC07F6974
  Data.q $8AEDED1BE7F669BC,$03885785B5C01234,$EE1B032D383FEA5C,$1784BA80C283976D,$45EA0708D7D11F42,$AAE7AAA2F05640E1,$4EECDD6FF992AE8E,$117181617881E765
  Data.q $23C1B45519325F85,$F4FE857821C02C6C,$5FDA5C3B8BAC57E4,$D38FEC9378036009,$9B55BC0286E15832,$0BC3B2DAE9EE48EB,$689613DFD28EC2F1,$AF097540E2AF2A6C
  Data.q $4E22A0708C559954,$71119F645E0AC872,$B3F7D984C7714345,$C3F40E61E7550142,$5E1B49F893978D87,$BABCEBB199EEE4C9,$A589759E73DF1F00,$926F086C02A7FB4B
  Data.q $E05433538344B1FD,$8C6DBFA91276D31D,$7C1E6CBC25D990D2,$AA2E43921272CC53,$7D085784BAC0C2AA,$91564AF47620708D,$7335D0077F178657,$523EDB5C9E72D19E
  Data.q $3804338C3626E57B,$F803D65D942368BA,$614559A75D83A63C,$24DE02D8044FF697,$AEF06ADDD604B3FB,$232E201E07BD637B,$8C3799FC6CAD28BC,$ABC15D8824E004CE
  Data.q $301BCEB1781BB00E,$8F386B3A1FD7873C,$F578219325B1C00D,$3D4F5BFE3DE0F600,$FED2E1DC5C629EF7,$3FDA99D52E2B0091,$803E88057808E012,$B0047FFBC319C432
  Data.q $319C6708CE28BC3D,$C03EE012D781B66C,$0755E11393D7E875,$8C3385F8742F0838,$8760195FDA5D2C4B,$DD1AAC9438012FF6,$4FA04971BC59227E,$7845620078F91C9F
  Data.q $E01CCDE00C6B890F,$4583E153768431A1,$52A2F39B214B797F,$E014C79D8D5BC7EB,$2E00D57818C992C8,$C546B1C1F7A85785,$FB63B004AFED2E1D,$8E775736C88E0007
  Data.q $B10A96D6BFB64062,$00D3780D4E02BC12,$81398F59AC49FE1E,$9CE9B38CE1BDEB17,$64C9495624932C37,$F50BC3C700E9BC02,$FB4BA58951B67EBF,$5624FDFD819C02A7
  Data.q $C4325D67755152C2,$A535A69BC1E8C6CB,$15A465808D624A4A,$92225840E16B6A4E,$B7279D6DE18A2FA3,$232D680FC5D03A88,$E094E395DE8DA289,$69EBC32700F1A405
  Data.q $7614769348F7D926,$BFBFB2338058FF6D,$4386BD51A852948C,$749ED798B1083DBC,$D9780B5E73C929CD,$46469197E28B5999,$5C903878C2838721,$6A3CB5463A1381B0
  Data.q $C94947214E903CED,$7BC0A700A9BC02A4,$6C8D33D6392677BC,$23FDB5C3B8AF59BB,$C287217EFED0CE01,$27E8EDFF10717401,$250BC1999DFEC764,$DDF9CA528C8C7215
  Data.q $2FC8D82CE05ABBD6,$73F279D2C161BF9A,$809209C4A52AD45F,$B0089BC2AA4A2708,$AB597ED60742BC02,$6F760193FDB5D2C4,$C37864A1F294BF7F,$EDE1958821A5DCF3
  Data.q $591491DA5780D2E4,$D6BE5C333632394A,$93CE66C0325A4B7A,$795AB59BA92EF45B,$9433DDAB9CE04333,$14446F08380335E1,$01E3FDB5C5CE3D4E,$989E033362FEC6CE
  Data.q $76F04AC40AAF0690,$99BB1E8E610BC3AA,$B72E13B6023C4381,$B5C3F0E79A8A4FDE,$3B67481E7732073C,$EAF05AA9E4C940E1,$AFAEC1D0AF0A5C03,$C03C7FB2B8771569
  Data.q $AF00A84EDFDFDAD9,$55A4D2F1FAA33D38,$7814E00633AAC262,$7807213B6939F0D9,$DCB5EBEF0FE86C64,$79CCD50FCDFB6E0C,$EC71B45CBF43795E,$0F1C01EAF05A19AD
  Data.q $4B94A30FB419A7AF,$EC8CE0153FD95D2C,$765E0D407FE86FEF,$E4C5F6FB71048DFC,$C3AA76F0EA8ACFE3,$C4467563A52E258B,$F11BC05B18C83A91,$D879D0D0ED6F4B68
  Data.q $0A3E5E51EFF7FFB7,$928E002BC26A4C94,$55A1BE17E1D0BC2E,$6C670089FEC2E1DC,$05783542CEA4767F,$1C68E31015CB58C0,$C6A9756824D77825,$6478070EA470AF5E
  Data.q $DE459B8036C76A1C,$53CE86C0192A13A8,$AF026BE8A326C57B,$1D3D42BC0A9152EA,$F0091FEC2E9625EA,$F185117F62CB9B95,$55D007C37834A2AC,$6DE18EF8CDBCEA17
  Data.q $08F10E3B50E343BC,$C98E567B39765638,$5AA9E745600959B0,$F1B45FA9AC75A3D0,$3D604726F0C699D2,$81B6F0A34DBF8F78,$257F6B61DC52AC28,$563BD8873FB23380
  Data.q $9D551591BC3AB576,$96563CD2AF36F0F6,$9EC15F760E423C03,$D558054DE73BA395,$83A501C28AF61679,$22AC1B7BC992FDC5,$9D215E1F581CFC6F,$919C02A7FB5B0EE2
  Data.q $D9D9DD83FD8025FD,$C2FD47F8EF0483D0,$E323C439DD83BD0D,$12AC276A75972AD1,$6A45B2D09E745601,$D5967EDD068F03FF,$42F0C6A9E01A39B0,$7FB1B4B14EF43BFD
  Data.q $F662023FD919C022,$02BC0995439C1568,$8F6646CB837838D2,$489D93370F3119E6,$1E7332C49B1CDB21,$B66AAD5CE7FBFEA5,$A7AF0C9C03EAF39E,$511EB41363FF64E9
  Data.q $AC0676EB7CFF6A6A,$063FDA99EDBCFCAC,$AD5DE14EC430AEE2,$8F2661427BF0EF04,$32ABB3E4C8C3C517,$07780336C3122A58,$A5613AC738DF264A,$535DB1D0BC1AB007
  Data.q $2155FDBC872C4A4D,$647961904BADF066,$CC46D15E0CECD878,$4E047031592FBE03,$29739E47A0B3CE16,$3CDB30C368B63FF7,$4CBC0D901A9AB890,$7ED25F9D0393A7BB
  Data.q $1FF35A7FB750E944,$0ACA2ACF6396DDF0,$C7DBAF39A4AC245E,$86C992648A1E62D2,$579CD1B36CF15507,$5749190C9CD889C1,$D4ED9E0AA5E1F185,$8DA2E5264A05739A
  Data.q $53A42BC0A9152F32,$9CC4DAAFEDD431DC,$BC35C8AB3C611918,$AD379CE59E68A96C,$8A9364D61F74ECF1,$3EDE75F17B85743D,$3ED1D9E36EB36C9D,$B86DC7B0751748E6
  Data.q $5BDF840245E2B0A8,$43BE881BEE62FFAB,$3A355F53E0E85E18,$ECF1A75FDA287A4B,$05CDBD0BC68B1F74,$1069178AC2A2F0B6,$541437EFFACCEF7E,$64D93EA1D00A2AA0
  Data.q $A8B7072D706B8C7E,$A28362F1AAE1A452,$EB7E871FB1380888,$2FC6FA4B3CC16AEC,$F9E87C0048F33E9A,$4996D0E85E02C3C9,$C6937F6AA1E8C3DA,$8C7E6322228A3D8B
  Data.q $EE79B1157675D743,$6CB869172A2DC440,$0FCDB17B0C6EE41C,$E32B9A8FB86C6043,$09025BE1EF0D7867,$523B8DE71DFCB6BF,$36A70D3CC6699CB7,$BF3499F85915E8E0
  Data.q $8579511C75B6EA12,$A23AAB2B950E3421,$FFD59644A4AA7274,$BB9071A6DFD8287D,$066A7193CC448439,$5BF3499F8591BE8E,$56F8DC370141EEA1,$3C1969C7B46C16C4
  Data.q $7F02B5FC8A9092A2,$2B7C68B9E22793AF,$43A22BDE94DF0B5C,$59D7BF815AFE4548,$BA7E32661E1445FF,$115BE36DBFB350C4,$0E747EBD00A1F85B,$990EF7F02B5FC8AA
  Data.q $55A55A55A55A57FE,$7B1FFB6E9A55A55A,$00E9F0480D7ED469,$AE444E4549000000
  Data.b $42,$60,$82
Image_BM_Fin: ;}
EndDataSection ;1
 
N'hésitez pas à plier le code dans un premier temps pour voir plus facilement comment il est structuré (Les procédures sont appelées du bas vers le haut, donc pas besoin de Declare) :wink:
Répondre