Affichage Fenetre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

8) cool chris merci pour ton code sa fini bien ma fenetre et merci aussi pour les fautes d'orthographe :wink: :lol: . en gros c'est vous deux qui avaient fait mon code :lol: . mais merci a vous j'en ai marre des fenetre toutes grise et monotone <- pas sur l'orthographe :lol: . puis cote ortho je vais essayer de faire de mon mieu :wink: :D merci et bonne fin de journee a tout le forum


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Excellent c'est tout a fait ce que je cherchais.

J'ai juste un soucis, j'ai inserer dans le code :
- une thread qui va me permettre de copier des fichiers
- et une barre de progression perso

Tout marche bien, la fenetre se déplace bien....
MAIS quand je recouvre ma fenetre avec une autre fentre et que je la rend ensuite visible,(utilisation d'un autre programme pendant le fin de celui là) l'image de fond se décalle 8O

Je n'arrive pas a trouver pourquoi, alors merci d'avance du coup de main.

Code : Tout sélectionner

Enumeration
    #Window_0
EndEnumeration

Enumeration
    #Frame3D_0
    #IPAddress_0
    #Button_0
    #ProgressBar_0
    #Button_1
    #TrackBar_0
    #Frame3D_2
    #Frame3D_3
    #Frame3D_4
    #Text_1
    #Text_2
    #Text_3
    #Image
    #im_barre_progress
EndEnumeration

LoadImage(#Image, "c:/test.bmp")

Procedure CallBack(Hnd,Msg,wParam,lParam)
    Resultat = #PB_ProcessPureBasicEvents
    If Msg = #WM_PAINT
        

        
        ps.PAINTSTRUCT
        hdc=BeginPaint_(Hnd, ps)
        hdc_source=CreateCompatibleDC_(hdc)
        SelectObject_(hdc_source,UseImage(#Image))
        
        BitBlt_(hdc, 0, 0, 600, 400,hdc_source, 0, 0, #SRCCOPY)
        
        EndPaint_(Hnd,ps)
        DeleteDC_(hdc_source)
    EndIf
    ProcedureReturn Resultat
EndProcedure
Procedure Copy_fichier()
    
    If CreateImage(#im_barre_progress, 346, 13)
        If  StartDrawing(ImageOutput())
            
            StopDrawing()
        EndIf
        
        
        Repeat
            i=i+1
            
            Delay(100)
            
            
            If  StartDrawing(ImageOutput())
                Box(0, 0, 346, 13,RGB(239,170,92))
                
                Box(0, 0, i*3.46, 13,RGB(40,185,56))
                FrontColor(0,0,0)
                DrawingMode(1)
                Locate(0,-1)
                DrawText(" fichier.txt "+Str(i))
                StopDrawing()
            EndIf
            
            SetGadgetState(#im_barre_progress,ImageID())
            ;MessageRequester("","",0)
            
        Until i=100
    EndIf
    thread=0
    
    
EndProcedure


If OpenWindow(#Window_0, 303, 103, 485, 250,  #PB_Window_SizeGadget|#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "virtual cb")
    If CreateGadgetList(WindowID())
        
        ButtonGadget(#Button_1, 280, 170, 170, 30, "lancer", #PB_Button_Toggle)
       ImageGadget(#im_barre_progress, 26,98, 346,10, 0)
        SetWindowCallback(@CallBack())
        
    EndIf
EndIf
InvalidateRect_(WindowID(0),0,1)
Repeat
    event = WaitWindowEvent()
    If event = #PB_EventGadget
        Select EventGadgetID()
            Case #Button_1
            ThreadID=CreateThread(@Copy_fichier(),ess)
        EndSelect
    EndIf 
Until event = #PB_EventCloseWindow
Vive le temps libre !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

En sélectionnant quelle image tu veux rafraichir dans la callback et dans le thread, ça à l'air de marcher.

Par contre, j'ai pas vérifié le thread.

Code : Tout sélectionner

Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #Frame3D_0 
  #IPAddress_0 
  #Button_0 
  #ProgressBar_0 
  #Button_1 
  #TrackBar_0 
  #Frame3D_2 
  #Frame3D_3 
  #Frame3D_4 
  #Text_1 
  #Text_2 
  #Text_3 
  #Image 
  #im_barre_progress 
EndEnumeration 
UseJPEGImageDecoder()
LoadImage(#Image, "D:\PureBasic\Compilers\collines.jpg") 

Procedure CallBack(Hnd,msg,wParam,lParam) 
  Resultat = #PB_ProcessPureBasicEvents 
  If msg = #WM_PAINT
    UseImage(#Image);<------- ici
    
    
    
    ps.PAINTSTRUCT 
    hdc=BeginPaint_(Hnd, ps) 
    hdc_source=CreateCompatibleDC_(hdc) 
    SelectObject_(hdc_source,UseImage(#Image)) 
    
    BitBlt_(hdc, 0, 0, 600, 400,hdc_source, 0, 0, #SRCCOPY) 
    
    EndPaint_(Hnd,ps) 
    DeleteDC_(hdc_source) 
  EndIf 
  ProcedureReturn Resultat 
EndProcedure 

Procedure Copy_fichier() 
  
  If CreateImage(#im_barre_progress, 346, 13) 
    ; If  StartDrawing(ImageOutput()) 
    ; 
    ; StopDrawing() 
    ; EndIf 
    
    
    Repeat 
      i=i+1 
      
      Delay(100) 
      
      UseImage(#im_barre_progress) ;<----- ici
      If  StartDrawing(ImageOutput()) 
        Box(0, 0, 346, 13,RGB(239,170,92)) 
        
        Box(0, 0, i*3.46, 13,RGB(40,185,56)) 
        FrontColor(0,0,0) 
        DrawingMode(1) 
        Locate(0,-1) 
        DrawText(" fichier.txt "+Str(i)) 
        StopDrawing() 
      EndIf 
      
      SetGadgetState(#im_barre_progress,ImageID()) 
      ;MessageRequester("","",0) 
      
    Until i=100 
  EndIf 
  thread=0 
  
EndProcedure 


If OpenWindow(#Window_0, 303, 103, 485, 250,  #PB_Window_SizeGadget|#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "virtual cb") 
  If CreateGadgetList(WindowID()) 
    
    ButtonGadget(#Button_1, 280, 170, 170, 30, "lancer", #PB_Button_Toggle) 
    ImageGadget(#im_barre_progress, 26,98, 346,10, 0) 
    SetWindowCallback(@CallBack()) 
    
  EndIf 
EndIf 
InvalidateRect_(WindowID(0),0,1) 
Repeat 
  event = WaitWindowEvent() 
  If event = #PB_EventGadget 
    Select EventGadgetID() 
      Case #Button_1 
        ThreadID=CreateThread(@Copy_fichier(),ess) 
    EndSelect 
  EndIf 
Until event = #PB_EventCloseWindow 
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Un truc que je n'avais pas vu:
Tu as un ImageGadget() nommé #im_barre_progress, et tu crée une image en lui donnant le même nom, et donc, le même index que ton gadget).

Dans ton cas, ça marche sans conflit, mais ça pourrait tout aussi bien planter!

Ce que j'en pense, mais je peux me tromper:
A éviter, dans la mesure du possible. C'est le genre de truc qui, en cas de bug, te fera passer un temps fou le nez dans le code à te demander pourquoi ça ne fonctionne pas
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Merci chriss cela marche impec ! :D
Tu as un ImageGadget() nommé #im_barre_progress, et tu crée une image en lui donnant le même nom, et donc, le même index que ton gadget).
Oui j'ai pris l'habitute de faire cela, comme ça, je sais quelle image mettre dans quel gadget, et cela à l'air de marcher.

Mais je tiens note de ta remarque, en ésperant m'en souvenir le jour ou je chercherais un bug.

Merci encore
Vive le temps libre !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

olivier a écrit :Merci chriss cela marche impec ! :D
Avec un seul "s", ça suffira :lol:
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Oupss :wink:
Vive le temps libre !
Répondre