Affichage Fenetre
Affichage Fenetre
Bonjour,
Grande satisfaction d'avoir acquérit PureBasic et enfin découvrir la programmation...
Je suis en train de composer un petit programme qui lit des vidéos avec des options qui ouvre des fentres d'option pour écrire certaines valeurs dans des fichiers Ini.
Ce que je ne comprends pas, si je bascule d'un programme à un autre (alt+tab ex:PureBasic -Exploreur Windows) je perds l'affichage de la lecture de la vidéo quand je retourne dans mon programme...Pourquoi?
Dernière question, existe t'il une documentation en français pour PureVision?
Je vous remercie chaleureusement pour votre réponse avec l'espoir d'avoir de nouveaux échange sur le forum...
Grande satisfaction d'avoir acquérit PureBasic et enfin découvrir la programmation...
Je suis en train de composer un petit programme qui lit des vidéos avec des options qui ouvre des fentres d'option pour écrire certaines valeurs dans des fichiers Ini.
Ce que je ne comprends pas, si je bascule d'un programme à un autre (alt+tab ex:PureBasic -Exploreur Windows) je perds l'affichage de la lecture de la vidéo quand je retourne dans mon programme...Pourquoi?
Dernière question, existe t'il une documentation en français pour PureVision?
Je vous remercie chaleureusement pour votre réponse avec l'espoir d'avoir de nouveaux échange sur le forum...
Je te souhaite la bienvenue sur le Forum
je ne suis pas sur, mais essaye avec :
@++

