Code : Tout sélectionner
Global editeur
Procedure Editeur(Window.l,Message,Wparam,lparam)
Editeur_Origin = GetProp_(Window,"Editeur_Origin")
Select Message
Case #WM_NCPAINT
result=CallWindowProc_(Editeur_Origin,Window,Message,Wparam,lparam)
Hdc=GetDC_(Window)
hpen=CreatePen_(#PS_SOLID,1,RGB(255,0,0))
If Window=editeur
SelectObject_(hdc,hpen)
MoveToEx_(hdc,-1,-1,#Null)
LineTo_(hdc,290-2,-1)
LineTo_(hdc,290-2,180-2)
LineTo_(hdc,-1,180-2)
SelectObject_(hdc,hpen2)
LineTo_(hdc,-1,-1)
EndIf
DeleteObject_(hpen)
ReleaseDC_(Window,Hdc)
ProcedureReturn result
EndSelect
ProcedureReturn CallWindowProc_(Editeur_Origin,Window,Message,Wparam,lparam)
EndProcedure
Procedure.l Editeur_Init(Window.l)
Editeur_Origin = GetProp_(Window,"Editeur_Origin")
If Editeur_Origin=0
Editeur_Origin = SetWindowLong_(Window,#GWL_WNDPROC,@Editeur())
SetProp_(Window,"Editeur_Origin",Editeur_Origin)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 400, 300, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
hbruh1=CreateSolidBrush_(RGB(255,255,0))
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, hbruh1)
InvalidateRect_(window0,0,1)
; Décommenter ces lignes, elles permettent d'épaissir la bordure
; en utilisant un container, on peut ainsi la colorier ou afficher une image
;
; Hcontainer=ContainerGadget(0, 30, 5, 296, 186, 0)
;----------------------------------------------
; hbruh2=CreateSolidBrush_(RGB(0,0,255))
;--------------------- ou ---------------------
; Hbitmap=LoadImage(0,"Votre Image")
; hbruh2=CreatePatternBrush_(Hbitmap)
;----------------------------------------------
; SetClassLong_(Hcontainer, #GCL_HBRBACKGROUND, hbruh2)
; InvalidateRect_(Hcontainer,0,1)
editeur=EditorGadget(1, 3, 3, 290, 180)
SetWindowLong_(editeur, #GWL_STYLE, GetWindowLong_(editeur, #GWL_STYLE)|#WS_BORDER)
SetWindowLong_(editeur, #GWL_EXSTYLE, GetWindowLong_(editeur, #GWL_EXSTYLE)!#WS_EX_CLIENTEDGE)
Editeur_Init(editeur)
For a = 0 To 25
AddGadgetItem(1, a, "Ligne "+Str(a))
Next
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Menu
Select EventMenu()
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow
DeleteObject_(hbruh1)
DeleteObject_(hbruh2)
EndIf