Как удалить прозрачность с окна?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Как удалить прозрачность с окна?

Сообщение X-BOND » 22.09.2003 (Пн) 17:26

То есть имеем окно, которому присвоена, допустим 50% прозрачность.
Как это окно вернуть к обычному состоянию?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.09.2003 (Ср) 4:55

Сейчас я кину в тебя файлом :D

Да и во всех вас тоже, впрочем... Я тут один модулёк зажал 8)

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

Сообщение X-BOND » 24.09.2003 (Ср) 9:20

Спасибо.
Методом от противного нашел простой способ:
SetWindowLong hWnd, GWL_EXSTYLE, 8

Но после этого некоторые элементы формы не прорисовались.
Как можно обновить форму через hWnd ?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.09.2003 (Чт) 6:37

Мне кажется, надо для КАЖДОГО элемента управления псать такой код, так как каждый (ИМХО) имеет свой собственный hWnd, прямо не зависящий от (!кажется!) hWnd матери-формы...

Как это сделать - "с налёта" не знаю :oops: Подождём ответа...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.09.2003 (Чт) 9:41

С налёта предлагается начать копать в направлении enumwindows и enumchildwindows :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

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

Я нашел пример обновления окна
RedrawWindow(hwnd, ByVal 0&, ByVal 0&, 1)

Но это не действует на ToolBar формы. Собственно этот ToolBar единственный и не перерисовывается. А если пишу Form.Refresh то он вообще исчезает. Возвращается только после изменения размеров формы или перемещения формы по экрану.
Глюк, однако

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 26.09.2003 (Пт) 17:45

2GSerg

Просю :) поподробнее :oops:

Просьба, конечно, не в тему, но MSDN у меня нет :(
А качать - инет медленный... Так что я вас потом на руках покачаю :P

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.09.2003 (Сб) 8:17

Код: Выделить всё
'in a form
Private Sub Form_Load()
    'KPD-Team 2000
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Me.AutoRedraw = True
    EnumChildWindows ТУТ ХВНД ИСКОМОГО ОКНА, AddressOf EnumChildProc, ByVal 0&
End Sub
'in a module
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
    'Юзаем hwnd!!!
   
End Function


В Callback нам будут передаваться хэндлы окон. Юзаеем на них setlayeredwindowattributes и всё...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.09.2003 (Сб) 8:27

Спасибо :!:


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

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

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

    TopList