Страница: 1 | 2 |
Вопрос: Transparentsy
Добавлено: 07.05.05 13:09
Автор вопроса: AgentFire | ICQ: 192496851
Как заставить окно быть немного прозрачным?
Ответы
Всего ответов: 20
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 07.05.05 13:19
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Public Sub TranspMe(ByVal lngHandle As Long, ByVal Persent As Integer) ' Прозрачность программы
Call SetWindowLong(lngHandle, &HFFEC, GetWindowLong(lngHandle, (&HFFEC)) Or &H80000)
Call SetLayeredWindowAttributes(lngHandle, cNull, (&HFF * (&H64 - Persent)) / &H64, &H2&
End Sub
Номер ответа: 2
Автор ответа:
ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #2
Добавлено: 07.05.05 16:30
а как это осуществляется на уровне аппаратном?
Номер ответа: 3
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #3
Добавлено: 07.05.05 23:17
чем тебе етот пример не нравится?
Номер ответа: 4
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #4
Добавлено: 08.05.05 02:07
Руллллез пример!!!! ради таких можно и делфи снести
Номер ответа: 5
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #5
Добавлено: 08.05.05 17:58
а чем те дельфи не нравится?
Номер ответа: 6
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #6
Добавлено: 08.05.05 18:04
Почему нравится... свойством AlphaBlend Да не, нормальный язык паскаль кто бы что не говорил. Ну, вБ лучше конечно
Номер ответа: 7
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #7
Добавлено: 08.05.05 19:13
writeln('Pascal - фуфло...');
Номер ответа: 8
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #8
Добавлено: 08.05.05 20:24
На дельфи это будет так же, да еще и без деклараций...
Номер ответа: 9
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #9
Добавлено: 08.05.05 22:10
2Noviks:
а чё тогда через Writeln? писал бы тогда Print, Echo ну или на самый худой конец printf
Номер ответа: 10
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #10
Добавлено: 08.05.05 22:26
Ну, как по старинке...
Номер ответа: 11
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #11
Добавлено: 12.05.05 08:05
Ну или так - модификация кода от sne
Public Sub SetTransparency(ByVal hwnd As Long, ByVal Value As Integer)
On Error GoTo erra
' Определяем доступна ли наша функция...
Dim vOSV As OSVERSIONINFO
vOSV.dwOSVersionInfoSize = Len(vOSV)
Call GetVersionEx(vOSV)
If Not vOSV.dwPlatformId = &H2 Or vOSV.dwMajorVersion < &H5 Then Exit Sub
If Value > 255 Or Value <= 0 Then Exit Sub
' Если доступна и значения верные, то делаем прозрачность
Call SetWindowLong(hwnd, &HFFEC, GetWindowLong(hwnd, (&HFFEC)) Or &H80000)
Call SetLayeredWindowAttributes(hwnd, vbNull, Value, &H2&
Exit Sub
erra:
End Sub
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 12.05.05 11:09
Что, что а обработчик ошибок можно отсюда исключить бесболезненно, имхо
Номер ответа: 13
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #13
Добавлено: 12.05.05 13:22
Можно
Номер ответа: 14
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #14
Добавлено: 12.05.05 15:07
Да, кстати...
[ssmile9][ssmile9][ssmile9]
Номер ответа: 15
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #15
Добавлено: 12.05.05 15:08
Блин, смайлы не кастуются...
Как их сделать?