Diese Nachricht kommt auch nicht wenn man die Maus übernicolaus hat geschrieben:Und auch hier bekommt man das event "#WM_CTLCOLORSTATIC" mit der messagenr. 312 nicht wenn man die maus in dem container bewegt.
ein Gadget bewegt, sondern wenn das Gadget (der Hintergrund)
neu gezeichnet werden muß.
Nimm mal das Fenster in Deinem Beispiel und schiebe es
aus dem Screen heraus, oder schiebe ein anderes Fenster
über das Static Control.
Dann muß das Control neu gezeichnet werden, und Du bekommst
auch diese Nachricht.
Hier nochmal verändert, so daß man es noch besser sieht:
Code: Alles auswählen
Global wnd_long.l
Global hBrush
hBrush = CreateSolidBrush_($A6CF42)
Procedure.l TestCallBack(WindowID, message, wParam, lParam)
If message = #WM_CTLCOLORSTATIC
msg$ = "Message: WM_CTLCOLORSTATIC"
SetBkMode_(wParam,#TRANSPARENT)
Result = hBrush
Else
msg$ = "Message: " + Str(message)
Result = CallWindowProc_(wnd_long, WindowID, message, wParam, lParam)
EndIf
If IsGadget(3)
AddGadgetItem(3,-1, msg$)
SendMessage_(GadgetID(3), #EM_LINESCROLL, 0, 1)
EndIf
ProcedureReturn Result
EndProcedure
OpenWindow(0, 0, 0, 200, 400, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Callbacktest")
CreateGadgetList(WindowID())
hedt = EditorGadget(3,0,110,200,290)
SendMessage_(GadgetID(3), #EM_SETTARGETDEVICE , 0, 0)
hcnd = ContainerGadget(0,0,0,200,100,#PB_Container_Double)
wnd_long = SetWindowLong_(hcnd, #GWL_WNDPROC, @TestCallBack())
hbtn = ButtonGadget(1,10,10,180,40,"test")
htx = TextGadget(4,10,60,180,18,"Staticcontrol")
CloseGadgetList()
Repeat:Until WaitWindowEvent() = #PB_EventCloseWindow
DeleteObject_(hBrush)