- Код: Выделить всё
'API функции
'Функция определяет стиль окна
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, _ ByVal nIndex As Long) As Long
'Функция задаёт стиль окна
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _ ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'Функция делает окно прозрачным
Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, _
ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
'Константы
Public Const LWA_COLORKEY = &H1
Public Const LWA_ALPHA = &H2
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
'Процедура
'hWnd - манипулятор окна, Layered - степень прозрачности от 0 до 255
Public Sub SetTransparent(hWnd As Long, Layered As Byte)
Dim Ret As Long
'Определяем стиль нужного окна
Ret = GetWindowLong(hWnd, GWL_EXSTYLE)
'Задаём стиль окна как заслоённый
Ret = Ret Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, Ret
'Задём степень прозрачности окна
SetLayeredWindowAttributes hWnd, 0, Layered, LWA_ALPHA
End Sub
как сделать ее поверх все я тоже знаю, для тех кто не знает:
- Код: Выделить всё
Private Declare Function SetWindowPos Lib "user32" (ByVal h%, ByVal hb%, ByVal x%, ByVal Y%, ByVal cx%, ByVal cy%, ByVal F%) As Integer
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const flags = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Private Sub Command1_Click()
res = SetWindowPos(Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, flags) 'Форма on-top
End Sub
Private Sub Command2_Click()
res = SetWindowPos(Form1.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, flags) 'Форма non-on-top
End Sub
но как их обеденить?