@sharkpeter
ich vermute mal, weil nicht jeder das so haben will. die sache an sich, ist aber kein problem. das lässt sich mit einem callback ganz simpel lösen.
hier ganz auf die schnelle, ein beispiel wie man es in etwa hinkriegen könnte. der code ist sicherlich noch verbesserungswürdig, aber es zeigt deutlich das prinzip auf was man achten sollte.
Code: Alles auswählen
;/ Default-Button Example by nco2k
#Button_A = 0
#Button_B = 1
#Button_Exit = 2
#Shortcut_Escape = 0
#Shortcut_Return = 1
Global DefaultButton.l
Procedure WndProc(hWnd, Msg, wParam, lParam)
If Msg = #WM_ACTIVATE
If hWnd = WindowID(0)
If (wParam & $FFFF) = #WA_INACTIVE
SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, 0, #True)
SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, 0, #True)
SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, 0, #True)
Else
If DefaultButton = #Button_A
SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
ElseIf DefaultButton = #Button_B
SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
ElseIf DefaultButton = #Button_Exit
SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
EndIf
EndIf
EndIf
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 320, 95, #PB_Window_TitleBar | #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Default-Button Example")
If CreateGadgetList(WindowID(0))
AdvancedGadgetEvents(#True)
ButtonGadget(#Button_A, 110, 5, 100, 25, "A")
ButtonGadget(#Button_B, 110, 35, 100, 25, "B", #PB_Button_Default)
DefaultButton = #Button_B
ActivateGadget(#Button_B)
ButtonGadget(#Button_Exit, 110, 65, 100, 25, "Exit")
EndIf
AddKeyboardShortcut(0, #PB_Shortcut_Escape, #Shortcut_Escape)
AddKeyboardShortcut(0, #PB_Shortcut_Return, #Shortcut_Return)
SetWindowCallback(@WndProc())
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenuID()
Case #Shortcut_Escape
End
Case #Shortcut_Return
If DefaultButton = #Button_A
Debug "A"
ElseIf DefaultButton = #Button_B
Debug "B"
ElseIf DefaultButton = #Button_Exit
End
EndIf
EndSelect
Case #PB_Event_Gadget
Select EventGadgetID()
Case #PB_Event_Gadget
Case #Button_A
Select EventType()
Case #PB_EventType_Focus
SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, 0, #True)
SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, 0, #True)
SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
DefaultButton = #Button_A
Case #PB_EventType_LeftClick
Debug "A"
EndSelect
Case #Button_B
Select EventType()
Case #PB_EventType_Focus
SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, 0, #True)
SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, 0, #True)
SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
DefaultButton = #Button_B
Case #PB_EventType_LeftClick
Debug "B"
EndSelect
Case #Button_Exit
Select EventType()
Case #PB_EventType_Focus
SendMessage_(GadgetID(#Button_A), #BM_SETSTYLE, 0, #True)
SendMessage_(GadgetID(#Button_B), #BM_SETSTYLE, 0, #True)
SendMessage_(GadgetID(#Button_Exit), #BM_SETSTYLE, #BS_DEFPUSHBUTTON, #True)
DefaultButton = #Button_Exit
Case #PB_EventType_LeftClick
End
EndSelect
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
End
hoffe nur, daß keine bugs drin sind. hab grad nicht so viel zeit um mich darum zu kümmern. ansonsten viel spass!
c ya,
nco2k