• Domingo 19 de Mayo de 2024, 16:02

Autor Tema:  Re: Sólo para Expertos, es urgente!!!  (Leído 1673 veces)

Gago

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Sólo para Expertos, es urgente!!!
« en: Jueves 21 de Noviembre de 2002, 13:46 »
0
Tengo una DLL programada en Visual (que consta de un Formulario y un Módulo de Clase). El programa que llama a la DLL tiene un formulario MDIChild. Necesito URGENTE saber cómo puedo hacer para que el formulario de la DLL se considere hijo del MDI que está en el proyecto, si hay que pasarlo como parámetro y, sobre todo, cómo coño lo hago. Graciñas!!!

javierbalk

  • Miembro MUY activo
  • ***
  • Mensajes: 142
  • Nacionalidad: 00
    • Ver Perfil
    • Print preview y grabar PDF en Visual Basic 6
Re: Sólo para Expertos, es urgente!!!
« Respuesta #1 en: Jueves 21 de Noviembre de 2002, 17:54 »
0
Hola Gago:

Para poder usar un formulario contenido en una DLL tienes que accesderlo a través de un módulo de clase que esté en la DLL.

Entonces pones una propiedad como ser:

Public Property Get Formulario() as Form
   Set Formulario = new frmElQueSea
End Sub

Luedo haces la referencia a esa DLL desde el proyecto cliente, desde el menú Proyecto, Referencias, y la seleccionas.

Para hacerlo funcionar, tienes que crear una instancia de la clase.

Dim mClase as New NombreClase

para mostrar el formulario:

mClase.Formulario.Show

Espero no haberme equivocado en nada.

Para poder hacerlo MDI hijo eso lo tienes que definir en tiempo de diseño al hacer la DLL. Poner la Propiedad MDIChild = true

Saludos,

Javier

Gago

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Sólo para Expertos, es urgente!!!
« Respuesta #2 en: Jueves 21 de Noviembre de 2002, 19:01 »
0
Ya he encontrado la solución!!!

Se trata de una API de Windows:

Declare Function WinSetParent Lib "user32" Alias "SetParent" (ByVal hWndChild as Long, ByVal hWndNewParent as Long) as Long

A esta API se le pasa los Handles (hWnd) del formulario de la DLL (hWndChild) y el del formulario MDI (hWndNewParent( y ya está.

Gracias a los que entraron aquí.

Jrtuarez

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Sólo para Expertos, es urgente!!!
« Respuesta #3 en: Martes 26 de Noviembre de 2002, 15:06 »
0
amigo prueba con esta api a mi me gusta mucho!!!
los formularios se creen hijos del mdi aparecen en la barra de tarea y cuando
minimizaz el formulario padre todos se unifican es muy elegante

#If Win32 Then
Declare Function SetWindowWord Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal wNewWord As Long) As Long
#Else
Declare Function SetWindowWord Lib "User" (ByVal hwnd As Integer, ByVal nIndex As Integer, ByVal wNewWord As Integer) As Integer
#End If


 asi es como se usuaria comunmente en el evento de carga:

If SetWindowWord(hwnd, -8, MDIForm1.hwnd) Then
End If

es mas elegante aun cuando los mandas al system tray, espero te sirva.