Animado por vuestras propuestas le he dado vueltas al tema y creo que ya lo tengo. La solución consta de un formulario al que he llamado "_ventana" a falta de mejores propuestas (no hay muchos sinónimos de ventana en inglés y ninguno me gustó mucho).
El formulario _ventana:
y un módulo mVentana que contiene una sola función "Creaventana".
Código:
Public Sub CreaVentana(f As Form) As _ventana
Dim ventana As _ventana
Dim o As Object
ventana = New _ventana(ventana)
f.reparent(ventana.Contenido) 'Este form es incluído dentro del panel "Contenido" de la ventana
ventana.Width = f.Width
ventana.Height = f.Height
For Each o In f.Controls
If o.Tag = "TitleButtons" Then 'Los controles que contengan "TitleButtons" en el tag se incluyen en el panel "Buttons" de la ventana pero su obervador sigue siendo el formulario F
o.reparent(ventana.Buttons)
Endif
Next
ventana.Visible = True
Return ventana
End
Lo único que hay que hacer es llamar a dicha función dentro del evento Open() del formulario que queremos ver.
En el ejemplo adjunto (un supuesto Terminal de Consola):
Código:
Private $ventana As _ventana 'Referencia al formulario _ventana que contendrá a éste
Public Sub Form_Open()
$ventana = mVentana.CreaVentana(Me)
TerminalView1.Background = Color.Background
TerminalView1.Foreground = Color.Foreground
TerminalView1.Exec(["/bin/bash"])
TerminalView1.SetFocus
End
Public Sub TerminalView1_KeyRelease()
If Key.Code = Key.Enter Or Key.Code = Key.Return Then
$ventana.titulo.Text = TerminalView1.Title 'Cambiamos el título de la ventana al prompt del terminal
Endif
End
Este sería el aspecto final:
Como está recién sacado del horno, aún falta pulirlo. Pero hay una cosa en la que he perdido mucho tiempo y que no he sabido darle una respuesta satisfactoria:
Podéis cambiar el tamaño de la ventana desde los bordes y desde las esquinas, pero para los bordes y esquinas que implican cambio de posición, a saber, el superior, el izquierdo y sus correspondientes esquinas, no he sido capaz de encontrar la manera de hacerlo de forma fluida y fiable. Los únicos que lo hacen bien son el inferior y el derecho y la esquina correspondiente. Eso me ha llevado a resaltar dicha esquina y pretendo dejarla como la única zona de la ventana para cambiar el tamaño... pero antes de dejarlo así os lo traigo a ver si alguien es capaz de encontrar la solución a eso. Estaré totalmente agradecido.
Saludos