A example:
Code: Select all
Global OriginProc.i
#GCLP_WNDPROC = -24
Procedure.l SuperClassingWindow(hWnd.i, Msg.l, wParam.i, lParam.i)
Protected ID.l
ID = GetDlgCtrlID_(hwnd)
Select Msg
Case #BM_SETSTATE
Select ID
Case 11
Select wparam
Case 0
Debug "Relaché button 11"
Case 1
Debug "Appuyé button 11"
EndSelect
Case 12
Select wparam
Case 0
Debug "Relaché button 12"
Case 1
Debug "Appuyé button 12"
EndSelect
Case 13
Select wparam
Case 0
Debug "Relaché button 13"
Case 1
Debug "Appuyé button 13"
EndSelect
EndSelect
EndSelect
ProcedureReturn CallWindowProc_(OriginProc, hWnd, Msg, wParam, lParam)
EndProcedure
If OpenWindow(0, 0, 0, 222, 200, "ButtonGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 10, 70, 200, 20, "Texte aligné à droite", #PB_Button_Right)
;Doesn't work for the first Button
OriginProc = SetClassLongPtr_(GadgetID(0), #GCLP_WNDPROC, @SuperClassingWindow())
Debug OriginProc
;Destroy the first Button
FreeGadget(0)
ButtonGadget(11, 10, 70, 200, 20, "Texte aligné à droite", #PB_Button_Right)
ButtonGadget(12, 10, 100, 200, 60, "Texte sur plusieurs lignes (les textes longs retournent automatiquement à la ligne)", #PB_Button_MultiLine)
ButtonGadget(13, 10, 170, 200, 20, "Bouton à bascule", #PB_Button_Toggle)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf