GS-Zone

consola transparente Ir al Indice

Moderadores: Moderadores de Argentum, Especialistas de Argentum, Especialistas de Programación

1

Nota » 03 Ene 2012 23:09

bueno este aporte no me acuerdo kien lo hizo pero es corto....

creas un modulo q se llame MODTRANSPARENCIAS Y LE DAS ESTE CODIGO
  1. Option Explicit
  2.  
  3. 'Declaración del Api SetLayeredWindowAttributes que establece _
  4. la transparencia al form
  5.  
  6. Private Declare Function SetLayeredWindowAttributes Lib "USER32" _
  7.                 (ByVal hwnd As Long, _
  8.                  ByVal crKey As Long, _
  9.                  ByVal bAlpha As Byte, _
  10.                  ByVal dwFlags As Long) As Long
  11.  
  12.  
  13. 'Recupera el estilo de la ventana
  14. Private Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" _
  15.                 (ByVal hwnd As Long, _
  16.                  ByVal nIndex As Long) As Long
  17.  
  18.  
  19. 'Declaración del Api SetWindowLong necesaria para aplicar un estilo _
  20. al form antes de usar el Api SetLayeredWindowAttributes
  21.  
  22. Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" _
  23.                (ByVal hwnd As Long, _
  24.                 ByVal nIndex As Long, _
  25.                 ByVal dwNewLong As Long) As Long
  26.  
  27.  
  28. Private Const GWL_EXSTYLE = (-20)
  29. Private Const LWA_ALPHA = &H2
  30. Private Const WS_EX_LAYERED = &H80000
  31. 'Función para saber si formulario ya es transparente. _
  32. Se le pasa el Hwnd del formulario en cuestión
  33.  
  34. Public Function Is_Transparent(ByVal hwnd As Long) As Boolean
  35. On Error Resume Next
  36.  
  37. Dim msg As Long
  38.  
  39.     msg = GetWindowLong(hwnd, GWL_EXSTYLE)
  40.        
  41.        If (msg And WS_EX_LAYERED) = WS_EX_LAYERED Then
  42.           Is_Transparent = True
  43.        Else
  44.           Is_Transparent = False
  45.        End If
  46.  
  47.     If Err Then
  48.        Is_Transparent = False
  49.     End If
  50.  
  51. End Function
  52.  
  53. Public Function Aplicar_Transparencia(ByVal hwnd As Long, _
  54.                                       Valor As Integer) As Long
  55.  
  56. Dim msg As Long
  57.  
  58. On Error Resume Next
  59.  
  60. If Valor < 0 Or Valor > 255 Then
  61.    Aplicar_Transparencia = 1
  62. Else
  63.    msg = GetWindowLong(hwnd, GWL_EXSTYLE)
  64.    msg = msg Or WS_EX_LAYERED
  65.    
  66.    SetWindowLong hwnd, GWL_EXSTYLE, msg
  67.    
  68.    'Establece la transparencia
  69.    SetLayeredWindowAttributes hwnd, 0, Valor, LWA_ALPHA
  70.  
  71.    Aplicar_Transparencia = 0
  72.  
  73. End If
  74.  
  75.  
  76. If Err Then
  77.    Aplicar_Transparencia = 2
  78. End If
  79.  
  80. End Function


luego vas a form_load del frmmain y colocas esto
  1. Dim result As Long
  2. result = SetWindowLong(Richtxt.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)


listo la consola ya es transparente...

pero PUMMM: EL PROBLEMA JAJA
a veces no aparece los textos en la consola.... tengo q hacerle click para q actualice... esto sucede con el primer dialogo... dps ya cuando lo actualizo haciendo click no vuelve a suceder hasta q paso de mapa o no hay nada escrito en la consola...

no se actualiza la consola es el problema....
EJEMPLO
Entro al juego y dice SEGURO ACTIVADO...
dps me hago click.... y no aparece "Ves a bla bla bla bla bla <PIRULINO> DIOS JAJAJ
entonces me hago otra vez click...

Ves a bla bla bla bla bla <PIRULINO> DIOS JAJAJ
Ves a bla bla bla bla bla <PIRULINO> DIOS JAJAJ

o hago click en consola y finalmente aparece el primer click que hice... esto sucede con cualkier texto ... el mismo procedimiento no deja este problema en un dx7....

bueno espero una respuesta logica a esto jajaja y una posible solucion jaja

saludos Fariseo

Imagen
Staff Tierras Muertas
74
Aprendiz [7]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Argentina
Mensajes: 459
Aportes: 3

Volver a AO 0.11.5

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados