Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Läpinäkyvä formi

tuomas [07.05.2004 20:13:32]

#

Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub Timer1_Timer()
Dim a As integer
 A = A + 1
  SetTransparent Me.hWnd, a
  if a = 254 then
     timer1.enabled = false
  end if
End Sub

Sub SetTransparent(hWnd As Long, Transparent As Byte)
 SetWindowLong hWnd, (-20), &H80000
 SetLayeredWindowAttributes hWnd, 0, Transparent, &H2
End Sub

Tuon kuuluisi muuttaa läpinäkyvä formi vähän kerrallaan näkyvämmäksi, mutta en saa sitä itse toimaan eli voisiko joku auttaa hieman?

Jäynis [07.05.2004 21:37:20]

#

Kokeiles nuin:

Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

dim a as integer

Private Sub Timer1_Timer()
 a = a + 1
  SetTransparent Me.hWnd, a
  if a = 254 then
     timer1.enabled = false
  end if
End Sub

Sub SetTransparent(hWnd As Long, Transparent As Byte)
 SetWindowLong hWnd, (-20), &H80000
 SetLayeredWindowAttributes hWnd, 0, Transparent, &H2
End Sub

Luulen et a:n arvo on 0 joka kerta ku timeri suoritetaan.

Tai näinki vois toimia:

Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub Timer1_Timer()
static a as integer
 a = a + 1
  SetTransparent Me.hWnd, a
  if a = 254 then
     timer1.enabled = false
  end if
End Sub

Sub SetTransparent(hWnd As Long, Transparent As Byte)
 SetWindowLong hWnd, (-20), &H80000
 SetLayeredWindowAttributes hWnd, 0, Transparent, &H2
End Sub

Muistaakseni jos muuttuja oli static ni sen arvo säilyy.

kenkku [07.05.2004 21:51:47]

#

Minulla oli sama ongelma, mutta ratkaisu on simppeli: muuttujan A tyyppi pitää olle byte :)

tuomas [07.05.2004 22:03:28]

#

antaa byref virheen..

tuomas [07.05.2004 22:05:34]

#

ei anna enää virhettä mutta ei kyllä näytäkään formia.

kenkku [07.05.2004 22:11:56]

#

tuomas kirjoitti:

ei anna enää virhettä mutta ei kyllä näytäkään formia.

Jaahas..
Kyllä tuo näyttäisi toimivan (kannattaa muuten asettaa form_loadissa läpinäkyvyys nollaan.. ei välkähdä alussa):

Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub Timer1_Timer()
Static a As Byte
a = a + 1
 SetTransparent Me.hWnd, a
 If a = 254 Then
    Timer1.Enabled = False
 End If
End Sub

Sub SetTransparent(hWnd As Long, Transparent As Byte)
   SetWindowLong hWnd, (-20), &H80000
   SetLayeredWindowAttributes hWnd, 0, Transparent, &H2
End Sub

tuomas [07.05.2004 22:14:12]

#

nyt sain toimimaan..
Kiitti!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta