Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Okno półprzeźroczyste
anonim




Typ: Nie zarejestrowany
Okno półprzeźroczyste

Jak zrobć aby okno i kontrolki w nim się znajdujące były półprzeźroczyste i jak można sterować stopniem przeźroczystości okna. Widziałem coś takiego i bardzo mi się spodobało i chciałbym to wykorzystać w swoich programach.
Z góry dziękuję za pomoc.

29-08-2004 16:23
  
hicks
raptor user



Typ: moderator
Postów: 279
Zarejestrowany: Apr 2003

Wkelj to w kodzie formy i uruchom program (poczym go wyłącz)

Const LWA_COLORKEY = &H1
Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
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 Ret As Long

Private Sub Form_Load()
    Ret = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
    Ret = Ret Or WS_EX_LAYERED
    SetWindowLong Me.hwnd, GWL_EXSTYLE, Ret
    Me.Show
    SetLayeredWindowAttributes Me.hwnd, 0, 0, LWA_ALPHA
    For petla = 1 To 255
        SetLayeredWindowAttributes Me.hwnd, 0, petla, LWA_ALPHA
        DoEvents
    Next petla
End Sub

Private Sub Form_Unload(Cancel As Integer)
    For petla = 254 To 0 Step -1
        SetLayeredWindowAttributes Me.hwnd, 0, petla, LWA_ALPHA
        DoEvents
    Next petla
End Sub

[Post edytowany dnia 30-08-2004 11:20 przez hicks]


_____________________________________________
TLHW Clan member

30-08-2004 11:18
Pokaż profil hicks  Wyślij email do hicks   Odwiedź stronę hicks       2511367
koala



Typ: neutral
Postów: 9
Zarejestrowany: Nov 2003

A czy da się zrobić aby tylko okno było półprzeźroczyste a kontrolki nie?

30-08-2004 13:09
Pokaż profil koala  Wyślij email do koala        1333014
Chudy
[TLHW]Wiktor



Typ: moderator
Postów: 574
Zarejestrowany: Aug 2002

Jak przypuszczam, kod napisany przez Hicksa zadziała tylko pod WinXP. Tak więc można napisać ręcznie funkcje która będzie zmieniała formę na przeźroczystą. W VB nie będzie może za szybka ale będzie można zrobić aby kontrolki nie były przeźroczyste. Można to zrobić w taki sposób aby ze zrzutu ekranu pobierany był tylko region formy i żeby program zmieszał odpowiednio kolory. Takie coś widziałem na PSC.


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

02-09-2004 13:49
Pokaż profil Chudy  Wyślij email do Chudy   Odwiedź stronę Chudy       1220895
koala



Typ: neutral
Postów: 9
Zarejestrowany: Nov 2003

Kod działa pod każdym sytemem ale nie w tym rzecz. Widziałem kiedyś taki progrm, coś w rodzaju kalendarz który miał okno przeźdoczyste natomiast pola symbolizujące dzień miesiąca nie były przeźroczyste, przeciwnie niż robi to  powyższy przykład

03-09-2004 13:26
Pokaż profil koala  Wyślij email do koala        1333014
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Witam,
Drogi koalo kod hicksa nie działa pod każdym systemem. Używam Windows 98 SE i niestety funkcja API SetLayerdWindowAttributes nieznajduje sie w bibliotece user32.dll dostarczonej z tym systemem. Gdybyś spróbował uzyć powyższego kodu na systemach Win 95, 95 OSR 2, 98, 98 SE, Me edytor Vb podczas uruchamiania projektu wybił by błąd iż nie może odnaleźć wspomnianej funkcji w bibliotece user32.dll. Co do przezroczystości jak chcesz mogę ci podesłać sampel który działa na podobnej zasadzie którą opisał Chudy. Daj znać a sampel zostanie ci wysłany na mail.
Pozdrawiam
Andrzej


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

11-09-2004 00:16
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
koala



Typ: neutral
Postów: 9
Zarejestrowany: Nov 2003

Faktycznie pod 9x i NT nie działa, nie wiem dlaczego tak napisałem, coś musiałem pokręcić. Jak byś mógł przesłać mi ten przykład to byłbym wdzięczny, bo chcialbym zakończyć pracę nad moim prgramem.

14-09-2004 09:33
Pokaż profil koala  Wyślij email do koala        1333014
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Witam,
Przepraszam koala że tak długo zwlekałem z odpowiedzią na twoje pytanie ale byłem bardzo zapracowany (nadal jestem) i nie miałem jak kiedy spakować odpowiedniego sampla ale podaje ci link do zagranicznego forum VB na którym poruszyłem podobny temat http://www.maxvb.com/viewtopic.php?t=851

Postaram sie jak najszybciej spakować ci inne sample i wysłać na email z którego do mnie napisałeś

Pozdrawiam
Andrzej


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

14-09-2004 23:20
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Ja dysponuję przykładem działającym pod wszystkimi Winami i nie mającym półprzeźroczystych kontrolek. Wysyłam na maila.


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


05-10-2004 21:47
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
Wszystkich odpowiedzi: 8 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1