Вопрос: SetLayeredWindowAttributes не действует на User...
Добавлено: 08.11.06 23:50
Автор вопроса: -АлександР- | Web-сайт:sham.clan.su
SetLayeredWindowAttributes не действует на UserControl?
В форме все ok:
Private Sub Form_Load()
Dim ret As Long
ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
ret = ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, ret
SetLayeredWindowAttributes Me.hWnd, CLR_WHITE, 255, LWA_ALPHA ' LWA_COLORKEY
End Sub
Теперь в usercontrol:
Private Sub UserControl_Initialize()
SetObject
End Sub
Private Sub SetObject()
ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
ret = ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, ret
SetLayeredWindowAttributes Me.hWnd, CLR_WHITE, 0, LWA_ALPHA ' LWA_COLORKEY
End Sub
ReadProperties и InitProperties - тоже снабжены ей
SetLayeredWindowAttributes действует на UserControl, проверено. Ищи в примерах мой контрол RgnMake, смотри исходники. А вообще у тебя вроде ошибочка здесь - ты написал как будто собирался использовать LWA_COLORKEY, а подставил LWA_ALPHA - смысл уже утрачен. Может так?
ясно всё с тобой. покаж мне свой контрол? если не сложно, пошли пожалуйста на mc-black[собака]yandex[точка]ru
не могу найти где-то давно на форуме Александр Пащенко создавал тему и ему кто-то (вроде UU) ответил как сделать альтернативную полупрозрачнось без этих API - с помощью BitBlt. по новой велосипед изобретать не охота, хочу найти этот топик.. поиск-то по форуму глючный. может яндексом искать?
да, кстати яндекс иногда лучше ищет здесь, чем местный поиск))). главное только ключевые слова помнить)
Я недавно на васм.ру наткнулся на топик по обсуждению SetLayeredWindowAttributes для окон... http://www.wasm.ru/forum/viewtopic.php?id=18039 она меня натолькнула на мысль, тчо теоретически через get/setwindowlong можно помеять те стили окна, которые задаются в CreateForm, ну типа отняв WS_CHILD (или какие там параметры отвечают за это)
ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
ret = ret + WS_EX_LAYERED - WS_CHILD
SetWindowLong Me.hWnd, GWL_EXSTYLE, ret
и какие-нибудь еще параметры ... то программно сделав окно высокого уровня можно применить к нему прозрачность , а потом обратно сдлать его обычным, а прозрачность по идее должна остаться...
правда сейчас это просто идея, некогда было ее проверять изучать... но имхо это вполне реально и практично))
ясно всё с тобой. покаж мне свой контрол? если не сложно, пошли пожалуйста на mc-black[собака]yandex[точка]ru
хорошо, его тольок найти надо... впрочем там ничего особенного нет....