Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Kaplinale
Зарегистрирован: 27.05.2005 Сообщения: 102 Откуда: г. Нижний Новгород
|
Добавлено: Вт Авг 16 2005 13:38 Заголовок сообщения: Прозрачность формы (как сделать) |
|
|
Подскажите пожалуйста, как сделать форму прозрачной (CBuilder) |
|
Вернуться к началу |
|
|
InStream
Зарегистрирован: 23.06.2005 Сообщения: 8
|
Добавлено: Вт Авг 16 2005 14:31 Заголовок сообщения: |
|
|
Апи функции (код под вб), функции работают только под 2000/XP
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_ALPHA = &H2
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
Private Sub MixWindow(FormName As Form)
If Not isTransparent Then
isTransparent = True
Ret = GetWindowLong(FormName.hWnd, GWL_EXSTYLE)
DefRet=Ret 'точно не помню, но зачем-то было нужно
Ret = Ret Or WS_EX_LAYERED
SetWindowLong FormName.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes FormName.hWnd, 0, 0, LWA_ALPHA 'делает окно полность прозрачным
For X = 0 To 255 Step 10 'Постепенно выводит окно из прозрачности (Микс), где Х уровень текущей прозрачности
SetLayeredWindowAttributes FormName.hWnd, 0, X, LWA_ALPHA
DoEvents
Next X
SetLayeredWindowAttributes FormName.hWnd, 0, 255, LWA_ALPHA
SetWindowLong FormName.hWnd, GWL_EXSTYLE, DefRet 'отменяет прозрачность и возвращает окно в исходное состояние
End If
End Sub |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Вт Авг 16 2005 15:45 Заголовок сообщения: |
|
|
Form1->AlphaBlend = true;
Form1->AlphaBlendValue = число 0..255; |
|
Вернуться к началу |
|
|
Kaplinale
Зарегистрирован: 27.05.2005 Сообщения: 102 Откуда: г. Нижний Новгород
|
Добавлено: Вт Авг 16 2005 15:53 Заголовок сообщения: |
|
|
Thanks всем |
|
Вернуться к началу |
|
|
Kaplinale
Зарегистрирован: 27.05.2005 Сообщения: 102 Откуда: г. Нижний Новгород
|
Добавлено: Вт Авг 16 2005 15:53 Заголовок сообщения: |
|
|
Thanks всем |
|
Вернуться к началу |
|
|
Kaplinale
Зарегистрирован: 27.05.2005 Сообщения: 102 Откуда: г. Нижний Новгород
|
Добавлено: Вт Авг 16 2005 15:56 Заголовок сообщения: |
|
|
Thanks всем |
|
Вернуться к началу |
|
|
Kaplinale
Зарегистрирован: 27.05.2005 Сообщения: 102 Откуда: г. Нижний Новгород
|
Добавлено: Чт Авг 18 2005 09:25 Заголовок сообщения: |
|
|
Wladimir писал(а): | Form1->AlphaBlend = true;
Form1->AlphaBlendValue = число 0..255; |
НЕ РАБОТАЕТ |
|
Вернуться к началу |
|
|
Kaplinale
Зарегистрирован: 27.05.2005 Сообщения: 102 Откуда: г. Нижний Новгород
|
Добавлено: Чт Авг 18 2005 09:26 Заголовок сообщения: |
|
|
Wladimir писал(а): | Form1->AlphaBlend = true;
Form1->AlphaBlendValue = число 0..255; |
НЕ РАБОТАЕТ |
|
Вернуться к началу |
|
|
Netron
Зарегистрирован: 10.12.2004 Сообщения: 7 Откуда: Курск
|
Добавлено: Чт Авг 18 2005 12:49 Заголовок сообщения: |
|
|
хм...а Вам обязательно делать её прозрачной? можь проще невидимой или не доступной? |
|
Вернуться к началу |
|
|
Kaplinale
Зарегистрирован: 27.05.2005 Сообщения: 102 Откуда: г. Нижний Новгород
|
Добавлено: Чт Авг 18 2005 13:09 Заголовок сообщения: |
|
|
Ну не совсем полностью прозрачной, хотя бы на половину.
Код который показал Wladimir не хочет работать в CBuilder 5 версии.
Мож конечно я какие нибудь библиотеки не подключаю.
Короче: есть форма, на ней есть графические кнопки, менюшки и т.д.
Надо сделать так, как например сделано в BsPlayer'e. Но я тут покумекал, пришел к выводу что можно все сделать регионами (HRGN) (обыкновенная теория множеств).
Но все же интересно, как ее сделать прозрачной(Хотябы на половину). |
|
Вернуться к началу |
|
|
gooamoko
Зарегистрирован: 26.12.2003 Сообщения: 98
|
Добавлено: Пт Авг 26 2005 05:48 Заголовок сообщения: |
|
|
Код не работает скорее всего потому, что AlphaBlend появился только в 6-й версии. _________________ Что один сделал, другой завсегда сломать сможет |
|
Вернуться к началу |
|
|
|