Прозрачность формы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
lilak
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 04.12.2004 (Сб) 17:57
Откуда: Israel

Прозрачность формы

Сообщение lilak » 04.12.2004 (Сб) 18:11

Подскажите, пожалуйста, как практически создать прозрачную форму в ВБ6?
Спасибо. :roll:

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 04.12.2004 (Сб) 18:41

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 Form_Load()
Dim Ret As Long

Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret

'128 - значение прозрачности, 0 - полностью прозрачна; 255 - не прозрачна
SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA
End Sub

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

lilak
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 04.12.2004 (Сб) 17:57
Откуда: Israel

Сообщение lilak » 04.12.2004 (Сб) 18:53

Спасибо тебе большое , xolod

lilak
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 04.12.2004 (Сб) 17:57
Откуда: Israel

Сообщение lilak » 04.12.2004 (Сб) 19:01

И ещё, xolod, если не трудно, подскажи, где можно прочитать о подобных хитростях,спасибо.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 04.12.2004 (Сб) 19:05


klop086
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 30.01.2004 (Пт) 8:46
Откуда: Москва

Сообщение klop086 » 04.12.2004 (Сб) 19:53

народ, а как нибудь можно прозрачность в Me или 9х сделать?
Сначала подумай, потом помолчи.

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 04.12.2004 (Сб) 21:11

Нет, архитектура ос не позволяет

ЗЫ: Правда можно вырезать из формы через каждый пиксел точку и будет тебе псевдо прозрачность, правда если мышкой попадешь в точку, форма потеряет фокус :wink:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 04.12.2004 (Сб) 21:20

Чисто теоретически - возможно. Берём окно целиком, и вручную на экране рисуем его с учётом прозрачности (т.е. цвета "под окном"). Но этот метод будет ЗВЕРСКИ медленный. К тому же, неясно, как просто отлавливать некоторые события - скажем, нажатия кнопок будет задавать уже не так легко.

klop086
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 30.01.2004 (Пт) 8:46
Откуда: Москва

Сообщение klop086 » 04.12.2004 (Сб) 21:44

не понял - что значит вырезать из формы точку?
Я давно ищу *.ocx , которая позволяла бы делать "дырки" в форме, может кто знает такую?
(у меня Millenium Edition).
Сначала подумай, потом помолчи.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 04.12.2004 (Сб) 22:43

klop086 писал(а):не понял - что значит вырезать из формы точку?
Я давно ищу *.ocx , которая позволяла бы делать "дырки" в форме, может кто знает такую?
(у меня Millenium Edition).

http://www.planet-source-code.com/vb/sc ... 6&lngWId=1


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 1

    TopList  
cron