Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
inf
-
- Обычный пользователь
-
-
- Сообщения: 53
- Зарегистрирован: 28.09.2006 (Чт) 21:10
- Откуда: мы все оттуда
inf » 20.11.2006 (Пн) 23:19
Доброго времени суток. У меня возникла проблемка. Вот делаю плавную прозрачность. Переход к непрозрачному состоянию нормальный а обратно не получается в чем дело? Помогите разобраться пожалуйста.
- Код: Выделить всё
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
Dim aStyle As Long
Dim Transparent As Byte
Private Sub Command1_Click()
On Error Resume Next
For Transparent = 150 To 255
aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
aStyle = aStyle Or WS_EX_LAYERED
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
Call SetLayeredWindowAttributes(Me.hWnd, 0, Transparent, LWA_ALPHA)
Next Transparent
End Sub
Private Sub Command2_Click()
On Error Resume Next
For Transparent = 255 To 150 Step -1
aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
aStyle = aStyle Or WS_EX_LAYERED
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
Call SetLayeredWindowAttributes(Me.hWnd, 0, Transparent, LWA_ALPHA)
Next Transparent
End Sub
Private Sub Form_Load()
Transparent = 150
aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
aStyle = aStyle Or WS_EX_LAYERED
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
Call SetLayeredWindowAttributes(Me.hWnd, 0, Transparent, LWA_ALPHA)
End Sub
-
inf
-
- Обычный пользователь
-
-
- Сообщения: 53
- Зарегистрирован: 28.09.2006 (Чт) 21:10
- Откуда: мы все оттуда
inf » 20.11.2006 (Пн) 23:40
И еще назрел вопрос: Как сделать полупрозрачной форму а контролы на ней не прозрачными?
-
BV
-
- Thinker
-
-
- Сообщения: 3987
- Зарегистрирован: 12.09.2004 (Вс) 0:55
- Откуда: Молдавия, г. Кишинёв
-
BV » 21.11.2006 (Вт) 2:29
Первое, хоть так:
- Код: Выделить всё
For Transparent = 0 To 105
aStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
aStyle = aStyle Or WS_EX_LAYERED
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, aStyle)
Call SetLayeredWindowAttributes(Me.hWnd, 0, 255 - Transparent, LWA_ALPHA)
Next Transparent
Второе - в поиск по "PNG ULW_ALPHA"
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
-
inf
-
- Обычный пользователь
-
-
- Сообщения: 53
- Зарегистрирован: 28.09.2006 (Чт) 21:10
- Откуда: мы все оттуда
inf » 21.11.2006 (Вт) 18:50
Скажите почему в этом месте пишет ошибку "переполнение"?
- Код: Выделить всё
For Transparent = 255 To 150 Step -1
-
tyomitch
-
- Пользователь #1352
-
-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 21.11.2006 (Вт) 19:01
Объяви Transparent как Integer.
-
inf
-
- Обычный пользователь
-
-
- Сообщения: 53
- Зарегистрирован: 28.09.2006 (Чт) 21:10
- Откуда: мы все оттуда
inf » 24.11.2006 (Пт) 14:11
BV писал(а):Второе - в поиск по "PNG ULW_ALPHA"
=(( Почемуто ничего полезного не находит. А если находит, то либо си либо делфи
Дайте ссылочку плз
-
BV
-
- Thinker
-
-
- Сообщения: 3987
- Зарегистрирован: 12.09.2004 (Вс) 0:55
- Откуда: Молдавия, г. Кишинёв
-
BV » 24.11.2006 (Пт) 16:18
Странно. А у меня
находит.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34