Not pretty, but works(ish)...
Code:
TabCtrl_List:="Tab 1|Tab 2|Tab 3"
TabCtrl_List_Current:=TabCtrl_List
Gui, Add, Tab, vTab, %TabCtrl_List%
Gui, Tab, Tab 1
Gui, Add, Text, , Tab 1
Gui, Tab, Tab 2
Gui, Add, Text, , Tab 2
Gui, Tab, Tab 3
Gui, Add, Text, , Tab 3
Gui, Tab
Gui, Show, AutoSize Center
return
F9::
nt++
NewTab:="New Tab " nt
TabCtrl_List_Current.="|" NewTab
GuiControl, , Tab, |%TabCtrl_List_Current%
Gui, Tab, %NewTab%
Gui, Add, Text, , New Tab %nt%
Gui, Tab
return
...Bug: Add too many new Tabs & they wrap & then the initial controls are on top of the Tabs (cuz the initial controls position was calculated with a single line of tabs, before wrapping)...