Формы с изменяемой прозрачностью
Я программирую на VB6 и у меня возник вопрос:
Как сделать так, чтобы форма была прозрачной и её прозрачность можно было регулировать!
Если можно, оставьте ссылку на Ресурс и пример по этой теме!
Спасибо!
Очень интересно! Знающие человеки - откликнитесь!!!
Когдата я реализовывал прозрачность формы в своём текстовом редакторе,
но повзраслев задался вопросом на фига прозрачность форм в текстовом редакторе. :rolleyes:
Ну ладно это снова бред пьяного ёжика, а теперь непосредственно перейдём к коду.
'объявляем API функции и константы
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 Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)
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 Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2
Private Const WS_EX_LAYERED = &H80000
Sub alpha(Hwnds As Long, vals As Long) 'создание прозрачности у формы (описатель окна, степень прозрачности 0 - 255)
If vals < 254 Then 'если значение vals меньше 254, то
Dim lStyle As Long 'объявляем числовую переменную
lStyle = GetWindowLong(Hwnds, GWL_EXSTYLE) 'узнаем аттрибуты окна
lStyle = lStyle Or WS_EX_LAYERED
SetWindowLong Hwnds, GWL_EXSTYLE, lStyle 'устанавливаем аттрибуты окна
SetLayeredWindowAttributes Hwnds, 0, vals, LWA_ALPHA 'устанавливаем прозрачность
Else 'в любом другом случае
SetWindowLong Hwnds, GWL_EXSTYLE, 0 'устанавливаем обычные аттрибуты окна
End If 'закрываем условие
End Sub
Так вот ентот код размещаете в модуле, а потом в том месте откуда вы хотите изменить прозрачность формы делаете вызов:
Call alpha(hwnd окна для изменения прозрачности, Степень прозрачности)
Ну у меня это выглядело вот так:
Call alpha(Me.hwnd, HScroll1.Value)
Если что не так работает извини, давно это было:) :) :)
Привет посмотри вот этот пример!
:D :D :D Ой сори, ты просил пример, вот специально для тебя сделал.
2 Pavel Basic: Ваш код работает и делает это просто великолепно!