yeah, i always use the frame child thingy to - mostly because I always end up moving and adjusting and tweaking the form afterwards, its a whole lot easier to just re-position the frame, then have to re-calculate all the child controls as well. here's the picturebox version of the script. it would simulate (pretty closely) how a dotnet pane object would behave (except for the etched border and caption, which isn't there) - but you could draw your own if you wanted ...

HEY Wiz - How about getting a little splash of color in those forms of yours, eh ? I always get much high praise from Jochen for my splendid use of color - right J ?

code:
Break On

$frmMain = CreateObject("Kixtart.Form")
$frmMain.Size = 400,200
$frmMain.SysMenu = 0
$frmMain.Text = "Welcome to the @DOMAIN Domain"
$frmMain.Center
$frmMain.BackColor = MediumAquaMarine

$fraStatus = $frmMain.PictureBox
$fraStatus.BackColor = IndianRed
$fraStatus.Location = 10,10
$fraStatus.Right = $frmMain.ClientWidth - 10
$fraStatus.Bottom = 0.70 * $frmMain.ClientHeight - 10
$fraStatus.Text = " Progress "

$prgStatus = $fraStatus.ProgressBar
$prgStatus.BackColor = Khaki
$prgStatus.ForeColor = $frmMain.BackColor
$prgStatus.BorderStyle = 2
$prgStatus.Size = 260, 17
$prgStatus.Center
$prgStatus.Style = 1
$prgStatus.Top = 40

$btnDo = $frmMain.Button
$btnDo.Text = "Do"
$btnDo.OnClick = "btnDo_Click"
$btnDo.Center
$btnDo.Top = $fraStatus.Bottom + 10

Function btnDo_Click
$prgStatus.Visible = Not $prgStatus.Visible
If $prgStatus.Visible
For $i = 0 to $prgStatus.Max
$prgStatus.Value = $i
Sleep 0.010
Next
$prgStatus.Value = 0
EndIf
EndFunction

$frmMain.Center
$frmMain.Show
While $frmMain.Visible
$=Execute($frmMain.DoEvents)
Loop