Полупрозрачное окно с непрозрачными кнопками и другими элементами управления - VB

Узнай цену своей работы

Формулировка задачи:

Всем привет! Подскажите кто-нибудь, как сделать полупрозрачное окно с непрозрачными кнопками и другими элементами управления...

Решение задачи: «Полупрозрачное окно с непрозрачными кнопками и другими элементами управления»

textual
Листинг программы
  1. ' Form
  2. ' - - - - - -
  3. ' Command1 – кнопка
  4. ' Command2 кнопка
  5. ' Command3 – кнопка
  6. ' Command4 кнопка
  7. ' - - - - - -
  8. ' Код формы
  9.  
  10. Const LWA_COLORKEY = &H1
  11. Const LWA_ALPHA = &H2
  12. Const GWL_EXSTYLE = (-20)
  13. Const WS_EX_LAYERED = &H80000
  14. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  15. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  16. Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
  17.  
  18. Private Sub Command1_Click()
  19. ' Установить полупрозрачность
  20.  Dim aStyle As Long
  21.   Dim Transparent As Byte
  22.  
  23. ' 255 (НЕТ прозрачности) -> полупрозрачность -> 0 (прозрачность)
  24.  Transparent = 200
  25.  
  26. ' Получаем расширенный стиль окна (Формы)
  27.  aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
  28.  
  29. ' Переменной aStyle добавляем значение WS_EX_LAYERED
  30.  aStyle = aStyle or WS_EX_LAYERED
  31.  
  32. ' Изменяем расширенный стиль окна (Формы)
  33.  Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
  34.  
  35. ' Теперь делаем Форму полупрозрачной
  36.  Call SetLayeredWindowAttributes(Me.hWnd, 0, Transparent, LWA_ALPHA)
  37. End Sub
  38.  
  39. Private Sub Command2_Click()
  40. ' Установить прозрачный цвет
  41.  Dim aStyle As Long
  42.   Dim TransparentColor As Long
  43.  
  44. ' Цвет, который будет полностью прозрачным
  45.  TransparentColor = vbBlack 'Чёрный
  46.  
  47. ' Если форме уже установлен расширенный стиль WS_EX_LAYERED,
  48. ' то следующие 3 строки кода можно не выполнять
  49.  aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
  50.   aStyle = aStyle or WS_EX_LAYERED
  51.   Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
  52.  
  53.   Call SetLayeredWindowAttributes(Me.hWnd, TransparentColor, 0, LWA_COLORKEY)
  54.  
  55. End Sub
  56.  
  57. Private Sub Command3_Click()
  58. ' Установить прозрачный цвет и полупрозрачность
  59.  Dim aStyle As Long
  60.   Dim TransparentColor As Long
  61.   Dim Transparent As Byte
  62.  
  63.   TransparentColor = RGB(0, 0, 0)
  64.   Transparent = 200
  65.  
  66. ' Если форме уже установлен расширенный стиль WS_EX_LAYERED,
  67. ' то следующие 3 строки кода можно не выполнять
  68.  aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
  69.   aStyle = aStyle or WS_EX_LAYERED
  70.   Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
  71.  
  72.   Call SetLayeredWindowAttributes(Me.hWnd, TransparentColor, Transparent, LWA_COLORKEY or LWA_ALPHA)
  73. End Sub
  74.  
  75. Private Sub Command4_Click()
  76. ' Убрать полупрозрачность и полную прозрачность
  77.  Dim aStyle As Long
  78.  
  79.   aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
  80.   aStyle = aStyle Xor WS_EX_LAYERED
  81.   Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
  82. End Sub
  83.  
  84. Private Sub Form_Load()
  85.   Command1.Caption = "Установить полупрозрачность"
  86.   Command2.Caption = "Установить прозрачный цвет"
  87.   Command3.Caption = "Установить и ""то"" и ""другое"""
  88.  
  89.   Command4.Caption = "Убрать полупрозрачность и полную прозрачность"
  90. End Sub

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


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

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

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы