Professional Documents
Culture Documents
Publicado el 25/Ene/2004
Revisión del 26/May/2004
1
ByVal picDock As PictureBox, _
Optional ByVal ajustar As Boolean
= True)
' Hacer el formulario indicado, un hijo del
picDock
' Si Ajustar es True, se ajustará al tamaño del
contenedor,
' si Ajustar es False, se quedará con el tamaño
actual.
Call SetParent(formhWnd, picDock.hWnd)
posDockForm formhWnd, picDock, ajustar
Call ShowWindow(formhWnd, NORMAL_eSW)
End Sub
2
Call MoveWindow(formhWnd, 0, 0, nWidth, nHeight,
True)
End Sub
'-----------------------------------------------------
-------------------------
' APIS para incluir las ventanas en un PictureBox
'-----------------------------------------------------
-------------------------
'
' Para hacer ventanas hijas
Private Declare Function SetParent Lib "user32" _
(ByVal hWndChild As Long, ByVal hWndNewParent As
Long) As Long
'
' Para mostrar una ventana según el handle (hwnd)
' ShowWindow() Commands
Private Enum eShowWindow
HIDE_eSW = 0&
SHOWNORMAL_eSW = 1&
NORMAL_eSW = 1&
SHOWMINIMIZED_eSW = 2&
SHOWMAXIMIZED_eSW = 3&
MAXIMIZE_eSW = 3&
SHOWNOACTIVATE_eSW = 4&
SHOW_eSW = 5&
MINIMIZE_eSW = 6&
SHOWMINNOACTIVE_eSW = 7&
SHOWNA_eSW = 8&
RESTORE_eSW = 9&
SHOWDEFAULT_eSW = 10&
MAX_eSW = 10&
End Enum
3
' Para posicionar una ventana según su hWnd
Private Declare Function MoveWindow Lib "user32" _
(ByVal hWnd As Long, ByVal x As Long, ByVal y As
Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal
bRepaint As Long) As Long
'
' Para cambiar el tamaño de una ventana y asignar los
valores máximos y mínimos del tamaño
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type RECTAPI
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type WINDOWPLACEMENT
Length As Long
Flags As Long
ShowCmd As Long
ptMinPosition As POINTAPI
ptMaxPosition As POINTAPI
rcNormalPosition As RECTAPI
End Type
Private Declare Function GetWindowPlacement Lib
"user32" _
(ByVal hWnd As Long, ByRef lpwndpl As
WINDOWPLACEMENT) As Long
4
Private Sub cmdMostrarForm2_Click()
'
' Asignar el Tag del formulario para saber que
está incluido en el Picture
Form2.Tag = valorDock
'
dockForm Form2.hWnd, Picture1, True
End Sub
5
En la parte de declaraciones del formulario tendremos una
constante llamada valorDock que simplemente nos servirá para
saber si un formulario está o no incluido dentro del picture.
Cuando queramos "meter" un formulario en el picture, asignaremos
esa constante a la propiedad Tag y seguidamente llamaremos al
procedimiento dockForm indicándole el formulario que queremos
meter, además del control en el que queremos que se meta.
El formulario "normal"
6
El formulario con el otro formulario "incrustado"
Y eso es todo.
Nos vemos.
Guillermo
7
El formulario con el Notepad dentro de un picture.