Полупрозрачное окно с непрозрачными кнопками и другими элементами управления - VB
Формулировка задачи:
Всем привет! Подскажите кто-нибудь, как сделать полупрозрачное окно с непрозрачными кнопками и другими элементами управления...
Решение задачи: «Полупрозрачное окно с непрозрачными кнопками и другими элементами управления»
textual
Листинг программы
- ' Form
- ' - - - - - -
- ' Command1 – кнопка
- ' Command2 – кнопка
- ' Command3 – кнопка
- ' Command4 – кнопка
- ' - - - - - -
- ' Код формы
- 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
- Private Sub Command1_Click()
- ' Установить полупрозрачность
- Dim aStyle As Long
- Dim Transparent As Byte
- ' 255 (НЕТ прозрачности) -> полупрозрачность -> 0 (прозрачность)
- Transparent = 200
- ' Получаем расширенный стиль окна (Формы)
- aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
- ' Переменной aStyle добавляем значение WS_EX_LAYERED
- aStyle = aStyle or WS_EX_LAYERED
- ' Изменяем расширенный стиль окна (Формы)
- Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
- ' Теперь делаем Форму полупрозрачной
- Call SetLayeredWindowAttributes(Me.hWnd, 0, Transparent, LWA_ALPHA)
- End Sub
- Private Sub Command2_Click()
- ' Установить прозрачный цвет
- Dim aStyle As Long
- Dim TransparentColor As Long
- ' Цвет, который будет полностью прозрачным
- TransparentColor = vbBlack 'Чёрный
- ' Если форме уже установлен расширенный стиль WS_EX_LAYERED,
- ' то следующие 3 строки кода можно не выполнять
- aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
- aStyle = aStyle or WS_EX_LAYERED
- Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
- Call SetLayeredWindowAttributes(Me.hWnd, TransparentColor, 0, LWA_COLORKEY)
- End Sub
- Private Sub Command3_Click()
- ' Установить прозрачный цвет и полупрозрачность
- Dim aStyle As Long
- Dim TransparentColor As Long
- Dim Transparent As Byte
- TransparentColor = RGB(0, 0, 0)
- Transparent = 200
- ' Если форме уже установлен расширенный стиль WS_EX_LAYERED,
- ' то следующие 3 строки кода можно не выполнять
- aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
- aStyle = aStyle or WS_EX_LAYERED
- Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
- Call SetLayeredWindowAttributes(Me.hWnd, TransparentColor, Transparent, LWA_COLORKEY or LWA_ALPHA)
- End Sub
- Private Sub Command4_Click()
- ' Убрать полупрозрачность и полную прозрачность
- Dim aStyle As Long
- aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
- aStyle = aStyle Xor WS_EX_LAYERED
- Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
- End Sub
- Private Sub Form_Load()
- Command1.Caption = "Установить полупрозрачность"
- Command2.Caption = "Установить прозрачный цвет"
- Command3.Caption = "Установить и ""то"" и ""другое"""
- Command4.Caption = "Убрать полупрозрачность и полную прозрачность"
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д