Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: 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 - тоже снабжены ей

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 09.11.06 15:00
У юзерконтрола и так есть Transpariant

Ответить

Номер ответа: 2
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #2
Добавлено: 09.11.06 16:42
У юзерконтрола и так есть Transpariant
Есть то есть, но если на контроле что-то нарисовано, типа
    Line (0, 0)-(1000, 10000)
То этого не видно :(
SetLayeredWindowAttributes - лучше. Он именно с цветами работает

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 10.11.06 21:58
Autoredraw ?

Ответить

Номер ответа: 4
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #4
Добавлено: 10.11.06 23:29
Делал и false и труе, не то

Ответить

Номер ответа: 5
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #5
Добавлено: 10.11.06 23:31
Это autoredraw :), не то!
Дело в том, что линия попадает на территорю прозрачности. А так контрол прозр. и невид, то и то, что на нарис. - тоже

Ответить

Номер ответа: 6
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 24.01.07 09:47
SetLayeredWindowAttributes действует на UserControl, проверено. Ищи в примерах мой контрол RgnMake, смотри исходники. А вообще у тебя вроде ошибочка здесь - ты написал как будто собирался использовать LWA_COLORKEY, а подставил LWA_ALPHA - смысл уже утрачен. Может так?

SetLayeredWindowAttributes Me.hWnd, CLR_WHITE, 0, LWA_COLORKEY

Ответить

Номер ответа: 7
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #7
Добавлено: 25.01.07 16:36
mc-black спасибо за ответ! )) но много воды уже с тех пор утекло))) как вспоминаю
Ищи в примерах мой контрол RgnMake, смотри исходники.
я уже его наизусть выучить успел :))) и свой написал... увы, это медленно (

SetLayeredWindowAttributes не действует на UserControl
с тех пор я узнал, что оказывается эта функция действует только для окнон высокого уровня, то бишь форм

А вообще у тебя вроде ошибочка здесь - ты написал как будто собирался использовать LWA_COLORKEY, а подставил LWA_ALPHA - смысл уже утрачен. Может так?
да это я просто экспериментировал с этой функцией)))

Ответить

Номер ответа: 8
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #8
Добавлено: 25.01.07 16:53
ясно всё с тобой. покаж мне свой контрол? если не сложно, пошли пожалуйста на mc-black[собака]yandex[точка]ru

не могу найти где-то давно на форуме Александр Пащенко создавал тему и ему кто-то (вроде UU) ответил как сделать альтернативную полупрозрачнось без этих API - с помощью BitBlt. по новой велосипед изобретать не охота, хочу найти этот топик.. поиск-то по форуму глючный. может яндексом искать?

Ответить

Номер ответа: 9
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #9
Добавлено: 26.01.07 10:08
может яндексом искать?
да, кстати яндекс иногда лучше ищет здесь, чем местный поиск))). главное только ключевые слова помнить)

Я недавно на васм.ру наткнулся на топик по обсуждению 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
хорошо, его тольок найти надо... впрочем там ничего особенного нет....

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам