Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.119.199] |
|
Сообщ.
#1
,
|
|
|
Прива. Я тут накатал примерчик про прозрачность формы, точнее 5 примеров. Просто везде частенько спрашивают "Как?".
Прикреплённый файл_prozrachnost.rar (18.26 Кбайт, скачиваний: 912) |
Сообщ.
#2
,
|
|
|
Да как - то у меня не работает. наверно потому что Windows Me. А вот пример, вызывай функцию Transparent с именем формы или просто Transparent Me. Только с Shape & Line похоже не тянет.
ЭТО В МОДУЛЬ. Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal Hrgn As Long, ByVal bRedraw As Boolean) As Long Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long Public Const RGN_DIFF = 4 Public Const RGN_OR = 2 Public Function Transparent(FormName As Form) Dim FullRgn As Long Dim Rgn As Long Dim CaptionHeight As Integer 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 FormName.BorderStyle = 1 Or FormName.BorderStyle = 3 Or FormName.BorderStyle = 4 Or FormName.BorderStyle = 5 Then CaptionHeight = 0 Rgn = CreateRectRgn(Control.Left + 3, (Control.Top + CaptionHeight + 22), (Control.Left + Control.Width + 3), (Control.Top + Control.Height + CaptionHeight + 22)) CombineRgn FullRgn, FullRgn, Rgn, RGN_OR ElseIf FormName.BorderStyle = 2 Then CaptionHeight = 0 Rgn = CreateRectRgn(Control.Left + 4, (Control.Top + CaptionHeight + 23), (Control.Left + Control.Width + 3), (Control.Top + Control.Height + CaptionHeight + 23)) CombineRgn FullRgn, FullRgn, Rgn, RGN_OR Else CaptionHeight = 0 Rgn = CreateRectRgn(Control.Left + 0, (Control.Top + CaptionHeight), (Control.Left + Control.Width + 0), (Control.Top + Control.Height + CaptionHeight)) CombineRgn FullRgn, FullRgn, Rgn, RGN_OR End If Next Control SetWindowRgn FormName.hwnd, FullRgn, True End Function |
Сообщ.
#3
,
|
|
|
Я тут тоже накатал, если кому надо то...
Прикреплённый файлprozrachnost.zip (2.14 Кбайт, скачиваний: 245) |
Сообщ.
#4
,
|
|
|
И ещё чуть не забыл. В этом аттаче 3 примера.
Прикреплённый файлProzrachno_rgn.rar (6.75 Кбайт, скачиваний: 236) |
Сообщ.
#5
,
|
|
|
Неплохо бы отдельные контролы делать ПОЛУпрозрачными
|
Сообщ.
#6
,
|
|
|
1. Он говорит о том чтобы сами контролы были полупрозрачными.
2. Юзай Clear C или asm. Будешь таскать Office на дискетке. Кто как хочет тот так и .... |
Сообщ.
#7
,
|
|
|
Цитата nash @ 1. Он говорит о том чтобы сами контролы были полупрозрачными. 2. Юзай Clear C или asm. Будешь таскать Office на дискетке. Кто как хочет тот так и .... Со вторым пунктом поподробнее ( кинь ссылки ) |
Сообщ.
#8
,
|
|
|
Super-Vadim ты в будующем можеш EXE'шник в архивы кидать, а то на работе есть инет а нема VB
|
Сообщ.
#9
,
|
|
|
Хорошо! В будущем так и буду делать!
Genetik спасибо за совет! Ну, всетаки VB наверно должен быть у чела, который качает исходники с Visual Basic. Общие вопросы? |
Сообщ.
#10
,
|
|
|
Цитата Super-Vadim @ Хорошо! В будущем так и буду делать! Genetik спасибо за совет! Ну, всетаки VB наверно должен быть у чела, который качает исходники с Visual Basic. Общие вопросы? На работе нам директор не разрешает ставить всякую фигню. А так у меня один из твоих 3 примеров не работает |
Сообщ.
#11
,
|
|
|
Какой именно не пашет?
|
Сообщ.
#12
,
|
|
|
В папке Prozrachno лежит примерчик который походу должен делать форму прозрачной через таймер. Форма мерцает но не фурычит, т.е. её прозрачность одинакова, она мигает и весь десктоп вместе с ней И код я че то не понял
Или смысл примера в другом? |
Сообщ.
#13
,
|
|
|
Цитата Genetik @ В папке Prozrachno лежит примерчик который походу должен делать форму прозрачной Private Sub Form_Load() gWH = Me.hwnd dl = SetWindowLong(gWH, GWL_EXSTYLE, WS_EX_TRANSPARENT) End Sub Private Sub Timer1_Timer() dl = GetWindowRect(gWH, vRect) vRect.Right = vRect.Right - 50 dl = InvalidateRect(0, vRect, 1) End Sub Да, проект этот мозгами особо не пахнет. Когда его писал мне ещё не была известна функция SetLayeredWindowAttributes. |
Сообщ.
#14
,
|
|
|
Цитата Super-Vadim @ Да, проект этот мозгами особо не пахнет. Когда его писал мне ещё не была известна функция SetLayeredWindowAttributes. Ага, зато сам вышел из проблематичной ситуации, своими силами и знаниями |