-
dima_1st (19.07.10 15:16) [0]Есть необходимость создать окно не стандартной формы.
Применяю SetWindowRgn - всё ок. При таком подходе получаю рубленные (пиксельные) края формы. Хочется получить сглаженные края. На форме есть контролы, по этому использовать UpdateLayeredWindow не получается.
Пробовал делать первое окно с альфа каналом и UpdateLayeredWindow, а второе обычное и встроить в него, но такой фокус не удается..
Есть у кого нить решения, в какую сторону смотреть? -
dima_1st (19.07.10 15:18) [1]
-
0x00FF00 © (19.07.10 20:01) [2]оффтоп:
используйте Linux! =)
тут Вам и Cairo, и Compiz, и GTK:
http://s39.radikal.ru/i083/1007/4e/45c4f84d0471.png
Я просто воткнул Вашу "тестовую" картинку на форму, проставил стиль, накидал кнопочек — и вуаля =)
по теме:
А почему не получается использовать UpdateLayeredWindow, если есть контролы? Вроде ж их нужно просто "вручную" пнуть, чтоб перерисовались (насколько не изменяет мне память)?
**пока что сам изучить проблему не могу — разворачиваю на виртуальную машину свой старинный Windows-бэкап; возможно, минут через дцать буду готов к разбору. -
0x00FF00 © (19.07.10 21:05) [3]В общем, поскрёб я тут по сусекам Интернета (хотя по уму, это занятие нужно было бы оставить для аффтора ветки), и набрёл вот на что:
http://www.codeproject.com/KB/dialog/SemiTranDlgWithCtrls.aspx
Отсюда вывод: принципиально, задуманное всё же реализуемо.
Но на практике, это выливается в терморектальный изврат %) -
dima_1st (20.07.10 12:22) [4]
> А почему не получается использовать UpdateLayeredWindow,
> если есть контролы? Вроде ж их нужно просто "вручную" пнуть,
> чтоб перерисовались (насколько не изменяет мне память)?
>
Потому, что такого рода окно не дает размещать на себе контролы. Этот стиль окна используется только для рисования. Как только пытаешся присвоить parent контрола такому окну, всё рушится.