Académique Documents
Professionnel Documents
Culture Documents
46 Incrustar un Formulario dentro de un control PictureBox con el Api
SetParent
<Volver> Anterior Siguiente
El siguiente código fuente utiliza las funciones del Api SetParent y
ShowWindow para incrustar un formulario o ventana dentro de un
picturebox.
Vista del form2 incrustado en el PictureBox
http://www.recursosvisualbasic.com.ar/htm/trucoscodigofuentevisualbasic/46.htm 1/5
2017627 Insertar formulario dentro de un control PictureBox
Hay dos subRutinas llamadas Incrustar_Formulario y Liberar_Formulario. La primera recibe como parámetro el formulario y el
control PictureBox
Sub Incrustar_Formulario(El_Formulario As Form, El_PictureBox As PictureBox)
La otra función solo el nombre del formulario:
Sub Liberar_Formulario(El_Formulario As Form)
La función Api SetParent es muy simple y funciona asi: Se debe especificar en el primer parámetro el control / ventana que se va
a incrustar pasándole la propiedad Hwnd.
El otro parámetro es el control destino, es decir el contenedor o ventana padre, pasándole también la propiedad Hwnd. (en este
caso es el PictureBox)
http://www.recursosvisualbasic.com.ar/htm/trucoscodigofuentevisualbasic/46.htm 2/5
2017627 Insertar formulario dentro de un control PictureBox
ret = SetParent (La ventana, Ventana Padre )
Justo después de incrustar la ventana, se llama a ShowWindow para maximizar el Form2 que se incrustò en el Picture1. ( esto
es opcional )
Nota: podemos meter cualquier control que posea la propiedad Hwnd, por ejemplo 1 TextBox, ListBox de otro formulario , un
combo, botones etc..
Y también se puede meter cualquier ventana de Windows, por ejemplo meter el Microsoft Word dentro de un Picture o de un Form,
para esto último el procedimiento sería el mismo que en este ejemplo, pero habría que obtener el Hwnd del Word para poder
pasarcelo a la función SetParent. El Hwnd lo podríamos rescatar mediante la Api FindWindow, FindWindowEx, GetWindow, y otras
Controles para el ejemplo
Colocar un formulario llamado Form1 y en este Form agregar un Picture1
También dos commndButton
Agregar un Form2 al proyecto
Código fuente en el Form1:
Texto plano Imprimir
1. Option Explicit
2.
3.
4. ' Declaración de la función Api SetParent
5. Private Declare Function SetParent Lib "user32" ( _
6. ByVal hWndChild As Long, _
7. ByVal hWndParent As Long) As Long
8.
9. ' Declaración de la función Api ShowWindow
10. Private Declare Function ShowWindow Lib "user32" ( _
11. ByVal hwnd As Long, _
12. ByVal nCmdShow As Long) As Long
13.
14.
15. 'Constante que le indica que es para maximizar la ventana
16. Const SHOWMAXIMIZED_eSW = 3&
http://www.recursosvisualbasic.com.ar/htm/trucoscodigofuentevisualbasic/46.htm 3/5
2017627 Insertar formulario dentro de un control PictureBox
16. Const SHOWMAXIMIZED_eSW = 3&
17.
18.
19. Sub Incrustar_Formulario(El_Formulario As Form, El_PictureBox As PictureBox)
20.
21. Dim Ret As Long
22.
23. 'Mostramos el Form2
24. Form2.Show
25.
26. 'Lo metemos dentro del Picture1
27. Call SetParent(El_Formulario.hwnd, El_PictureBox.hwnd)
28.
29. 'Maximizamos el Formualrio incrustado dentro del Picture, mediante el _
30. Api showWindow, pasándole la constante SHOWMAXIMIZED_eSW
31.
32. Ret = ShowWindow(El_Formulario.hwnd, SHOWMAXIMIZED_eSW)
33.
34. End Sub
35.
36.
37. Sub Liberar_Formulario(El_Formulario As Form)
38. ' Libera el formulario, pasándole en el segundo parámetro el valor 0
39. Call SetParent(El_Formulario.hwnd, 0)
40.
41. End Sub
42.
43. 'Incrusta el form
44.
45. Private Sub Command1_Click()
46. Call Incrustar_Formulario(Form2, Picture1)
47. End Sub
48.
49. 'Libera
50. Private Sub Command2_Click()
51. Call Liberar_Formulario(Form2)
52. End Sub
53.
54. Private Sub Form_Load()
55.
56. Me.Caption = " Ejemplo del Api SetParent para incrustar y liberar formularios"
57. Command1.Caption = " Incrustar "
58. Command2.Caption = " Liberar "
59.
60. End Sub
61.
62. Private Sub Form_Unload(Cancel As Integer)
63. End
64. End Sub
http://www.recursosvisualbasic.com.ar/htm/trucoscodigofuentevisualbasic/46.htm 4/5
2017627 Insertar formulario dentro de un control PictureBox
Recursos vb 6.0 Enlaces relacionados a SetParent
Incrustar en un PictureBox un formulario y luego restablecerlo
Mover controles entre Formularios o ventanas
Buscar en Recursos vb
Buscar
http://www.recursosvisualbasic.com.ar/htm/trucoscodigofuentevisualbasic/46.htm 5/5