This works:
Code: Select all
EnableExplicit
Define CenterVertically.I
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
ImportC ""
gtk_label_set_yalign(*Label.GtkLabel, xalign.F)
EndImport
CompilerEndIf
OpenWindow(0, 270, 100, 310, 100, "Center text vertically")
TextGadget(0, 10, 10, 290, 40, "The quick brown fox jumps over the lazy dog.",
#PB_Text_Border | #PB_Text_Center)
ButtonGadget(1, 65, 60, 180, 25, "Toggle vertical centering")
Debug "GWL_STYLE = $" + Hex(GetWindowLongPtr_(GadgetID(0), #GWL_STYLE))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget() = 1
CenterVertically ! 1
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
gtk_label_set_yalign(GadgetID(0), CenterVertically * 0.5)
CompilerCase #PB_OS_MacOS
CocoaMessage(0, CocoaMessage(0, GadgetID(0), "cell"),
"_setVerticallyCentered:", CenterVertically)
CocoaMessage(0, GadgetID(0), "setNeedsDisplay:", #True)
CompilerCase #PB_OS_Windows
If CenterVertically
SetWindowLongPtr_(GadgetID(0), #GWL_STYLE, GetWindowLongPtr_(GadgetID(0), #GWL_STYLE) | #SS_CENTERIMAGE)
;
Else
SetWindowLongPtr_(GadgetID(0), #GWL_STYLE, GetWindowLongPtr_(GadgetID(0), #GWL_STYLE) & ~#SS_CENTERIMAGE)
EndIf
InvalidateRect_(GadgetID(0), #Null, #True)
Debug "GWL_STYLE = $" + Hex(GetWindowLongPtr_(GadgetID(0), #GWL_STYLE))
CompilerEndSelect
EndIf
EndSelect
ForEver