plusieurs setwindowcallback dans une fenetre ?
Publié : mar. 25/avr./2006 15:27
bonjour,
peut-on avoir plusieurs appels de setwindowcallback dans une fenetre ?
peut-on avoir plusieurs appels de setwindowcallback dans une fenetre ?
Forums PureBasic - Français
https://www.purebasic.fr/french/
Code : Tout sélectionner
Macro SetWindowCallback2(hWnd, UserCallBack)
SetWindowLong_(hWnd, #GWL_WNDPROC, UserCallBack)
EndMacro
Global defTreeCB.l
Global defWindowCB1.l
Global defWindowCB2.l
Global defWindowCB3.l
Procedure.l myTreeCallBack(hWnd.l, uMsg.l, wParam.l, lParam.l)
Select uMsg
Case #WM_NOTIFY : Debug "tree: notify"
Case #WM_MOUSEMOVE : Debug "tree: mousemove"
Case #WM_LBUTTONUP : Debug "tree: lbuttonup"
EndSelect
ProcedureReturn CallWindowProc_(defTreeCB, hWnd, uMsg, wParam, lParam)
EndProcedure
Procedure.l myWindowCallBack1(hWnd.l, uMsg.l, wParam.l, lParam.l)
Select uMsg
Case #WM_CLOSE : Debug "window1: close"
Case #WM_COMMAND : Debug "window1: command"
Case #WM_MOUSEMOVE : Debug "window1: mousemove"
EndSelect
ProcedureReturn CallWindowProc_(defWindowCB1, hWnd, uMsg, wParam, lParam)
EndProcedure
Procedure.l myWindowCallBack2(hWnd.l, uMsg.l, wParam.l, lParam.l)
Select uMsg
Case #WM_CLOSE : Debug "window2: close"
Case #WM_COMMAND : Debug "window2: command"
Case #WM_MOUSEMOVE : Debug "window2: mousemove"
EndSelect
ProcedureReturn CallWindowProc_(defWindowCB2, hWnd, uMsg, wParam, lParam)
EndProcedure
Procedure.l myWindowCallBack3(hWnd.l, uMsg.l, wParam.l, lParam.l)
Select uMsg
Case #WM_CLOSE : Debug "window3: close"
Case #WM_COMMAND : Debug "window3: command"
Case #WM_MOUSEMOVE : Debug "window3: mousemove"
EndSelect
ProcedureReturn CallWindowProc_(defWindowCB3, hWnd, uMsg, wParam, lParam)
EndProcedure
If OpenWindow(0, 0, 0, 320, 240, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
TreeGadget(0, 5, 5, 310, 100)
AddGadgetItem(0, 0, "test")
defTreeCB = SetWindowCallback2(GadgetID(0), @myTreeCallBack())
defWindowCB1 = SetWindowCallback2(WindowID(0), @myWindowCallBack1())
defWindowCB2 = SetWindowCallback2(WindowID(0), @myWindowCallBack2())
defWindowCB3 = SetWindowCallback2(WindowID(0), @myWindowCallBack3())
EndIf
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
End