многослойные окна

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

многослойные окна

Сообщение AlexBlack » 09.02.2006 (Чт) 19:27

Допустим, я пользую многослойные окна.
Когда я запускаю функцию UpdateLayeredWindow, у меня перестаёт приходить сообщение WM_PAINT. А следовательно, и контролы не рисуются.
И даже при рисовании на hDC = GetWindowHDC( hWnd ) ровным счётом ничего не происходит.
Можно конечно перерисовывать всё окно целиком, но при большом количестве графики данный метод не подходит.
В итоге окно становиться красивым до боли, но мёртвее мёртвого моря.

Может мне кто-нибудь объяснить, как изменять такие «многослойные окна»?
Или это такая жестокая статика, что его лучше не юзать?
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 10.02.2006 (Пт) 19:39

Кто нибудь вообще пользует многослойные окна?


ОФФТОП
Ура!!! Я получил заслуженную звезду. :)
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 10.02.2006 (Пт) 20:14

AlexBlack
Ну я пользую =)
Только для сплэшформ именно по этой причине.
Можно имитировать данную фичу сложным регионом, но тогда не будет полупрозрачности части окна :roll:
Если всё делать своими ручками, они скоро отвалятся !

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 10.02.2006 (Пт) 20:54

Сейчас у меня работает SetLayeredWindowAttributes с флагом LWA_ColorKey.
А на кнопках регионы.
То есть ничего существенно в качестве графики улучшить не получиться?
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 10.02.2006 (Пт) 21:45

AlexBlack
При использовании SetLayeredWindowAttributes кнопки отображаются и так...
А вот после использования функции UpdateLayeredWindow действительно всё оооочень красиво, но без контролов......
(ну конечно можно их рисовать самому, правда это гхм...)
Если всё делать своими ручками, они скоро отвалятся !

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 11.02.2006 (Сб) 21:54

Все тупо ошибались. ( и я тоже )
Смотреть аттач.
Коментарии излишни.
Вложения
pngform_src.rar
Работа с UpdateLayeredWindow.
(378.41 Кб) Скачиваний: 79
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 11.02.2006 (Сб) 22:11

Да нет, комментарии уместны.
Во первых приложи пожалуйста ту оболочку GDI+, которая там используется =)
Во-вторых я уже чую, что юзерконтрол тож через gdiplus РИСУЕТСЯ, потому и отображается :roll:
Если всё делать своими ручками, они скоро отвалятся !

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 11.02.2006 (Сб) 22:22

оболочка GDI+ -- обычная чудобёртка Тёмыча. :lol:
Для тех кто не имеет такого счастья иметь у себя такую фиговину, прилепляю к посту эту самую чудобёртку. :)
Вложения
GDI+.rar
чудобёртка Тёмыча Чудобёрта!
:lol:
(54.59 Кб) Скачиваний: 64
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 11.02.2006 (Сб) 22:24

Ну чувствуешь ты правильно. Ещё пару штрихов и отрисовка контролов вообще передёт на автоматический уровень.
( Просто нужно буит иметь контролы работющие с ГДИ+ )
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 11.02.2006 (Сб) 22:42

AlexBlack
Зря смеешься, у мя этих оберток дофига, по ним собственно делаю без обертки =)
Не люблю таскать за собой лишнее :)
Если всё делать своими ручками, они скоро отвалятся !

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 11.02.2006 (Сб) 22:46

Я тоже. Но можно пойти к Тёмычу и выпросить исходники чудобёртки.

Ну так как тебе пример?
Какая у тебя скорость? ( у меня 15-16 милисекунд !!! )
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 11.02.2006 (Сб) 22:53

Угу неплохо, быстро =)
Вот щас посмотрю будет ли это работать если взять не UserControl а создать OWNER DRAW самому =)
Если всё делать своими ручками, они скоро отвалятся !

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 12.02.2006 (Вс) 16:08

SendMessage & WM_PRINT?

Сча сам тоже попробую. :)
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 12.02.2006 (Вс) 17:15

Сделал текстбокс.
Вобщем отослалаю ему при рендере WM_PRINT.
Работает. Но есть три недостатка:

1) Облать становиться проницаемой для собітий мыши.
2) Чёрный цает прозрачен.
3) Рисуется только с координатами (0,0)

Может придумаем как эту фигню обойти?
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com


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

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

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 86

    TopList