Auf Mac OS X funktioniert der Code korrekt, dass heisst er wechselt den Status.
Auf Windows brauchst Du den Code nicht, da der Toggle-Button automatisch
den Status wechselt.
Dein Windows-Code sieht schon komischer aus, denn Du sagst:
Code: Alles auswählen
Wenn Status
setze Status
Andernfalls
Lösche Status
WennEnde
Es funktioniert auf jeden Fall auf Windows und Mac OS X unterschiedlich,
weil der Button auf Windows automatisch umschaltet, auf Mac OS X nicht.
EDIT:
Kleiner Workaround, dann ist es auf beiden OS gleich:
Code: Alles auswählen
Procedure ButtonState(ButtonID.i)
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
; on Mac OS X we need to switch the state manually
If GetToolBarButtonState(0, ButtonID.i)
SetToolBarButtonState(0, ButtonID.i, 0)
Else
SetToolBarButtonState(0, ButtonID.i, 1)
EndIf
CompilerEndIf
Debug GetToolBarButtonState(0,ButtonID)
EndProcedure
If OpenWindow(0, 100, 200, 195, 260, "ToolBar example", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
If CreateToolBar(0, WindowID(0))
ToolBarImageButton(1, CreateImage(0,16,16), #PB_ToolBar_Toggle)
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu : If EventMenu() = 1 : ButtonState(1) : EndIf
Case #PB_Event_CloseWindow : End
EndSelect
ForEver
EndIf
Auf Mac OS X muss man den Status also selbst updaten. Auf Windows lässt man das einfach weg.
Könnte man ruhig mal als Bug melden.