Какой API функой можно сделать...

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

Какой API функой можно сделать...

Сообщение Мика » 19.06.2003 (Чт) 10:12

Какой API функой можно сделать форму прозрачной?
Заранее спасибо!

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

Сообщение Aleksej » 19.06.2003 (Чт) 10:14

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

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

Сообщение Мика » 19.06.2003 (Чт) 20:11

Не работаетю Может быть из-за того что у меня Windows XP? У меня форма становится не експишним, а как в 98'ом винде :?

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

Сообщение Aleksej » 20.06.2003 (Пт) 8:43

Если тебе нужно без заголовка окна, то замени:
Rgn= CreateRectRgn(0, 0, FormName.Width, FormName.Height)

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 20.06.2003 (Пт) 17:06

Код: Выделить всё
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


TRANS - число от 10 до 255 (степень прозрачности, 10-максимальная прозрачность)

Данный код работает в XP

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 21.06.2003 (Сб) 0:21

X-BOND писал(а):TRANS - число от 10 до 255 (степень прозрачности, 10-максимальная прозрачность)

Данный код работает в XP


И не только в ХР а в 2000 , и минимальная прозрачность это 1 8)
ПРЕВЕД


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

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

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

    TopList  
cron