Полупрозрачное окно с непрозрачными кнопками и другими элементами управления - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы