Squale il va falloir soigner un peu plus tes codes. Ton extrait est moisi !
Mettre un StringGadget sur une image n'est pas possible sans passer par un
API (
Application Programming Interface) propre à chaque system d'exploitation.
La solution que je te donne est propre à Microsoft. Les API ne sont pas documentés dans l'aide de Pure Basic (
Voir FAQ).
J'ai structuré et commenté un peu (beaucoup) ton code.
Code : Tout sélectionner
Enumeration #PB_Compiler_EnumerationValue
#Mainform1
#CallMainForm2
EndEnumeration
Enumeration #PB_Compiler_EnumerationValue
#Mainform2
#Scroll
#Image
#String
EndEnumeration
Define.l Event, WEvent, MEvent, GEvent, TEvent
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered
; Couleurs pour le TextGadget
Global textBGbrush, textFGcolor
textBGcolor = RGB(155, 200, 155)
textBGbrush = CreateSolidBrush_(textBGcolor)
textFGcolor = RGB(0, 100, 0)
;Fenêtre principale dans une procédure
Procedure Open_MainForm1()
OpenWindow(#Mainform1, 0, 0, 500, 700, "DELUGE v0.02", WindowStyle)
ButtonGadget(#CallMainForm2, 170, 126, 120, 24, "NOUVELLE FENETRE")
EndProcedure
;Fenetre secondaire dans une procédure
Procedure Open_MainForm2()
Protected Image
;Creation de l'image
Image = CreateImage(#PB_Any, 100, 100, 32) ;Création d'une image vierge
StartDrawing(ImageOutput(Image)) ;On commence à déssiner
Box(0, 0, 100, 100, RGB(255, 215, 0))
StopDrawing() ;On arrete de déssiner
OpenWindow(#Mainform2, 0, 0, 826, 600, "NOUVELLE FENTRE")
;SetWindowCallback(@WindowCallback())
ScrollAreaGadget(#Scroll , 0, 0 , 826, 600, 800, 1147)
StringGadget(#String, 10, 10, 80, 24, "", #PB_String_BorderLess)
;Image en dernier
ImageGadget(#Image, 0, 0 , 0, 0, ImageID(Image))
;Ajouter le style WS_CLIPSIBLINGS à l'ImageGadget
SetWindowLong_(GadgetID(#Image), #GWL_STYLE, GetWindowLong_(GadgetID(#Image), #GWL_STYLE) | #WS_CLIPSIBLINGS)
EndProcedure
;-Start
Open_MainForm1()
;Boucle évenementielle
Repeat
;Un évenement se produit
Event = WaitWindowEvent()
;Quelle est la fenêtre qui a crée l'évenement.
WEvent = EventWindow()
;Quelle est le gadget qui a crée l'évenement.
GEvent = EventGadget()
Select Event
Case #PB_Event_Gadget ;-Evenement gadgets
Select GEvent
Case #CallMainForm2
;Si la fenetre MainForm2 n'est pas ouverte : On l'ouvre
;Sinon on se positionne sur la fenetre Mainform2
If Not IsWindow(#Mainform2)
Open_MainForm2()
Else
SetActiveWindow(#Mainform2)
EndIf
EndSelect
Case #PB_Event_CloseWindow ;-Evenement fenetres
;Quelle est la fenetre qui se ferme ?
Select WEvent
Case #Mainform1
End
Case #Mainform2
CloseWindow(#Mainform2)
EndSelect
EndSelect
ForEver