Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Osittain läpinäkyvä formi

Sivun loppuun

Pekka Kauppila [27.09.2003 15:53:47]

#

Koodin avulla saat tehtyä ikkuna osittain läpinäkyviksi väliltä 0-255. Toimii vain Windows 2000 ja XP käyttöjärjestelmissä. Toisessa listauksessa on esimerkki miten saat Windowssin tehtäväpalkin läpinäkyväksi.

'Tämä tekee formista läpinäkyvän...
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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex 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 Form_Paint()
  SetTransparent Me.hWnd, 200
End Sub

Sub SetTransparent(hWnd As Long, Transparent As Byte)
  Dim N As Long
  N = GetWindowLong(Me.hWnd, (-20)) Or &H80000
  SetWindowLong hWnd, (-20), N
  SetLayeredWindowAttributes hWnd, 0, Transparent, &H2
End Sub
'Tekee tehtäväpalkista läpinäkyvän
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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex 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 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim tWnd As Long

Private Sub Form_Load()
  'etsitään tehtäväpalkin kahva
  tWnd = FindWindow("Shell_traywnd", vbNullString)
  'tehdään siitä läpinäkyvä
  SetTransparent tWnd, 128
End Sub

Private Sub Form_Unload(Cancel As Integer)
  'ja palautetaan tehtäväpalkki näkyväksi
  SetTransparent tWnd, 255
End Sub

Sub SetTransparent(hWnd As Long, Transparent As Byte)
  Dim N As Long
  N = GetWindowLong(Me.hWnd, (-20)) Or &H80000
  SetWindowLong hWnd, (-20), N
  SetLayeredWindowAttributes hWnd, 0, Transparent, &H2
End Sub

petrinm [28.09.2003 11:01:02]

#

Jee tosta on paljon hyötyä

Bill Keltanen [09.10.2003 17:58:08]

#

Ton SetLayeredWindowAttributesin tiesin, ku mul on semmone ohjelma ku GhostIt, se valitti 98 jotai puuttuvast linkist ja se mainitsi ton SetLayered-homman mut just tota oon ettiny! Thx very much!

Monkkats [10.10.2003 19:52:50]

#

Tosi hyödyllinen ;)

miiro [22.12.2003 10:49:53]

#

Harmi ettei toimi käyttiksissä jotka on vanhempia kuin MICROSOFT® WINDOWS® 2000

EDIT: Täytyi muuttaa tavaramerkki oikeeks, muutenhan MICROSOFT® voisi vaikka suuttua (http://www.microsoft.com/finland/permission/t-mark/2K-Guide.mspx)

Puhveli [25.05.2004 17:49:51]

#

Kiitoksia tosiaan vinkistä. Loistava ja sitä paitsi läpinäkyvillä formeilla saa respektii :D
Edit: pidennä sisennyksiä, yks merkki ei millään riitä

Pekka Kauppila [31.08.2004 20:07:05]

#

lainaus:

Edit: pidennä sisennyksiä, yks merkki ei millään riitä

No tulipa tätäkin vinkkiä sitten hieman päivitettyä ja ei hoksannut katsoa oliko tuossa entisessä tosiaan vain yhden merkin sisennykset, mutta nyt siinä on sitten kahden merkin mittaiset sisennykset.

Juice [22.09.2004 19:50:10]

#

Kaiken tekee vaikeeksi. .NETissä riittää pelkkä

Me.Opacity = 0.7

Kulma [11.11.2004 21:23:35]

#

Ei mulla mee tehtäväpalkki läpinäkyväksi.

NixDu [21.12.2004 05:43:01]

#

Ei mene mullakaan läpinäkyväksi vaikka mitä tekis

Pekka Kauppila [21.12.2004 11:18:47]

#

Kyllä tuo ainakin minulla toimii Windows XP:ssä ihan oikeen ja kyllä pitäisi toimia myös 2000:ssa.

Jebaa [27.05.2007 15:09:54]

#

Hieno ja hyödyllinen.

jaxxtu [26.10.2007 14:40:53]

#

Hieno ja todellakin hyödyllinen. Hauska vaan kun suoritat tuon ja sitte et paina formista x-näppäintä vaan painat Ctrl+Break niin tuo tehtäväpalkki jää läpinäkyväksi.

moptim [04.12.2007 20:53:42]

#

Toihan tehdään niin että loopissa joka ohjelman läpinäkyvyys asetetaan tiettyyn arvoon niin tulee AvroKlass©


Sivun alkuun

Vastaus

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

Tietoa sivustosta