Here is some example (just added some props) :PB wrote:Anyone know how to do this with two or more ComboBoxGadgets?
Code: Select all
Procedure ComboCallBack( hwnd.l, message.l, wParam.l, lParam.l )
oldcombproc = GetProp_(hwnd.l, "OldProc")
Result.l = CallWindowProc_(oldcombproc, hwnd, message, wParam, lParam )
If Result
If (message = #WM_CTLCOLOREDIT) Or (message = #WM_CTLCOLORLISTBOX)
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam,GetProp_(hwnd.l, "TextColor"))
SetBkColor_(wParam,GetProp_(hwnd.l, "BackColor"))
Result = GetProp_(hwnd.l, "BackBrush")
ElseIf message = #WM_DESTROY
RemoveProp_(hwnd.l, "OldProc")
RemoveProp_(hwnd.l, "TextColor")
RemoveProp_(hwnd.l, "BackColor")
DeleteObject_(GetProp_(hwnd.l, "BackBrush"))
RemoveProp_(hwnd.l, "BackBrush")
EndIf
EndIf
ProcedureReturn Result
EndProcedure
OpenWindow( 0, 200,400,200,100, "Colorisation et Callback", #PB_Window_SystemMenu)
CreateGadgetList( WindowID(0) )
ComboBoxGadget( 1, 10, 10, 180, 120, #PB_ComboBox_Editable )
AddGadgetItem(1, -1, "123" )
AddGadgetItem(1, -1, "456" )
AddGadgetItem(1, -1, "789" )
SetGadgetState(1,0)
ComboBoxGadget( 2, 10, 60, 180, 120, #PB_ComboBox_Editable )
AddGadgetItem(2, -1, "123" )
AddGadgetItem(2, -1, "456" )
AddGadgetItem(2, -1, "789" )
SetGadgetState(2,0)
SetProp_(GadgetID(1), "OldProc", SetWindowLong_(GadgetID(1), #GWL_WNDPROC, @ComboCallBack()) )
SetProp_(GadgetID(1), "TextColor", #White)
SetProp_(GadgetID(1), "BackColor", #Blue)
SetProp_(GadgetID(1), "BackBrush", CreateSolidBrush_(#Blue))
SetProp_(GadgetID(2), "OldProc", SetWindowLong_(GadgetID(2), #GWL_WNDPROC, @ComboCallBack()) )
SetProp_(GadgetID(2), "TextColor", #Red)
SetProp_(GadgetID(2), "BackColor", #White)
SetProp_(GadgetID(2), "BackBrush", CreateSolidBrush_(#White))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
End