Page 1 sur 3

Inclure des images jpg dans l'exe

Publié : mar. 14/mars/2023 23:43
par Stan_fr
Bonsoir,

J'écris un programme qui pourra afficher interface en plusieurs langues et je voudrais que l'on puisse changer de langue en cliquant sur le drapeau correspondant comme on voit dans certains sites, je sais faire à partir d'images chargées dans des ImageGadget.

Mais pour permettre à l'utilisateur de déplacer mon programme sans se soucier de ces fichiers images, j'aimerais avoir des images intégrées directement dans mon exe, plutôt que de charger des images.

Parce qu'à la limite créer un drapeau français ou Allemand avec du 2Ddrawing c'est jouable, mais le drapeau anglais :cry:

Merci d'avance de vos pistes.

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 1:27
par falsam
Bonjour.
Normalement en stockant tes images dans une data section, les images seront incluses dans l'exécutable de ton application.

Code : Tout sélectionner

EnableExplicit

Enumeration window
  #mf
EndEnumeration

Enumeration gadget
  #image1
  #image2
EndEnumeration

Global image1, image2

;Sommaire
Declare Start()
Declare Exit()

Start()

Procedure Start()
  ; Image
  UsePNGImageDecoder()
  image1 = CatchImage(#PB_Any, ?imagetest1)
  image2 = CatchImage(#PB_Any, ?imagetest2)
  
  ResizeImage(image1, 40, 40)
  ResizeImage(image2, 40, 40)
  
  OpenWindow(#mf, 0, 0, 800, 600, "La Data Section", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ImageGadget(#image1, 20, 20, 40, 40, ImageID(image1))
  ImageGadget(#image2, 65, 20, 40, 40, ImageID(image2))
  
  ; Déclencheur
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  ; Loop
  Repeat : WaitWindowEvent() : ForEver   
EndProcedure

Procedure Exit()
  End
EndProcedure

DataSection
  imagetest1:
  IncludeBinary #PB_Compiler_Home + "Examples\3D\Data\Textures\caisse.png"
  
  imagetest2:
  IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\File.bmp"
EndDataSection
La DataSection permet de stocker aussi du son si tu as besoin.
https://www.purebasic.com/french/docume ... sound.html

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 16:45
par Stan_fr
Bonjour,

Merci, mais ça ne marche pas chez moi, ou je ne comprends pas ce qui doit se passer ?
J'ai juste changé l'imageEncoder
UseJPEGImageEncoder()
Et les fichiers images.

Et j'obtiens une fenêtre vide avec fond gris ?

J'ai du faire une erreur mais où ?

Code : Tout sélectionner

EnableExplicit

Enumeration window
  #mf
EndEnumeration

Enumeration gadget
  #image1
  #image2
EndEnumeration

Global image1, image2

;Sommaire
Declare Start()
Declare Exit()

Start()

Procedure Start()
  ; Image
  UseJPEGImageEncoder()
  image1 = CatchImage(#PB_Any, ?imagetest1)
  image2 = CatchImage(#PB_Any, ?imagetest2)
  
  ResizeImage(image1, 40, 40)
  ResizeImage(image2, 40, 40)
  
  OpenWindow(#mf, 0, 0, 800, 600, "La Data Section", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ImageGadget(#image1, 20, 20, 40, 40, ImageID(image1))
  ImageGadget(#image2, 65, 20, 40, 40, ImageID(image2))
  
  ; Déclencheur
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  ; Loop
  Repeat : WaitWindowEvent() : ForEver   
EndProcedure

Procedure Exit()
  End
EndProcedure

DataSection
  imagetest1:
  IncludeBinary "E:\DG.jpg"
  
  imagetest2:
  IncludeBinary "E:\DF.jpg"
EndDataSection
Dommage car j'ai aussi des sons à mettre !

Mais si tu vois pourquoi...

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 16:55
par falsam
Je vois bien pourquoi.

Remplace UseJPEGImageEncoder() par son contraire UseJPEGImageDecoder()

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 18:44
par Stan_fr
MERCI !

Ça marche parfaitement...

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 19:24
par Stan_fr
Ça marche parfaitement, mais je ne vois pas comment intégrer le code que j'ai déjà écrit ?

Code : Tout sélectionner

; CRÉATION FENÊTRE

If OpenWindow(0, 0, 0, #LA_FEN, #HA_FEN, "",  #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu  )
  
  
  
  
  
  mk_menus (0)
   A$ = "Bout"
      MessageRequester( A$, A$, #PB_MessageRequester_Ok)
  mk_menus (1)
  MessageRequester( A$, A$, #PB_MessageRequester_Ok)
  mk_menus(2)
  MessageRequester( A$, A$, #PB_MessageRequester_Ok)
  mk_menus(#FR)
  
  Police = LoadFont(0, "Arial", 16, #PB_Font_Bold)
  
  Enumeration
    #Ef
    #f
  EndEnumeration
  
  If CreateImage(0, #LA_FEN, #HA_FEN) And StartDrawing(ImageOutput(0))
    Box(#GD_XST,#GD_YST, #GD_SIZE,#GD_SIZE, RGB(200,0, 0))
    For ix = 0 To 15
      xx = #GD_XST + 2 + ix*(#CA_SIZE+2) ;
      For iy = 0 To 15
        yy = #GD_YST + 2 + iy*(#CA_SIZE+2) ;
        Box( xx,yy,#CA_SIZE,#CA_SIZE, RGB(0,0,0))
        
      Next iy
    Next ix
    
    DrawingFont(Police)
    TX_LEN = TextWidth(#CLEAR)
    TX_HA = TextHeight(#CLEAR)
    Box(#TXT_X-4-TX_LEN/2, #TXT_Y+5, TX_LEN+8, TX_HA + 8, RGB(100,100,100))
    DrawingMode(#PB_2DDrawing_Transparent )
    XF =DrawText(#TXT_X-TX_LEN/2,#TXT_Y+8,#CLEAR, RGB(200, 200, 0))
    ; TX_LEN = XF-#TXT_X;
    DrawingMode(#PB_2DDrawing_Default )
    StopDrawing() 
    ImageGadget(0, 0, 0, 200, 200, ImageID(0))
    
    StopDrawing() 
    ImageGadget(0, 0, 0, #LA_FEN, #HA_FEN, ImageID(0))
  EndIf
  
  
  Repeat
    
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_Menu
        A$ = Str(EventMenu())
        ; MessageRequester( A$, A$, #PB_MessageRequester_Ok)
        Select EventMenu()
            ; Menu Gamme            
            ;       MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok)
          Case #GA_CHR  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;
          Case #GA_DIAMA 
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;            MessageRequester( A$, "Diatonique Majeure", #PB_MessageRequester_Ok)
          Case #GA_DIAMI  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;           MessageRequester( A$, "Diatonique Mineure", #PB_MessageRequester_Ok)
          Case #GA_PMA  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;            MessageRequester( A$, "Pentatonique Majeure", #PB_MessageRequester_Ok)
          Case #GA_PMI  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;          MessageRequester( A$, "Pentatonique Mineure", #PB_MessageRequester_Ok)
            
           
            
            ; Menu tonalié      
          Case #TO_C  
            MessageRequester( A$, "C", #PB_MessageRequester_Ok)
          Case #TO_Db
            MessageRequester( A$, "C#", #PB_MessageRequester_Ok)
          Case #TO_D
            
            MessageRequester( A$, "D", #PB_MessageRequester_Ok)
          Case #TO_Eb 
            MessageRequester( A$, "Eb", #PB_MessageRequester_Ok)
          Case #TO_E
            MessageRequester( A$, "E", #PB_MessageRequester_Ok)
          Case #TO_F  
            MessageRequester( A$, "F", #PB_MessageRequester_Ok)
          Case #TO_Gb
            MessageRequester( A$, "F#", #PB_MessageRequester_Ok)
          Case #TO_G 
            MessageRequester( A$, "G", #PB_MessageRequester_Ok)
          Case #TO_Ab
            MessageRequester( A$, "Ab", #PB_MessageRequester_Ok)
          Case #TO_A 
            MessageRequester( A$, "A", #PB_MessageRequester_Ok)
            
          Case #TO_Bb 
            MessageRequester( A$, "Bb", #PB_MessageRequester_Ok)
          Case #TO_B 
            MessageRequester( A$, "B", #PB_MessageRequester_Ok)
            
            
        EndSelect
        
        
        ; mk_menus (#FR)
        
        
        
    EndSelect
    ExamineMouse()
    If MouseButton(#PB_MouseButton_Right) <> 0
      A$ = "Bout"
      MessageRequester( A$, A$, #PB_MessageRequester_Ok)
      Lang = (Lang +1) % 3
      mk_menus (Lang)
    EndIf
    
    
  Until Event = #PB_Event_CloseWindow
  ; EndIf
  
  
EndIf

Parce que je ne trouve pas ?

Merci de ta patience, je débute...

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 22:17
par falsam
Houla !!!!! Tu as mis ton code dans un mixer ? Il manque des bouts non ?
Impossible de t'aider avec un code comme le tien.

Montre nous un code fonctionnel.

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 22:38
par falsam
Voila une façon de coder (Ce n'est pas ma préféré) avec les étapes à respecter.

Déclaration de énumération.
Déclaration des variables
Interface utilisateur
Gestion des evenement.

Code : Tout sélectionner

EnableExplicit 

; /// DECLARATION DE L'ENUMERARION
Enumeration Window
  #mf  
EndEnumeration

Enumeration Gadget
  #button
EndEnumeration

;/// DECLARATION DES VARIABLES
Global event, police

;/// INTERFACE UTILISATEUR (FENETRE, MENU, ETC ...)
Police = LoadFont(0, "Arial", 16, #PB_Font_Bold)

If OpenWindow(#mf, 0, 0, 800, 600, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget  (#button, 10, 60, 200, 30, "Fermer")
  
  ;// GESTION DES EVENEMENTS
  Repeat
    Event = WaitWindowEvent()
    
    Select Event
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #button
            CloseWindow(0)
            End  
        EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
Ce squelette de code plus celui que je t'ai présenté avec la datasection devrait pouvoir répondre à ta demande.

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 23:12
par Stan_fr
falsam a écrit : mer. 15/mars/2023 22:17 Houla !!!!! Tu as mis ton code dans un mixer ? Il manque des bouts non ?
Impossible de t'aider avec un code comme le tien.

Montre nous un code fonctionnel.
Oui, désolé code incomplet parce que je voulais faire court.
Le code complet est :

Code : Tout sélectionner

InitMouse()
; CONSTANTES DE LA FENÊTRE
#LA_FEN = 1024
#HA_FEN = 768
#CA_SIZE = 20
#GD_SIZE = 16 * (#CA_SIZE + 2) + 2
#GD_YST = (#HA_FEN-#GD_SIZE) / 2
#GD_XST = (#LA_FEN-#GD_SIZE) / 2
#TXT_X = #GD_XST + #GD_SIZE / 2 
#TXT_Y = #GD_YST + #GD_SIZE + 10
#CLEAR = "RESET"

; Langue
Enumeration Langue
  #GB 
  #FR
  #GE
EndEnumeration

; TITRES DES MENUS
Enumeration menus
  #ME_GAM
  #ME_TON
EndEnumeration  

; ITEMS DU MENU GAMME
Enumeration Gamme
  #GA_CHR
  #GA_DIAMA
  #GA_DIAMI
  #GA_PMA 
  #GA_PMI 
EndEnumeration

; ITEMS DU MENU TONALITÉ
Enumeration Tonalite #PB_Compiler_EnumerationValue
  #TO_C
  #TO_Db
  #TO_D
  #TO_Eb
  #TO_E
  #TO_F
  #TO_Gb
  #TO_G
  #TO_Ab
  #TO_A
  #TO_Bb
  #TO_B
EndEnumeration

Global Dim item.s(#PB_Compiler_EnumerationValue), a, A$, ix, iy, Police, xx, yy, TX_LEN, TX_HA, XF, Event, Lang




Procedure mk_menus (id)
  Select id
    Case #GB
      CreateMenu(#ME_GAM, WindowID(0)) 
      ; MENU GAMME
      MenuTitle("Scale")
      MenuItem(#GA_CHR, "Chromatic")
      MenuItem(#GA_DIAMA, "Major Diatonic")
      MenuItem(#GA_DIAMI, "Minor Diatonic")
      MenuItem(#GA_PMA, "Major Pentatonic")
      MenuItem(#GA_PMI , "Minor Pentatonic")
      
      item(#GA_CHR) = "Chromatic"
      item(#GA_DIAMA) = "Major Diatonic"
      item(#GA_DIAMI) = "Minor Diatonic"
      item(#GA_PMA) = "Major Pentatonic"
      item(#GA_PMI ) = "Minor Pentatonic"
      
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Key")
      MenuItem(#TO_C, "C")
      MenuItem(#TO_Db, "C#")
      MenuItem(#TO_D, "D#")
      MenuItem(#TO_Eb, "Eb#")
      MenuItem(#TO_E, "E")
      MenuItem(#TO_F, "F")
      MenuItem(#TO_Gb, "F#")
      MenuItem(#TO_G, "G")
      MenuItem(#TO_Ab, "Ab")
      MenuItem(#TO_A, "A")
      MenuItem(#TO_Bb, "Bb")
      MenuItem(#TO_B, "B")
      
      item(#TO_C) = "C"
      item(#TO_Db) = "C#"
      item(#TO_D) = "D"
      item(#TO_Eb) = "Eb"
      item(#TO_E) = "E"
      item(#TO_F) = "F"
      item(#TO_Gb) = "F#"
      item(#TO_G) = "G"
      item(#TO_Ab) = "Ab"
      item(#TO_A) = "A"
      item(#TO_Bb) = "Bb"
      item(#TO_B) = "B"     
      
    Case #Fr
      CreateMenu(#ME_GAM, WindowID(0))  
      
      ; MENU GAMME
      MenuTitle("Gamme")
      MenuItem(#GA_CHR, "Chromatique")
      MenuItem(#GA_DIAMA, "Diatonique Majeure")
      MenuItem(#GA_DIAMI, "Diatonique Mineure")
      MenuItem(#GA_PMA, "Pentatonique Majeure")
      MenuItem(#GA_PMI , "Pentatonique Mineure")
      item(#GA_CHR) = "Chromatique"
      
      item(#GA_DIAMA) = "Diatonique Majeure"
      item(#GA_DIAMI) = "Diatonique Mineure"
      item(#GA_PMA) = "Pentatonique Majeure"
      item(#GA_PMI ) = "Pentatonique Mineure"
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Tonalité")
      MenuItem(#TO_C, "Do")
      MenuItem(#TO_Db, "Do#")
      MenuItem(#TO_D, "Ré")
      MenuItem(#TO_Eb, "Mib")
      MenuItem(#TO_E, "Mi")
      MenuItem(#TO_F, "Fa")
      MenuItem(#TO_Gb, "Fa#")
      MenuItem(#TO_G, "Sol")
      MenuItem(#TO_Ab, "Lab")
      MenuItem(#TO_A, "La")
      MenuItem(#TO_Bb, "Sib")
      MenuItem(#TO_B, "Si")
      
      item(#TO_C) = "Do"
      item(#TO_Db) = "Do#"
      item(#TO_D) = "Ré"
      item(#TO_Eb) = "Mib"
      item(#TO_E) = "Mi"
      item(#TO_F) = "Fa"
      item(#TO_Gb) = "Fa#"
      item(#TO_G) = "Sol"
      item(#TO_Ab) = "Lab"
      item(#TO_A) = "La"
      item(#TO_Bb) = "Sib"
      item(#TO_B) = "Si"     
      
      
      
    Case #GE
      CreateMenu(#ME_GAM, WindowID(0))  
      
      ; MENU GAMME
      MenuTitle("Gamme")
      MenuItem(#GA_CHR, "Chromatique")
      MenuItem(#GA_DIAMA, "Diatonique Majeure")
      MenuItem(#GA_DIAMI, "Diatonique Mineure")
      MenuItem(#GA_PMA, "Pentatonique Majeure")
      MenuItem(#GA_PMI , "Pentatonique Mineure")
      
      item(#GA_DIAMA) = "Diatonique Majeure"
      item(#GA_DIAMI) = "Diatonique Mineure"
      item(#GA_PMA) = "Pentatonique Majeure"
      item(#GA_PMI ) = "Pentatonique Mineure"
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Tonalité")
      MenuItem(#TO_C, "Do")
      MenuItem(#TO_Db, "Do#")
      MenuItem(#TO_D, "Ré")
      MenuItem(#TO_Eb, "Mib")
      MenuItem(#TO_E, "Mi")
      MenuItem(#TO_F, "Fa")
      MenuItem(#TO_Gb, "Fa#")
      MenuItem(#TO_G, "Sol")
      MenuItem(#TO_Ab, "Lab")
      MenuItem(#TO_A, "La")
      MenuItem(#TO_Bb, "Sib")
      MenuItem(#TO_B, "Si")
      
      item(#TO_C) = "C"
      item(#TO_Db) = "C#"
      item(#TO_D) = "D"
      item(#TO_Eb) = "Eb"
      item(#TO_E) = "E"
      item(#TO_F) = "F"
      item(#TO_Gb) = "F#"
      item(#TO_G) = "G"
      item(#TO_Ab) = "Ab"
      item(#TO_A) = "A"
      item(#TO_Bb) = "Bb"
      item(#TO_B) = "B"     
      
      
      
  EndSelect
  
EndProcedure


; CRÉATION FENÊTRE

If OpenWindow(0, 0, 0, #LA_FEN, #HA_FEN, "",  #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu  )
  
  
  
  
  
  
  ;  AAA
  ;Cette partie sert à tester les changement de menus
  ;
  
  test = 0
  
  If test <> 0
    mk_menus (0)
    A$ = "Bout"
    MessageRequester( A$, A$, #PB_MessageRequester_Ok)
    mk_menus (1)
    MessageRequester( A$, A$, #PB_MessageRequester_Ok)
    mk_menus(2)
    MessageRequester( A$, A$, #PB_MessageRequester_Ok)
  EndIf
  mk_menus(#FR)
  ;
  ; Fin AAA
  ;
  
  Police = LoadFont(0, "Arial", 16, #PB_Font_Bold)
  
  Enumeration
    #Ef
    #f
  EndEnumeration
  
  If CreateImage(0, #LA_FEN, #HA_FEN) And StartDrawing(ImageOutput(0))
    Box(#GD_XST,#GD_YST, #GD_SIZE,#GD_SIZE, RGB(200,0, 0))
    For ix = 0 To 15
      xx = #GD_XST + 2 + ix*(#CA_SIZE+2) ;
      For iy = 0 To 15
        yy = #GD_YST + 2 + iy*(#CA_SIZE+2) ;
        Box( xx,yy,#CA_SIZE,#CA_SIZE, RGB(0,0,0))
        
      Next iy
    Next ix
    
    DrawingFont(Police)
    TX_LEN = TextWidth(#CLEAR)
    TX_HA = TextHeight(#CLEAR)
    Box(#TXT_X-4-TX_LEN/2, #TXT_Y+5, TX_LEN+8, TX_HA + 8, RGB(100,100,100))
    DrawingMode(#PB_2DDrawing_Transparent )
    XF =DrawText(#TXT_X-TX_LEN/2,#TXT_Y+8,#CLEAR, RGB(200, 200, 0))
    ; TX_LEN = XF-#TXT_X;
    DrawingMode(#PB_2DDrawing_Default )
    StopDrawing() 
    ImageGadget(0, 0, 0, 200, 200, ImageID(0))
    
    StopDrawing() 
    ImageGadget(0, 0, 0, #LA_FEN, #HA_FEN, ImageID(0))
  EndIf
  
  
  Repeat
    
    Event = WaitWindowEvent() ; pour l'instant test : on affiche un message et c'est tout.
    Select Event
      Case #PB_Event_Menu
        A$ = Str(EventMenu())
        ; MessageRequester( A$, A$, #PB_MessageRequester_Ok)
        Select EventMenu()
            ; Menu Gamme            
            ;       MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok)
          Case #GA_CHR  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;
          Case #GA_DIAMA 
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;            MessageRequester( A$, "Diatonique Majeure", #PB_MessageRequester_Ok)
          Case #GA_DIAMI  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;           MessageRequester( A$, "Diatonique Mineure", #PB_MessageRequester_Ok)
          Case #GA_PMA  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;            MessageRequester( A$, "Pentatonique Majeure", #PB_MessageRequester_Ok)
          Case #GA_PMI  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;          MessageRequester( A$, "Pentatonique Mineure", #PB_MessageRequester_Ok)
            
            
            ; Menu tonalié      
          Case #TO_C  
            MessageRequester( A$, "C", #PB_MessageRequester_Ok)
          Case #TO_Db
            MessageRequester( A$, "C#", #PB_MessageRequester_Ok)
          Case #TO_D
            
            MessageRequester( A$, "D", #PB_MessageRequester_Ok)
          Case #TO_Eb 
            MessageRequester( A$, "Eb", #PB_MessageRequester_Ok)
          Case #TO_E
            MessageRequester( A$, "E", #PB_MessageRequester_Ok)
          Case #TO_F  
            MessageRequester( A$, "F", #PB_MessageRequester_Ok)
          Case #TO_Gb
            MessageRequester( A$, "F#", #PB_MessageRequester_Ok)
          Case #TO_G 
            MessageRequester( A$, "G", #PB_MessageRequester_Ok)
          Case #TO_Ab
            MessageRequester( A$, "Ab", #PB_MessageRequester_Ok)
          Case #TO_A 
            MessageRequester( A$, "A", #PB_MessageRequester_Ok)
            
          Case #TO_Bb 
            MessageRequester( A$, "Bb", #PB_MessageRequester_Ok)
          Case #TO_B 
            MessageRequester( A$, "B", #PB_MessageRequester_Ok)
            
            
        EndSelect
        
        
        ; mk_menus (#FR)
        
        
        
    EndSelect
    ExamineMouse()
    If MouseButton(#PB_MouseButton_Right) <> 0
      A$ = "Bout"
      MessageRequester( A$, A$, #PB_MessageRequester_Ok)
      Lang = (Lang +1) % 3
      mk_menus (Lang)
    EndIf
    
    
  Until Event = #PB_Event_CloseWindow
  ; EndIf
  
  
EndIf
Il est fonctionnel mais ne fait rien à part permettre de tester ce qui existe : c'est à dire des menus, qui pourront être en Français, Anglais ou Allemand, l'interface en fait.

Re: Inclure des images jpg dans l'exe

Publié : mer. 15/mars/2023 23:22
par falsam
InitMouse(), ExamineMouse() et MouseButton() sont des instructions dédiées à la 2D ou 3D

ton code corrigé

Code : Tout sélectionner

;InitMouse()
; CONSTANTES DE LA FENÊTRE
#LA_FEN = 1024
#HA_FEN = 768
#CA_SIZE = 20
#GD_SIZE = 16 * (#CA_SIZE + 2) + 2
#GD_YST = (#HA_FEN-#GD_SIZE) / 2
#GD_XST = (#LA_FEN-#GD_SIZE) / 2
#TXT_X = #GD_XST + #GD_SIZE / 2 
#TXT_Y = #GD_YST + #GD_SIZE + 10
#CLEAR = "RESET"

; Langue
Enumeration Langue
  #GB 
  #FR
  #GE
EndEnumeration

; TITRES DES MENUS
Enumeration menus
  #ME_GAM
  #ME_TON
EndEnumeration  

; ITEMS DU MENU GAMME
Enumeration Gamme
  #GA_CHR
  #GA_DIAMA
  #GA_DIAMI
  #GA_PMA 
  #GA_PMI 
EndEnumeration

; ITEMS DU MENU TONALITÉ
Enumeration Tonalite #PB_Compiler_EnumerationValue
  #TO_C
  #TO_Db
  #TO_D
  #TO_Eb
  #TO_E
  #TO_F
  #TO_Gb
  #TO_G
  #TO_Ab
  #TO_A
  #TO_Bb
  #TO_B
EndEnumeration

Global Dim item.s(#PB_Compiler_EnumerationValue), a, A$, ix, iy, Police, xx, yy, TX_LEN, TX_HA, XF, Event, Lang

Procedure mk_menus (id)
  Select id
    Case #GB
      CreateMenu(#ME_GAM, WindowID(0)) 
      ; MENU GAMME
      MenuTitle("Scale")
      MenuItem(#GA_CHR, "Chromatic")
      MenuItem(#GA_DIAMA, "Major Diatonic")
      MenuItem(#GA_DIAMI, "Minor Diatonic")
      MenuItem(#GA_PMA, "Major Pentatonic")
      MenuItem(#GA_PMI , "Minor Pentatonic")
      
      item(#GA_CHR) = "Chromatic"
      item(#GA_DIAMA) = "Major Diatonic"
      item(#GA_DIAMI) = "Minor Diatonic"
      item(#GA_PMA) = "Major Pentatonic"
      item(#GA_PMI ) = "Minor Pentatonic"
      
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Key")
      MenuItem(#TO_C, "C")
      MenuItem(#TO_Db, "C#")
      MenuItem(#TO_D, "D#")
      MenuItem(#TO_Eb, "Eb#")
      MenuItem(#TO_E, "E")
      MenuItem(#TO_F, "F")
      MenuItem(#TO_Gb, "F#")
      MenuItem(#TO_G, "G")
      MenuItem(#TO_Ab, "Ab")
      MenuItem(#TO_A, "A")
      MenuItem(#TO_Bb, "Bb")
      MenuItem(#TO_B, "B")
      
      item(#TO_C) = "C"
      item(#TO_Db) = "C#"
      item(#TO_D) = "D"
      item(#TO_Eb) = "Eb"
      item(#TO_E) = "E"
      item(#TO_F) = "F"
      item(#TO_Gb) = "F#"
      item(#TO_G) = "G"
      item(#TO_Ab) = "Ab"
      item(#TO_A) = "A"
      item(#TO_Bb) = "Bb"
      item(#TO_B) = "B"     
      
    Case #Fr
      CreateMenu(#ME_GAM, WindowID(0))  
      
      ; MENU GAMME
      MenuTitle("Gamme")
      MenuItem(#GA_CHR, "Chromatique")
      MenuItem(#GA_DIAMA, "Diatonique Majeure")
      MenuItem(#GA_DIAMI, "Diatonique Mineure")
      MenuItem(#GA_PMA, "Pentatonique Majeure")
      MenuItem(#GA_PMI , "Pentatonique Mineure")
      item(#GA_CHR) = "Chromatique"
      
      item(#GA_DIAMA) = "Diatonique Majeure"
      item(#GA_DIAMI) = "Diatonique Mineure"
      item(#GA_PMA) = "Pentatonique Majeure"
      item(#GA_PMI ) = "Pentatonique Mineure"
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Tonalité")
      MenuItem(#TO_C, "Do")
      MenuItem(#TO_Db, "Do#")
      MenuItem(#TO_D, "Ré")
      MenuItem(#TO_Eb, "Mib")
      MenuItem(#TO_E, "Mi")
      MenuItem(#TO_F, "Fa")
      MenuItem(#TO_Gb, "Fa#")
      MenuItem(#TO_G, "Sol")
      MenuItem(#TO_Ab, "Lab")
      MenuItem(#TO_A, "La")
      MenuItem(#TO_Bb, "Sib")
      MenuItem(#TO_B, "Si")
      
      item(#TO_C) = "Do"
      item(#TO_Db) = "Do#"
      item(#TO_D) = "Ré"
      item(#TO_Eb) = "Mib"
      item(#TO_E) = "Mi"
      item(#TO_F) = "Fa"
      item(#TO_Gb) = "Fa#"
      item(#TO_G) = "Sol"
      item(#TO_Ab) = "Lab"
      item(#TO_A) = "La"
      item(#TO_Bb) = "Sib"
      item(#TO_B) = "Si"     
      
      
      
    Case #GE
      CreateMenu(#ME_GAM, WindowID(0))  
      
      ; MENU GAMME
      MenuTitle("Gamme")
      MenuItem(#GA_CHR, "Chromatique")
      MenuItem(#GA_DIAMA, "Diatonique Majeure")
      MenuItem(#GA_DIAMI, "Diatonique Mineure")
      MenuItem(#GA_PMA, "Pentatonique Majeure")
      MenuItem(#GA_PMI , "Pentatonique Mineure")
      
      item(#GA_DIAMA) = "Diatonique Majeure"
      item(#GA_DIAMI) = "Diatonique Mineure"
      item(#GA_PMA) = "Pentatonique Majeure"
      item(#GA_PMI ) = "Pentatonique Mineure"
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Tonalité")
      MenuItem(#TO_C, "Do")
      MenuItem(#TO_Db, "Do#")
      MenuItem(#TO_D, "Ré")
      MenuItem(#TO_Eb, "Mib")
      MenuItem(#TO_E, "Mi")
      MenuItem(#TO_F, "Fa")
      MenuItem(#TO_Gb, "Fa#")
      MenuItem(#TO_G, "Sol")
      MenuItem(#TO_Ab, "Lab")
      MenuItem(#TO_A, "La")
      MenuItem(#TO_Bb, "Sib")
      MenuItem(#TO_B, "Si")
      
      item(#TO_C) = "C"
      item(#TO_Db) = "C#"
      item(#TO_D) = "D"
      item(#TO_Eb) = "Eb"
      item(#TO_E) = "E"
      item(#TO_F) = "F"
      item(#TO_Gb) = "F#"
      item(#TO_G) = "G"
      item(#TO_Ab) = "Ab"
      item(#TO_A) = "A"
      item(#TO_Bb) = "Bb"
      item(#TO_B) = "B"     
      
      
      
  EndSelect
  
EndProcedure


; CRÉATION FENÊTRE

If OpenWindow(0, 0, 0, #LA_FEN, #HA_FEN, "",  #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu  )
  
  ;  AAA
  ;Cette partie sert à tester les changement de menus
  ;
  
  test = 0
  
  If test <> 0
    mk_menus (0)
    A$ = "Bout"
    MessageRequester( A$, A$, #PB_MessageRequester_Ok)
    mk_menus (1)
    MessageRequester( A$, A$, #PB_MessageRequester_Ok)
    mk_menus(2)
    MessageRequester( A$, A$, #PB_MessageRequester_Ok)
  EndIf
  mk_menus(#FR)
  ;
  ; Fin AAA
  ;
  
  Police = LoadFont(0, "Arial", 16, #PB_Font_Bold)
  
  Enumeration
    #Ef
    #f
  EndEnumeration
  
  If CreateImage(0, #LA_FEN, #HA_FEN) And StartDrawing(ImageOutput(0))
    Box(#GD_XST,#GD_YST, #GD_SIZE,#GD_SIZE, RGB(200,0, 0))
    For ix = 0 To 15
      xx = #GD_XST + 2 + ix*(#CA_SIZE+2) ;
      For iy = 0 To 15
        yy = #GD_YST + 2 + iy*(#CA_SIZE+2) ;
        Box( xx,yy,#CA_SIZE,#CA_SIZE, RGB(0,0,0))
        
      Next iy
    Next ix
    
    DrawingFont(Police)
    TX_LEN = TextWidth(#CLEAR)
    TX_HA = TextHeight(#CLEAR)
    Box(#TXT_X-4-TX_LEN/2, #TXT_Y+5, TX_LEN+8, TX_HA + 8, RGB(100,100,100))
    DrawingMode(#PB_2DDrawing_Transparent )
    XF =DrawText(#TXT_X-TX_LEN/2,#TXT_Y+8,#CLEAR, RGB(200, 200, 0))
    ; TX_LEN = XF-#TXT_X;
    DrawingMode(#PB_2DDrawing_Default )
    StopDrawing() 
    ImageGadget(0, 0, 0, 200, 200, ImageID(0))
    
    StopDrawing() 
    ImageGadget(0, 0, 0, #LA_FEN, #HA_FEN, ImageID(0))
  EndIf
  
  
  Repeat
    
    Event = WaitWindowEvent() ; pour l'instant test : on affiche un message et c'est tout.
    Select Event
      Case #PB_Event_Menu
        A$ = Str(EventMenu())
        ; MessageRequester( A$, A$, #PB_MessageRequester_Ok)
        Select EventMenu()
            ; Menu Gamme            
            ;       MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok)
          Case #GA_CHR  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;
          Case #GA_DIAMA 
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;            MessageRequester( A$, "Diatonique Majeure", #PB_MessageRequester_Ok)
          Case #GA_DIAMI  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;           MessageRequester( A$, "Diatonique Mineure", #PB_MessageRequester_Ok)
          Case #GA_PMA  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;            MessageRequester( A$, "Pentatonique Majeure", #PB_MessageRequester_Ok)
          Case #GA_PMI  
            MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;          MessageRequester( A$, "Pentatonique Mineure", #PB_MessageRequester_Ok)
            
            
            ; Menu tonalié      
          Case #TO_C  
            MessageRequester( A$, "C", #PB_MessageRequester_Ok)
          Case #TO_Db
            MessageRequester( A$, "C#", #PB_MessageRequester_Ok)
          Case #TO_D
            
            MessageRequester( A$, "D", #PB_MessageRequester_Ok)
          Case #TO_Eb 
            MessageRequester( A$, "Eb", #PB_MessageRequester_Ok)
          Case #TO_E
            MessageRequester( A$, "E", #PB_MessageRequester_Ok)
          Case #TO_F  
            MessageRequester( A$, "F", #PB_MessageRequester_Ok)
          Case #TO_Gb
            MessageRequester( A$, "F#", #PB_MessageRequester_Ok)
          Case #TO_G 
            MessageRequester( A$, "G", #PB_MessageRequester_Ok)
          Case #TO_Ab
            MessageRequester( A$, "Ab", #PB_MessageRequester_Ok)
          Case #TO_A 
            MessageRequester( A$, "A", #PB_MessageRequester_Ok)
            
          Case #TO_Bb 
            MessageRequester( A$, "Bb", #PB_MessageRequester_Ok)
          Case #TO_B 
            MessageRequester( A$, "B", #PB_MessageRequester_Ok)
            
            
        EndSelect
        
        
        ; mk_menus (#FR)
        
        
    EndSelect
    ;ExamineMouse()
    ;If MouseButton(#PB_MouseButton_Right) <> 0
    ;A$ = "Bout"
    ;MessageRequester( A$, A$, #PB_MessageRequester_Ok)
    ;Lang = (Lang +1) % 3
    ;mk_menus (Lang)
    ;EndIf
  
Until Event = #PB_Event_CloseWindow
; EndIf
EndIf

Re: Inclure des images jpg dans l'exe

Publié : ven. 17/mars/2023 15:43
par Stan_fr
falsam a écrit : mer. 15/mars/2023 23:22 InitMouse(), ExamineMouse() et MouseButton() sont des instructions dédiées à la 2D ou 3D

ton code corrigé

Je pensais avoir compris, du coup j'ai bricolé :
j'ai un truc qui "marchotte" ; ça ne se plante pas mais ça n'affiche pas les bonnes images ?!?

Code : Tout sélectionner

EnableExplicit 

Declare Exit()
Declare start()

; /// DECLARATION DE L'ENUMERARION
Enumeration gadget
  #image1
  #image2
EndEnumeration

Enumeration Window
  #mf  
EndEnumeration

Enumeration Gadget_lang
  #G1
  #G2
  #G3
  #G4
EndEnumeration

;/// DECLARATION DES VARIABLES
Global event, police

;/// INTERFACE UTILISATEUR (FENETRE, MENU, ETC ...)
Police = LoadFont(0, "Arial", 16, #PB_Font_Bold); CONSTANTES DE LA FENÊTRE
#LA_FEN = 1024
#HA_FEN = 768
#CA_SIZE = 20
#GD_SIZE = 16 * (#CA_SIZE + 2) + 2
#GD_YST = (#HA_FEN-#GD_SIZE) / 2
#GD_XST = (#LA_FEN-#GD_SIZE) / 2
#TXT_X = #GD_XST + #GD_SIZE / 2 
#TXT_Y = #GD_YST + #GD_SIZE + 10
#CLEAR = "RESET"

; Langue
Enumeration Langue
  #GB 
  #FR
  #GE
EndEnumeration

; TITRES DES MENUS
Enumeration menus
  #ME_GAM
  #ME_TON
EndEnumeration  

; ITEMS DU MENU GAMME
Enumeration Gamme
  #GA_CHR
  #GA_DIAMA
  #GA_DIAMI
  #GA_PMA 
  #GA_PMI 
EndEnumeration

; ITEMS DU MENU TONALITÉ
Enumeration Tonalite #PB_Compiler_EnumerationValue
  #TO_C
  #TO_Db
  #TO_D
  #TO_Eb
  #TO_E
  #TO_F
  #TO_Gb
  #TO_G
  #TO_Ab
  #TO_A
  #TO_Bb
  #TO_B
EndEnumeration

Global Dim item.s(#PB_Compiler_EnumerationValue), a, A$, ix, iy, Police, xx, yy, TX_LEN, TX_HA, XF, Event, Lang, test, image1, image2


Procedure mk_menus (id)
  Select id
    Case #GB
      CreateMenu(#ME_GAM, WindowID(0)) 
      ; MENU GAMME
      MenuTitle("Scale")
      MenuItem(#GA_CHR, "Chromatic")
      MenuItem(#GA_DIAMA, "Major Diatonic")
      MenuItem(#GA_DIAMI, "Minor Diatonic")
      MenuItem(#GA_PMA, "Major Pentatonic")
      MenuItem(#GA_PMI , "Minor Pentatonic")
      
      item(#GA_CHR) = "Chromatic"
      item(#GA_DIAMA) = "Major Diatonic"
      item(#GA_DIAMI) = "Minor Diatonic"
      item(#GA_PMA) = "Major Pentatonic"
      item(#GA_PMI ) = "Minor Pentatonic"
      
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Key")
      MenuItem(#TO_C, "C")
      MenuItem(#TO_Db, "C#")
      MenuItem(#TO_D, "D#")
      MenuItem(#TO_Eb, "Eb#")
      MenuItem(#TO_E, "E")
      MenuItem(#TO_F, "F")
      MenuItem(#TO_Gb, "F#")
      MenuItem(#TO_G, "G")
      MenuItem(#TO_Ab, "Ab")
      MenuItem(#TO_A, "A")
      MenuItem(#TO_Bb, "Bb")
      MenuItem(#TO_B, "B")
      
      item(#TO_C) = "C"
      item(#TO_Db) = "C#"
      item(#TO_D) = "D"
      item(#TO_Eb) = "Eb"
      item(#TO_E) = "E"
      item(#TO_F) = "F"
      item(#TO_Gb) = "F#"
      item(#TO_G) = "G"
      item(#TO_Ab) = "Ab"
      item(#TO_A) = "A"
      item(#TO_Bb) = "Bb"
      item(#TO_B) = "B"     
      
    Case #Fr
      CreateMenu(#ME_GAM, WindowID(0))  
      
      ; MENU GAMME
      MenuTitle("Gamme")
      MenuItem(#GA_CHR, "Chromatique")
      MenuItem(#GA_DIAMA, "Diatonique Majeure")
      MenuItem(#GA_DIAMI, "Diatonique Mineure")
      MenuItem(#GA_PMA, "Pentatonique Majeure")
      MenuItem(#GA_PMI , "Pentatonique Mineure")
      item(#GA_CHR) = "Chromatique"
      
      item(#GA_DIAMA) = "Diatonique Majeure"
      item(#GA_DIAMI) = "Diatonique Mineure"
      item(#GA_PMA) = "Pentatonique Majeure"
      item(#GA_PMI ) = "Pentatonique Mineure"
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Tonalité")
      MenuItem(#TO_C, "Do")
      MenuItem(#TO_Db, "Do#")
      MenuItem(#TO_D, "Ré")
      MenuItem(#TO_Eb, "Mib")
      MenuItem(#TO_E, "Mi")
      MenuItem(#TO_F, "Fa")
      MenuItem(#TO_Gb, "Fa#")
      MenuItem(#TO_G, "Sol")
      MenuItem(#TO_Ab, "Lab")
      MenuItem(#TO_A, "La")
      MenuItem(#TO_Bb, "Sib")
      MenuItem(#TO_B, "Si")
      
      item(#TO_C) = "Do"
      item(#TO_Db) = "Do#"
      item(#TO_D) = "Ré"
      item(#TO_Eb) = "Mib"
      item(#TO_E) = "Mi"
      item(#TO_F) = "Fa"
      item(#TO_Gb) = "Fa#"
      item(#TO_G) = "Sol"
      item(#TO_Ab) = "Lab"
      item(#TO_A) = "La"
      item(#TO_Bb) = "Sib"
      item(#TO_B) = "Si"     
      
      
      
    Case #GE
      CreateMenu(#ME_GAM, WindowID(0))  
      
      ; MENU GAMME
      MenuTitle("Gamme")
      MenuItem(#GA_CHR, "Chromatique")
      MenuItem(#GA_DIAMA, "Diatonique Majeure")
      MenuItem(#GA_DIAMI, "Diatonique Mineure")
      MenuItem(#GA_PMA, "Pentatonique Majeure")
      MenuItem(#GA_PMI , "Pentatonique Mineure")
      
      item(#GA_DIAMA) = "Diatonique Majeure"
      item(#GA_DIAMI) = "Diatonique Mineure"
      item(#GA_PMA) = "Pentatonique Majeure"
      item(#GA_PMI ) = "Pentatonique Mineure"
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Tonalité")
      MenuItem(#TO_C, "Do")
      MenuItem(#TO_Db, "Do#")
      MenuItem(#TO_D, "Ré")
      MenuItem(#TO_Eb, "Mib")
      MenuItem(#TO_E, "Mi")
      MenuItem(#TO_F, "Fa")
      MenuItem(#TO_Gb, "Fa#")
      MenuItem(#TO_G, "Sol")
      MenuItem(#TO_Ab, "Lab")
      MenuItem(#TO_A, "La")
      MenuItem(#TO_Bb, "Sib")
      MenuItem(#TO_B, "Si")
      
      item(#TO_C) = "C"
      item(#TO_Db) = "C#"
      item(#TO_D) = "D"
      item(#TO_Eb) = "Eb"
      item(#TO_E) = "E"
      item(#TO_F) = "F"
      item(#TO_Gb) = "F#"
      item(#TO_G) = "G"
      item(#TO_Ab) = "Ab"
      item(#TO_A) = "A"
      item(#TO_Bb) = "Bb"
      item(#TO_B) = "B"     
      
      
      
  EndSelect
  
EndProcedure


; CRÉATION FENÊTRE
Procedure Start()
  BindEvent(#PB_Event_CloseWindow, @Exit())
EndProcedure

If OpenWindow(#mf, 0, 0, #LA_FEN, #HA_FEN, "",  #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu  )
  UseJPEGImageDecoder()
  image1 = CatchImage(#PB_Any, ?imagetest1)
  image2 = CatchImage(#PB_Any, ?imagetest2)
  
  ImageGadget(#image1, 20, 20, 40, 40, ImageID(image1))
  ImageGadget(#image2, 165, 80, 40, 40, ImageID(image2))
  ;  AAA
  ;Cette partie sert à tester les changement de menus
  ;
EndIf

test = 0

If test <> 0
  mk_menus (0)
  A$ = "Bout"
  MessageRequester( A$, A$, #PB_MessageRequester_Ok)
  mk_menus (1)
  MessageRequester( A$, A$, #PB_MessageRequester_Ok)
  mk_menus(2)
  MessageRequester( A$, A$, #PB_MessageRequester_Ok)
EndIf
mk_menus(#FR)
;
; Fin AAA
;



; Création de la grille
If CreateImage(0, #LA_FEN, #HA_FEN) And StartDrawing(ImageOutput(0))
  ImageGadget(#G1,#GD_XST,#GD_YST, #GD_SIZE,#GD_SIZE, 0)
  Box(#GD_XST,#GD_YST, #GD_SIZE,#GD_SIZE, RGB(200,0, 0))
  For ix = 0 To 15
    xx = #GD_XST + 2 + ix*(#CA_SIZE+2) ;
    For iy = 0 To 15
      yy = #GD_YST + 2 + iy*(#CA_SIZE+2) ;
      Box( xx,yy,#CA_SIZE,#CA_SIZE, RGB(0,0,0))
      
    Next iy
  Next ix
  
  DrawingFont(Police)
  TX_LEN = TextWidth(#CLEAR)
  TX_HA = TextHeight(#CLEAR)
  Box(#TXT_X-4-TX_LEN/2, #TXT_Y+5, TX_LEN+8, TX_HA + 8, RGB(100,100,100))
  DrawingMode(#PB_2DDrawing_Transparent )
  XF =DrawText(#TXT_X-TX_LEN/2,#TXT_Y+8,#CLEAR, RGB(200, 200, 0))
  ; TX_LEN = XF-#TXT_X;
  DrawingMode(#PB_2DDrawing_Default )
  StopDrawing() 
  ImageGadget(0, 0, 0, 200, 200, ImageID(0))
  
  StopDrawing() 
  ImageGadget(0, 0, 0, #LA_FEN, #HA_FEN, ImageID(0))
EndIf


Repeat
  
  Event = WaitWindowEvent() ; pour l'instant test : on affiche un message et c'est tout.
  Select Event
    Case #PB_Event_Menu
      A$ = Str(EventMenu())
      ; MessageRequester( A$, A$, #PB_MessageRequester_Ok)
      Select EventMenu()
          ; Menu Gamme            
          ;       MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok)
        Case #GA_CHR  
          MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;
        Case #GA_DIAMA 
          MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;            MessageRequester( A$, "Diatonique Majeure", #PB_MessageRequester_Ok)
        Case #GA_DIAMI  
          MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;           MessageRequester( A$, "Diatonique Mineure", #PB_MessageRequester_Ok)
        Case #GA_PMA  
          MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;            MessageRequester( A$, "Pentatonique Majeure", #PB_MessageRequester_Ok)
        Case #GA_PMI  
          MessageRequester( A$, item(EventMenu()), #PB_MessageRequester_Ok) ;          MessageRequester( A$, "Pentatonique Mineure", #PB_MessageRequester_Ok)
          
          
          ; Menu tonalié      
        Case #TO_C  
          MessageRequester( A$, "C", #PB_MessageRequester_Ok)
        Case #TO_Db
          MessageRequester( A$, "C#", #PB_MessageRequester_Ok)
        Case #TO_D
          
          MessageRequester( A$, "D", #PB_MessageRequester_Ok)
        Case #TO_Eb 
          MessageRequester( A$, "Eb", #PB_MessageRequester_Ok)
        Case #TO_E
          MessageRequester( A$, "E", #PB_MessageRequester_Ok)
        Case #TO_F  
          MessageRequester( A$, "F", #PB_MessageRequester_Ok)
        Case #TO_Gb
          MessageRequester( A$, "F#", #PB_MessageRequester_Ok)
        Case #TO_G 
          MessageRequester( A$, "G", #PB_MessageRequester_Ok)
        Case #TO_Ab
          MessageRequester( A$, "Ab", #PB_MessageRequester_Ok)
        Case #TO_A 
          MessageRequester( A$, "A", #PB_MessageRequester_Ok)
          
        Case #TO_Bb 
          MessageRequester( A$, "Bb", #PB_MessageRequester_Ok)
        Case #TO_B 
          MessageRequester( A$, "B", #PB_MessageRequester_Ok)
          
          
      EndSelect
      
      
  EndSelect
  
  
Until Event = #PB_Event_CloseWindow

;EndIf


Procedure Exit()
  End
EndProcedure

DataSection
  imagetest1:
  IncludeBinary "E:\DF.jpg"
  
  imagetest2:
  IncludeBinary "E:\DA.jpg"
EndDataSection

Re: Inclure des images jpg dans l'exe

Publié : ven. 17/mars/2023 17:33
par falsam
Image

Re: Inclure des images jpg dans l'exe

Publié : ven. 17/mars/2023 18:38
par SPH
Stan_fr a écrit : ven. 17/mars/2023 15:43
j'ai un truc qui "marchotte" ; ça ne se plante pas mais ça n'affiche pas les bonnes images ?!?
Quand quelqu'un dit que ça marchotte, c'est que ça ne marche pas !

J'ai essayé ton code et avec mes .BMP, je vois une image presque dans le coin haut gauche.
C'est toi qui doit savoir ce que ça doit faire... :idea:

Re: Inclure des images jpg dans l'exe

Publié : ven. 17/mars/2023 19:38
par falsam
@Stan : Correction de ton code.

:arrow: Ton code (main.pb) et les images https://falsam.com/download/purebasic/S ... ection.zip

:idea: Tu remettras tes drapeaux à leurs places uniquement après avoir tester.

Si tu veux une fenêtre sur fond noir tu décommentes la ligne 85.

Code : Tout sélectionner

;SetWindowColor(#mf, RGB(0, 0, 0))
Le changement de langue fonctionne. N'ayant que deux drapeaux je n'ai pas fait l'allemand.

Je te conseille de garder les boutons images pour gérer tes évènements souris.

■ Révise les fonctionnalités Menu https://www.purebasic.com/french/docume ... index.html
J'ai supprimé ton tableau items() qui ne sert à rien.

■ Question : A quoi va servir la grille ? comment tu comptes gérer les évènements dessus ?

Re: Inclure des images jpg dans l'exe

Publié : ven. 17/mars/2023 21:13
par Stan_fr
falsam a écrit : ven. 17/mars/2023 19:38 @Stan : Correction de ton code.

:arrow: Ton code (main.pb) et les images https://falsam.com/download/purebasic/S ... ection.zip

:idea: Tu remettras tes drapeaux à leurs places uniquement après avoir tester.

Si tu veux une fenêtre sur fond noir tu décommentes la ligne 85.

Code : Tout sélectionner

;SetWindowColor(#mf, RGB(0, 0, 0))
Le changement de langue fonctionne. N'ayant que deux drapeaux je n'ai pas fait l'allemand.

Je te conseille de garder les boutons images pour gérer tes évènements souris.

■ Révise les fonctionnalités Menu https://www.purebasic.com/french/docume ... index.html
J'ai supprimé ton tableau items() qui ne sert à rien.

■ Question : A quoi va servir la grille ? comment tu comptes gérer les évènements dessus ?
MERCI d'avoir pris le temps de me donner quelque chose qui fonctionne ! Je sais que c'est pénible pour toi !

La grille sera balayée de gauche à droite par colonne (i.e. pour chaque carré "sélectionné" d'une colonne, un son sera joué pendant que la colonne aura le "focus") comme dans :

https://www.maxlaumeister.com/tonematrix/

Essaie et clique sur la grille ça sera plus clair que mes explications...

Je comptais gérer ça avec des clics de souris dont je voulais déterminer la position sur la grille au moment des appuis sur le bouton, mais je suppose que ça serait mieux en considérant que la grille est une grille de ButtonImageGadget ?

Par contre ça ne répond pas à mon problème qui est de pouvoir donner un exe qui contient les drapeaux pour qu'il puisse fonctionner même si les images des drapeaux ne sont pas présentes, car là ça déclenche une erreur.

En fait il faudrait un chargement "conditionnel" : si le fichier n'existe pas, un peu "l'inverse" de Xinclude.
Ou avoir un moyen de stocker les images dans une autre DataSection et faire un if pour basculer sur l'une au l'autre en fonction de la présence des fichiers images de drapeaux.

Mais là ça dépasse, largement mes compétence et ma compréhension de musicien de 72 ans. :oops:

Merci encore de ta patience, ça me rappelle certains cours que je donnais. :roll: