Well, I don't know if this will work but here's a simple Windows GUI that I wrote:
Function Group(x,y,x2,y2,text$)
back = rgb(212,208,200)
set text font "ms sans serif"
set text size 12
set text to bold
rem Background
ink back,0
box x,y,x2,y2
rem Line
ink rgb(192,192,192),0
LineBox(x+6,y+6,x2-4,y2-4)
ink rgb(92,92,92),0
LineBox(x+5,y+5,x2-5,y2-5)
rem Text background
ink back,0
box x+2,y+2,x+2+text width(text$),y+2+text height(text$)
ink 0,0
text x+2,y+2,text$
set text to normal
EndFunction
Function LineBox(x,y,x2,y2)
line x,y,x2,y
line x,y2,x2,y2
line x,y,x,y2
line x2,y,x2,y2
EndFunction
Function Checkbox(x,y,text$,value)
back = rgb(212,208,200)
rem Background
ink back,0
box x,y,x+text width(text$),y+text height(text$)
rem Box for check
ink 0,0
LineBox(x+1,y+1,x+11,y+11)
rem If we are checked
if value = 1
rem Check
Box x+4,y+4,x+9,y+9
rem Mouseover check
if Mouseoverarea(x+1,y+1,x+11,y+11)=1
ink rgb(255,255,255),0
box x+5,y+5,x+8,y+8
ink app_text,0
endif
endif
rem Text
text x+15,y+1,text$
rem Feedback
if mouseoverarea(x+1,y+1,x+11,y+11)=1
if value = 0 and mouseclick()=1 then finvalue = 1
if value = 1 and mouseclick()=1 then finvalue = 0
ink app_hovertext,0
text x+15,y+1,text$
ink 0,0
endif
EndFunction finvalue
Function ChkCheckbox(x,y,text$,value)
rem Feedback
if mouseoverarea(x,y,x+15+text width(text$),y+1+text height(text$))=1
if value = 0 and mouseclick()=1 then finvalue = 1
if value = 1 and mouseclick()=1 then finvalue = 0
else
finvalue = value
endif
EndFunction finvalue
Function Button(x,y,width,height,text$,Value,Tooltip$)
rem Bondaries
x2 = x + width
y2 = y + height
rem Colours
if Mouseoverarea(x,y,x2,y2)=1 and mouseclick()=1
back = rgb(212,208,200)
col1 = rgb(90,90,90)
col2 = rgb(150,150,150)
col3 = rgb(255,255,255)
else
back = rgb(212,208,200)
col1 = rgb(255,255,255)
col2 = rgb(150,150,150)
col3 = rgb(90,90,90)
endif
rem Back
ink back,0
box x,y,x2,y2
rem Lines
ink col1,0
line x,y,x2,y
line x,y,x,y2
line x+1,y+1,x2+1,y+1
line x+1,y+1,x+1,y2+1
ink col2,0
line x,y2,x2,y2
line x2,y,x2,y2
ink col3,0
line x+1,y2+1,x2+1,y2+1
line x2+1,y+1,x2+1,y2+1
rem Text
tx = x + int(((x2-x)/2))
ty = y + int(((y2-y)/2)) - int((text size()/2))
ink 0,0
center text tx,ty,text$
rem Feedback
if mouseoverarea(x,y,x2,y2)=1
over = 1
if mouseclick()=1 then over=2
if mouseclick()=0 and value = 2 then over= 3
endif
rem Tooltip
if mouseoverarea(x,y,x2,y2)=1
tx = x + 10
ty = y2 + 10
tx2 = tx + text width(Tooltip$)
ty2 = ty + text height(Tooltip$)
ink RGB(255,255,236),0
box tx,ty,tx2,ty2
ink 0,0
LineBox(tx-1,ty-1,tx2+1,ty2+1)
ink 0,0
text tx,ty,Tooltip$
endif
EndFunction over
Function Label(x,y,text$)
text x,y,text$
EndFunction
Function MouseOverArea(x,y,x2,y2)
if mousex() > x and mousey() > y and mousex() < x2 and mousey() < y2 then over=1
endfunction over
Functions:
Group(x,y,x2,y2,text$) (similar to VB's Frame)
LineBox(x,y,x2,y2) (needed internally)
Checkbox(x,y,text$,value) - Draws a checkbox depending on input (see below)
ChkCheckbox(x,y,text$,value) - Will perform check on checkbox (changes value depending on clicking)
Button(x,y,width,height,text$,Value,Tooltip$) - Will draw a button
Label(x,y,text$) - draws a label
Usage:
From my own program
Menus:
if mouseclick()=0 then down = 0
rem Item groups
Group(0,0,screen width(),60,"Information")
Group(0,60,160,240,"Display")
Group(0,240,160,screen height(),"Object Animation")
rem Checkboxes
Checkbox(10,80,"Render wireframe",wire)
Checkbox(10,95,"Render skin (texture)",skin)
Checkbox(10,110,"Cull polygons",cull)
Checkbox(10,125,"Render light",light)
Checkbox(10,140,"Render ambient light",amblight)
Checkbox(10,155,"Show limb names",limbs)
rem Now get feedback
if mouseclick()=1 and down = 0
wire = ChkCheckbox(10,80,"Render wireframe",wire)
skin = ChkCheckbox(10,95,"Render skin (texture)",skin)
cull = ChkCheckbox(10,110,"Cull polygons",cull)
light = ChkCheckbox(10,125,"Render light",light)
amblight = ChkCheckbox(10,140,"Render ambient light",amblight)
limbs = ChkCheckbox(10,155,"Show limb names",limbs)
down = 1
endif
Load = Button(10,200,100,30,"Load new model...",Load,"Load another object")
Save = Button(10,400,100,30,"Save model",Save,"Save this current object")
If Load = 3 then goSub Loadmodel : Load = 0
If Save = 3 then goSub Savemodel : Save = 0
rem Animation
forwards = Button(9,260,20,20,"«",forwards,"Speed up")
If forwards = 3 then inc sf
backwards = Button(132,260,20,20,"»",backwards,"Slow down")
If backwards = 3 then dec sf
if sf < 1 then sf = 1
Play = Button(30,260,50,20,"Play",play,"Play object's animation")
If play = 3 then loop object 1 : loop object 2 : play = 0
stop = Button(81,260,50,20,"Stop",stop,"Stop object's animation")
If stop = 3 then stop object 1 : stop object 2 : stop = 0
return
General guide:
Buttonname = button(10,10,20,20,"Caption",Buttonname,"Tooltiptext"
I'll probable release this when finished.
You are the

th person to view this signature.
Programmers don't die, they just
Gosub without
return....