Прозрачная форма

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

Прозрачная форма

Сообщение Temonkuz » 06.07.2003 (Вс) 19:10

кАК сделать прозрачную форму?

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 06.07.2003 (Вс) 21:01

По програчности они бывают двух видов - контурные и бленд. Вообще, такая тема уже была на форуме. А так ищи на www.planet-source-code.com слово transparent. Найдешь до фига и больше!
Не так страшен русский танк, как его пьяный экипаж

Мика
Обычный пользователь
Обычный пользователь
 
Сообщения: 58
Зарегистрирован: 08.06.2003 (Вс) 10:27

Сообщение Мика » 07.07.2003 (Пн) 12:55

Держи!!!

Это кидаеш в модуль

Const LWA_COLORKEY = &H1
Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000

Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Sub SetTransForm(ByVal hWnd As Long, ByVal TRANS As Long)
SetWindowLong hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
SetLayeredWindowAttributes hWnd, 0, TRANS, LWA_ALPHA
End Sub

Это где угодно

SetTransForm Form1.hWnd, 100

0-255

0-проктически не видно
255-просто форма
У меня под XP работает! :D

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 07.07.2003 (Пн) 13:04

Это и будет работать только под w2k и ХР
Moderator VBStreets
---------------------------

Хой
Не математик
Не математик
 
Сообщения: 541
Зарегистрирован: 26.08.2002 (Пн) 0:21
Откуда: Россия

Сообщение Хой » 07.07.2003 (Пн) 15:55

И к тому же жутко тормозить при перетаскивании формы!
Лучше вырезать регионы!

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 07.07.2003 (Пн) 16:53

Вот так, а заголовок остаётся
'*****************************************************
'Процедура делает форму прозрачной
'FormName - передача формы в процедуру
'*****************************************************
Public Sub RebuildWindowRgn(FormName As Form)

Dim FullRgn As Long
Dim Rgn As Long
Dim CaptionHeight As Integer
Dim Control As Control

CaptionHeight = 22

FormName.ScaleMode = 3

FullRgn = CreateRectRgn(0, 0, FormName.Width, FormName.Height)

Rgn = CreateRectRgn(0, CaptionHeight, FormName.Width, _
FormName.Height)

CombineRgn FullRgn, FullRgn, Rgn, RGN_DIFF

For Each Control In FormName.Controls
If Control <> True Then
Rgn = CreateRectRgn(Control.Left + 2, (Control.Top + _
CaptionHeight), (Control.Left + _
Control.Width + 2), (Control.Top + _
Control.Height + CaptionHeight))
End If
CombineRgn FullRgn, FullRgn, Rgn, RGN_OR

Next Control

SetWindowRgn FormName.hWnd, FullRgn, True
End Sub

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 07.07.2003 (Пн) 17:17

Хой писал(а):И к тому же жутко тормозить при перетаскивании формы!
Лучше вырезать регионы!


Вот это ты зря. Как раз если вырезать регионы, то тут и будет тормозить!
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Хой
Не математик
Не математик
 
Сообщения: 541
Зарегистрирован: 26.08.2002 (Пн) 0:21
Откуда: Россия

Сообщение Хой » 07.07.2003 (Пн) 22:26

gaidar писал(а):Вот это ты зря. Как раз если вырезать регионы, то тут и будет тормозить!

Ну это смотря как их вырезать!
У меня, лично, регионы быстрее чем SetTransForm
Если пробывать на "медленных" машинах, то заметно ну а если но пнях 4-х то там разници не уловить!


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

    TopList