Hola. No voy a preguntar como se hacen transparentes los formularios ya que a estas alturas y buscando info en el foro ya deberia de salir. Mi problema es otro:

En un modulo:
Código:
  1. Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Long, ByVal dwFlags As Long) As Long
  2. Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  3. Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  4. Public Const WS_EX_LAYERED As Long = &H80000, LWA_ALPHA As Long = &H2, GWL_EXSTYLE = (-20), RDW_INVALIDATE = &H1, RDW_ERASE = &H4, RDW_ALLCHILDREN = &H80, RDW_FRAME = &H400

En el Form con un commandbutton:
Código:
  1. Private Sub Command1_Click()
  2. Xray = 30
  3. Call SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
  4. Call SetLayeredWindowAttributes(hWnd, 0, (255 * Xray) / 100, LWA_ALPHA)
  5. End Sub

Donde Xray es el nivel en tanto por ciento (%) de trasparencia. Asi Xray = 100 es opaco total y XRay = 0 es totalmente invisible por su transparencia.

Esto lo dejo para que alguno que lo lea lo pueda usar. Ahora mi pregunta:

¿Por que esto mismo no se puede aplicar de la misma manera a los formularios hijos de un MDI? ¿Sabe alguien como se hace? Gracias a todos y un saludo.