Está en la página 1de 5

2017­6­27 Insertar formulario dentro de un control PictureBox

Inicio Ejemplos vb Ocx ­ Activex Api vb Tutoriales ­ Manuales Código fuente vb.net

 Sección de códigos , trucos y ejemplos para visual basic Búsqueda personalizada   Buscar

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

from from from

Book now Book now Book now

http://www.recursosvisualbasic.com.ar/htm/trucos­codigofuente­visual­basic/46.htm 1/5
2017­6­27 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/trucos­codigofuente­visual­basic/46.htm 2/5
2017­6­27 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/trucos­codigofuente­visual­basic/46.htm 3/5
2017­6­27 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/trucos­codigofuente­visual­basic/46.htm 4/5
2017­6­27 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

Recursos visual basic ­  Buscar ­  Privacidad ­ Copyright © 2005 ­ 2009 ­ www.recursosvisualbasic.com.ar

http://www.recursosvisualbasic.com.ar/htm/trucos­codigofuente­visual­basic/46.htm 5/5