je ne suis pas sur, mais essaye avec :
Code : Tout sélectionner
UpdateWindow_(WindowID())
bonjour je ne sait pas si mon probleme est dans le meme genre mais sa y ressemble .
moi j'ai une fenetre avec une image en fond, mais des que je la reduit ou que je met une autre fenetre devant et que je revient sur ma fenetre, mes bouttons sont cacher par l'image existe t-il un moyen d'eviter sa je pense que oui mais je ne voie pas .
j'ai composer un code vite fait histoire de voir
voila
merci
moi j'ai une fenetre avec une image en fond, mais des que je la reduit ou que je met une autre fenetre devant et que je revient sur ma fenetre, mes bouttons sont cacher par l'image existe t-il un moyen d'eviter sa je pense que oui mais je ne voie pas .
j'ai composer un code vite fait histoire de voir
Code : Tout sélectionner
Enumeration
#a=0
#b=1
#c=2
#d=3
#e=4
#f=5
#g=6
EndEnumeration
If OpenWindow(0, 0, 0, 600, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "exemple avec button")And CreateGadgetList(WindowID(0));#PB_Window_ScreenCentered sert a metre automatiquement la fenetre au centre de l'ecrant , #PB_Window_MinimizeGadget sert a metre le boutton en haut a droite pour metre la fenetre dans la barre des taches , #PB_Window_maximizeGadget lui sert a agrandire la fenetre sur tout l'ecrant c'est entre la croix et minimizegadget
ButtonGadget(#a, 0, 1, 60, 60, "droite", #PB_Button_Right) ;#PB_Button_Right Aligne le texte du bouton à droite
ButtonGadget(#b, 108, 1, 60, 60, "gauche", #PB_Button_Left) ;#PB_Button_left Aligne le texte du bouton à gauche
ButtonGadget(#c, 216, 1, 60, 60, "normal") ; ce boutton est un boutton normal (standard)
ButtonGadget(#f, 332, 1, 60, 60, "toggle", #PB_Button_Toggle) ;#PB_Button_Toggle sert a alterne l'état appuye et normal
ButtonGadget(#g, 450, 1, 60, 60, "disable") : DisableGadget(#g, 1) ;DisableGadget(#g, 1) sert a la fonction disable sa veut dire qu'il n'est pas activer
; etceterra.....
If CreateMenu(0, WindowID()) ; on cree la barre de menu position 1 (en haut a gauche de la fenetre)
MenuTitle("menu") ; le nom qui s'affiche dans la barre des menu
MenuItem(1, "Ouvrir") ; le nom qui s'affiche quand on clic sur menu le 1er
MenuItem(2, "Sauvegarder") ; le 2eme
MenuItem(3, "Fermer") ; le 3eme
; etceterra.....
MenuTitle("edition") ; on cree edition dans la barre de menu position 2 (en haut a coter de la position 1)
MenuItem(4, "annuler") ; le nom qui s'affiche quand on clic sur edition 1er
MenuItem(5, "copier") ; le 2eme
MenuItem(6, "coller") ; le 3eme
; etceterra.....
MenuTitle("disable") ; on cree disable dans la barre de menu position 3
MenuItem(7, "activer") ; le boutton qui s'affiche est activer
MenuItem(8, "desactiver") ; le boutton qui s'affiche n'est pas activer
DisableMenuItem(8, 3) ; ceci sert a desactiver un boutton la c'est le 2eme car (8,3) le 8 c'est le numero du boutton et le 3 c'est la position du menu que l'on veut desactiver la c'est menu "disable donc le troisieme menu"
If LoadImage(10, "d:/windows/Vent de prairie.bmp")
ImageGadget(10, 10,10,100,83,UseImage(10))
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow ; fermer la fenetre avec la croix
EndIf
EndIf
voila

Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
au faite pour le code c'est a vous de metre une image
par exemple 
Code : Tout sélectionner
If LoadImage(10, "c:/windows/Vent de prairie.bmp")
ImageGadget(10, 10,10,100,83,UseImage(10))
EndIf

Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Essaye ça!
Code : Tout sélectionner
UseJPEGImageDecoder()
Enumeration
#a=0
#b=1
#c=2
#d=3
#e=4
#f=5
#g=6
EndEnumeration
LoadImage(10, "D:\PureBasic\Compilers\collines.jpg")
Procedure CallBack(Hnd,msg,wParam,lParam)
Resultat = #PB_ProcessPureBasicEvents
If msg = #WM_PAINT Or msg = #WM_ACTIVATE
StartDrawing(WindowOutput())
DrawImage(UseImage(10), 0, 0)
StopDrawing()
ResizeGadget(#a, -1, -1, -1, -1)
ResizeGadget(#b, -1, -1, -1, -1)
ResizeGadget(#c, -1, -1, -1, -1)
ResizeGadget(#f, -1, -1, -1, -1)
ResizeGadget(#g, -1, -1, -1, -1)
EndIf
ProcedureReturn Resultat
EndProcedure
If OpenWindow(0, 0, 0, 600, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "exemple avec button")And CreateGadgetList(WindowID(0));#PB_Window_ScreenCentered sert a metre automatiquement la fenetre au centre de l'ecrant , #PB_Window_MinimizeGadget sert a metre le boutton en haut a droite pour metre la fenetre dans la barre des taches , #PB_Window_maximizeGadget lui sert a agrandire la fenetre sur tout l'ecrant c'est entre la croix et minimizegadget
ButtonGadget(#a, 0, 1, 60, 60, "droite", #PB_Button_Right) ;#PB_Button_Right Aligne le texte du bouton à droite
ButtonGadget(#b, 108, 1, 60, 60, "gauche", #PB_Button_Left) ;#PB_Button_left Aligne le texte du bouton à gauche
ButtonGadget(#c, 216, 1, 60, 60, "normal") ; ce boutton est un boutton normal (standard)
ButtonGadget(#f, 332, 1, 60, 60, "toggle", #PB_Button_Toggle) ;#PB_Button_Toggle sert a alterne l'état appuye et normal
ButtonGadget(#g, 450, 1, 60, 60, "disable") : DisableGadget(#g, 1) ;DisableGadget(#g, 1) sert a la fonction disable sa veut dire qu'il n'est pas activer
; etceterra.....
If CreateMenu(0, WindowID()) ; on cree la barre de menu position 1 (en haut a gauche de la fenetre)
MenuTitle("menu") ; le nom qui s'affiche dans la barre des menu
MenuItem(1, "Ouvrir") ; le nom qui s'affiche quand on clic sur menu le 1er
MenuItem(2, "Sauvegarder") ; le 2eme
MenuItem(3, "Fermer") ; le 3eme
; etceterra.....
MenuTitle("edition") ; on cree edition dans la barre de menu position 2 (en haut a coter de la position 1)
MenuItem(4, "annuler") ; le nom qui s'affiche quand on clic sur edition 1er
MenuItem(5, "copier") ; le 2eme
MenuItem(6, "coller") ; le 3eme
; etceterra.....
MenuTitle("disable") ; on cree disable dans la barre de menu position 3
MenuItem(7, "activer") ; le boutton qui s'affiche est activer
MenuItem(8, "desactiver") ; le boutton qui s'affiche n'est pas activer
DisableMenuItem(8, 3) ; ceci sert a desactiver un boutton la c'est le 2eme car (8,3) le 8 c'est le numero du boutton et le 3 c'est la position du menu que l'on veut desactiver la c'est menu "disable donc le troisieme menu"
SetWindowCallback(@CallBack())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow ; fermer la fenetre avec la croix
EndIf
EndIf
Il y a quand même un bug dans la callback, quand tu fermes la fenêtre, le debugger affiche "#Image Object not initialized"venom a écrit :cool![]()
exelent merci chris j'ai vu quoi maintenant merci pour cette reponce efficasse et rapide chapeau
![]()
@++
Il faut mettre "If (msg = #WM_PAINT Or msg = #WM_ACTIVATE) And ImageID()".


donc comme tu a dit j'ai mis
Code : Tout sélectionner
If (msg = #WM_PAINT Or msg = #WM_ACTIVATE) And ImageID()".
Code : Tout sélectionner
If msg = #WM_PAINT Or msg = #WM_ACTIVATE

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
EndEnumeration
LoadImage(#image, "c:/fond.bmp")
Procedure CallBack(Hnd,msg,wParam,lParam)
Resultat = #PB_ProcessPureBasicEvents
If (msg = #WM_PAINT Or msg = #WM_ACTIVATE) And ImageID()
StartDrawing(WindowOutput())
DrawImage(UseImage(#image), 0, 0,485,250)
StopDrawing()
ResizeGadget(#Frame3D_0, -1, -1, -1, -1)
ResizeGadget(#IPAddress_0, -1, -1, -1, -1)
ResizeGadget(#Button_0, -1, -1, -1, -1)
ResizeGadget(#ProgressBar_0, -1, -1, -1, -1)
ResizeGadget(#Button_1, -1, -1, -1, -1)
ResizeGadget(#TrackBar_0, -1, -1, -1, -1)
ResizeGadget(#Frame3D_2, -1, -1, -1, -1)
ResizeGadget(#Frame3D_3, -1, -1, -1, -1)
ResizeGadget(#Frame3D_4, -1, -1, -1, -1)
ResizeGadget(#text_1, -1, -1, -1, -1)
ResizeGadget(#text_2, -1, -1, -1, -1)
ResizeGadget(#text_3, -1, -1, -1, -1)
EndIf
ProcedureReturn Resultat
EndProcedure
If OpenWindow(#Window_0, 303, 103, 485, 250, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "virtual cb")
If CreateGadgetList(WindowID())
Frame3DGadget(#Frame3D_0, 5, 5, 235, 240, "", #PB_Frame3D_Double)
IPAddressGadget(#IPAddress_0, 35, 55, 175, 20)
ButtonGadget(#Button_0, 35, 120, 175, 35, "connexion", #PB_Button_Default)
ProgressBarGadget(#ProgressBar_0, 35, 195, 175, 15, 0, 10)
ButtonGadget(#Button_1, 280, 170, 170, 30, "parler", #PB_Button_Toggle)
TrackBarGadget(#TrackBar_0, 280, 50, 170, 15, 0, 10)
Frame3DGadget(#Frame3D_2, 270, 155, 190, 55, "", #PB_Frame3D_Double)
Frame3DGadget(#Frame3D_3, 270, 30, 190, 55, "", #PB_Frame3D_Double)
TextGadget(#Text_1, 290, 10, 155, 20, " volume du micro")
TextGadget(#Text_2, 275, 135, 180, 15, " appuillez pour parler")
TextGadget(#Text_3, 45, 30, 155, 20, "entree l'adresse ip du recepteur")
Frame3DGadget(#Frame3D_4, 245, 5, 235, 240, "", #PB_Frame3D_Double)
SetGadgetState(#TrackBar_0, 100) : volume = 100
SetWindowCallback(@CallBack())
EndIf
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
Select EventGadgetID()
EndSelect
EndIf
Until Event = #PB_EventCloseWindow

Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz




Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Ce que j'ai dis n'est pas tout à fait exact, comme les frames ne sont pas des gadgets au sens window, elles sont prises en compte aussi mais on doit pouvoir les dessiner séparément avec le Hdc de chaque fenêtre.
Il a été démontré sur le Forum Anglais qu'il valait mieux utiliser BeginPaint pour dessiner sur la fenêtre.
Cet exemple fonctionne bien chez moi:
Il a été démontré sur le Forum Anglais qu'il valait mieux utiliser BeginPaint pour dessiner sur la fenêtre.
Cet exemple fonctionne bien chez moi:
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
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
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())
Frame3DGadget(#Frame3D_0, 5, 5, 235, 240, "", #PB_Frame3D_Double)
IPAddressGadget(#IPAddress_0, 35, 55, 175, 20)
ButtonGadget(#Button_0, 35, 120, 175, 35, "connexion", #PB_Button_Default)
ProgressBarGadget(#ProgressBar_0, 35, 195, 175, 15, 0, 10)
ButtonGadget(#Button_1, 280, 170, 170, 30, "parler", #PB_Button_Toggle)
TrackBarGadget(#TrackBar_0, 280, 50, 170, 15, 0, 10)
Frame3DGadget(#Frame3D_2, 270, 155, 190, 55, "", #PB_Frame3D_Double)
Frame3DGadget(#Frame3D_3, 270, 30, 190, 55, "", #PB_Frame3D_Double)
TextGadget(#Text_1, 290, 10, 155, 20, " volume du micro")
TextGadget(#Text_2, 275, 135, 180, 15, " appuillez pour parler")
TextGadget(#Text_3, 45, 30, 155, 20, "entree l'adresse ip du recepteur")
Frame3DGadget(#Frame3D_4, 245, 5, 235, 240, "", #PB_Frame3D_Double)
SetGadgetState(#TrackBar_0, 100) : volume = 100
SetWindowCallback(@CallBack())
EndIf
EndIf
InvalidateRect_(WindowID(0),0,1)
Repeat
event = WaitWindowEvent()
If event = #PB_EventGadget
Select EventGadgetID()
EndSelect
EndIf
Until event = #PB_EventCloseWindow
salut nico, chez moi aussi le code fonctionne bien .
mais je ne connaissais pas la fonction "BeginPaint" fodra que je regarde bien le code est essayer de comprendre. encore merci nico
chris: bin preso je ne sait pas gerer les libs et tout autres fichier exterieur
pourtant sa fait un moment que je fait un peut de programmation mais malhereusement pas asser de temps pour moi evoluer
. je suis encore au stade debutant
mais j'espert un jour savoir utiliser ou meme cree des libs et tout. fin sa on vera par la suite
. deja je vais essayer de finir mon programme ensuite on verra.
encore merci a vous
@++
mais je ne connaissais pas la fonction "BeginPaint" fodra que je regarde bien le code est essayer de comprendre. encore merci nico

chris: bin preso je ne sait pas gerer les libs et tout autres fichier exterieur






encore merci a vous
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Petite modif du code de Nico, pour que les textes n'aient pas le fond gris de la fenêtre.
Ajoute ça au début de la callback, sous "If msg = #WM_PAINT"
et retire les trois TextGadget() dans la GadgetList()
Et j'ai pas pu m'en empêcher, j'ai corrigé les fôtes dortografe

Ajoute ça au début de la callback, sous "If msg = #WM_PAINT"
Code : Tout sélectionner
UseImage(#Image)
StartDrawing(ImageOutput())
DrawingMode(1):DrawingFont(GetStockObject_(#DEFAULT_GUI_FONT))
Locate(320, 35) : DrawText("Volume du micro")
Locate(315,135) : DrawText("Appuyez pour parler")
Locate(45,35) : DrawText("Entrez l'adresse IP du récepteur")
StopDrawing()
... et la suite du code est la même...
Et j'ai pas pu m'en empêcher, j'ai corrigé les fôtes dortografe

