Страница: 1 |
Вопрос: Прозрачность окон WINDOWS
Добавлено: 27.11.08 23:59
Автор вопроса: Mc.WOLF
Никто не пробывал сделать окна Windows прозрачными?
Я только не знаю как! Подскажыте пожалуйста!
Ответить
Номер ответа: 1Автор ответа: werber
Вопросов: 71Ответов: 112
Web-сайт: www.werbersoft.ru Профиль | | #1
Добавлено: 28.11.08 01:09
Вот этот код пиши в модуль:
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
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Const LWA_ALPHA = &H2
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
А вызываешь его так (пример):
SetTransparent Form1.hwnd, 255 'вместо числа в конце строки подставляй целое число от 0 (форма полностью исчезнет) до 255 (форма будет полностью видна)
Удачи! )
Ответить
Номер ответа: 9Автор ответа: @lex
Вопросов: 14Ответов: 262
Профиль | | #9
Добавлено: 01.12.08 14:11
Кто-то может предложить что-то умнее чем это?)
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 Declare Function apiGetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Long
Private Declare Function apiGetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long , ByVal wCmd As Long ) As Long
Dim H As Long
Dim R As Long
Dim T As Long
Private Sub Form_Load()
T = 200
H = apiGetDesktopWindow()
H = apiGetWindow(H, 5)
Do While Not H = 0
R = GetWindowLong(H, -20)
R = R Or &H80000
SetWindowLong H, -20, R
SetLayeredWindowAttributes H, 0, T, &H2
H = apiGetWindow(H, 2)
Loop
End Sub
Ответить
Страница: 1 |
Поиск по форуму