i ve started working on your problem

hang on

( note i m writing it in VB.NET express edition wich is free, not much syntax changes execpt in the properties of the classes

u ll be able to convert it easlily

)
EDIT :
http://lilbuh.free.fr/tvgui.pnghere's the full code:
the Window Class
Public Class clsGuiWindow
Private m_Title As String
Private m_Flags As Long
Private m_size As Size
Private m_location As System.Drawing.Point
Private m_BackColor As Integer = oGlobals.RGBA(0.9, 0.9, 0.9, 1)
Private m_FontColor As Integer = oGlobals.RGBA(1, 1, 1, 1)
Public Property GetWindowTitle() As String
Get
Return m_Title
End Get
Set(ByVal value As String)
m_Title = value
End Set
End Property
Public Property GetWindowFlags() As Long
Get
Return m_Flags
End Get
Set(ByVal value As Long)
m_Flags = value
End Set
End Property
Public Property Size() As Size
Get
Return m_Size
End Get
Set(ByVal value As Size)
m_size = value
End Set
End Property
Public Property Location() As System.Drawing.Point
Get
Return m_location
End Get
Set(ByVal value As System.Drawing.Point)
m_location = value
End Set
End Property
Public Property BackColor() As Integer
Get
Return m_BackColor
End Get
Set(ByVal value As Integer)
m_BackColor = value
End Set
End Property
Public Property FontColor() As Integer
Get
Return m_FontColor
End Get
Set(ByVal value As Integer)
m_FontColor = value
End Set
End Property
Public Sub Render()
o2D.ACTION_Begin2D()
o2D.DRAW_FilledBox(m_location.X, m_location.Y, m_location.X + m_size.Width, m_location.Y + m_size.Height, m_BackColor)
'White Lines
o2D.DRAW_Line(m_location.X + 1, m_location.Y + 1, m_location.X + 1, m_location.Y + m_size.Height - 2, oGlobals.RGBA(1, 1, 1, 1))
o2D.DRAW_Line(m_location.X + 1, m_location.Y + 1, m_location.X + m_size.Width - 2, m_location.Y + 1, oGlobals.RGBA(1, 1, 1, 1))
'Gray Lines
o2D.DRAW_Line(m_location.X + m_size.Width - 2, m_location.Y + 1, m_location.X + m_size.Width - 2, m_location.Y + m_size.Height - 2, oGlobals.RGBA(0.5, 0.5, 0.5, 1))
o2D.DRAW_Line(m_location.X + m_size.Width - 1, m_location.Y + m_size.Height - 2, m_location.X + 1, m_location.Y + m_size.Height - 2, oGlobals.RGBA(0.5, 0.5, 0.5, 1))
'Black Lines
o2D.DRAW_Line(m_location.X + m_size.Width - 1, m_location.Y, m_location.X + m_size.Width - 1, m_location.Y + m_size.Height - 1, oGlobals.RGBA(0, 0, 0, 1))
o2D.DRAW_Line(m_location.X + m_size.Width - 1, m_location.Y + m_size.Height - 1, m_location.X, m_location.Y + m_size.Height - 1, oGlobals.RGBA(0, 0, 0, 1))
'Title Bar
o2D.DRAW_FilledBox(m_location.X + 3, m_location.Y + 3, m_location.X + m_size.Width - 3, m_location.Y + 20, oGlobals.RGBA(0, 0, 0.5, 1), oGlobals.RGBA(0.651, 0.792, 0.941, 1), oGlobals.RGBA(0, 0, 0.5, 1), oGlobals.RGBA(0.651, 0.792, 0.941, 1))
oText.NormalFont_DrawText(m_Title, m_location.X + 5, m_location.Y + 5, m_FontColor)
o2D.ACTION_End2D()
End Sub
End Class
the GUI Class
Public Class clsGui
Private stWindowCol As New Collection
Public Sub CreateWindow(ByVal win As clsGuiWindow)
stWindowCol.Add(win)
End Sub
Public Sub RedrawGUI()
Dim window As New clsGuiWindow
For Each window In stWindowCol
window.Render()
Next
End Sub
End Class
The Render Loop:
Dim gui As New clsGui
Dim myWindow1 As New clsGuiWindow
Dim myWindow2 As New clsGuiWindow
myWindow1.Location = New System.Drawing.Point(10, 20)
myWindow1.Size = New Size(200, 100)
myWindow1.GetWindowTitle = "My Window 1"
myWindow2.Location = New System.Drawing.Point(150, 150)
myWindow2.Size = New Size(200, 200)
myWindow2.GetWindowTitle = "My Window 2"
gui.CreateWindow(myWindow1)
gui.CreateWindow(myWindow2)
Do
Application.DoEvents()
oTV.Clear()
gui.RedrawGUI()
oTV.RenderToScreen()
Loop Until oInput.IsKeyPressed(TrueVision3D.CONST_TV_KEY.TV_KEY_ESCAPE) = True
Engine_CleanUp()