Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Ну в принципе фокус удался, но контролы(объекты)не отображаются на Layered окне они как бы есть,даже события от них отробатываются,просто их не видно и ничего с этим не поделаешь. Но и тут можно схитрить,сверху нашего Layered окна можно наложить CustomWindow и таскать его вместе с главным окном имитируя одно целое окно Вот пример на основе функции. Пробуем работоспособность на разных системах.......
Выглядит уже прилично! Тень похожа на тень , правда при перетаскивании обозначается (намечается) окно большего размера, это немного удивило в первый раз. Еще, не понял, как радиобатоны должны повлиять и ввод текста (у меня ничего не поменялось). Радиокнопки не синхронизированы, когда вторую отметил, оказались отмеченными обе и отключить уже не удавалось. Что делаю не так? Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
У меня тоже ничего не исчезает. Если нажать на кнопку "Нажмите", то появляется другое окно вместо первого, вот и все изменения. Всё таскается, если кликнуть в стороне от тени или окна, то становится активным подлежащее окно, как и должно быть. Т.е. вроде все работает как надо. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
во время показа fade-in окна оно показывается в сером прямоугольнике который потом исчезает и нарисовывается тень. Полупрозрачная область вверху окна ок. ничего не исчезает, все ок. хрsp3. Как задавать вопросы
во время показа fade-in окна оно показывается в сером прямоугольнике который потом исчезает и нарисовывается тень.
Ну это я мутил, чтоб немного сгладить мерцание при наложении png маски. Главное,что работает полупрозрачная маска,а наложение работоспособных объектов это уже задача второстепенная -- потому что:
Quote (Гарик)
контролы(объекты)не отображаются на Layered окне они как бы есть,даже события от них отробатываются,просто их не видно и ничего с этим не поделаешь.
Сейчас скину пробник плагина -- попробуйте....
Сообщение отредактировано Гарик - Вт, 19 Июля 2011, 14:25
Они и не будут отображаться. Это такая особенность Layered-окон. Контролы придется отрисовывать самому. Происходит это потому что( если вкратце) то Layered-окно перестает получать сообщение WM_PAINT и компонент никогда не получит команду на отрисовку самого себя. Так,что(скорей всего) придётся юзать способ по наложению кустома поверх основного окна с тенью. Вот такие пироги с этой тенью.
Сообщение отредактировано Гарик - Вт, 19 Июля 2011, 16:38
Layered-окно перестает получать сообщение WM_PAINT
Гарик, с чего вы это взяли?
Вот пример Layered-окна (в NeoBook!) с кнопкой внутри:
В необушных окнах есть свои "тонкости отрисовки", есть и тонкости обработки сообщений, но изучать мне их предметно не было (и нет) никакой необходимости. Может вы чего полезного нароете....
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Как я понял SetLayeredWindowAttributes и UpdateLayeredWindow "немножко разные вещи" При использовании SetLayeredWindowAttributes с отрисовкой контролов всё хорошо,а при использовании UpdateLayeredWindow как раз таки наоборот.
Как я понял SetLayeredWindowAttributes и UpdateLayeredWindow "немножко разные вещи"
А, вот откуда такая инфа. Эка, куда вас потянуло...
Я ж упомянул в той "наводке" про UpdateLayeredWindow чисто интуитивно. Честно говоря, я никогда не пользовался UpdateLayeredWindow, и, естесственно, не вникал в тонкости её работы и назначения, но то, что SetLayeredWindowAttributes и UpdateLayeredWindow разные вещи, понятно хотя бы уже из состава парметров этих функций.
Как-нибудь, на досуге, почитаю про "последствия" и тонкости применения UpdateLayeredWindow. Хотя, а нафига оно мне надо? Будет день, будет пища!
Вообще, все это лишний раз подтверждает, что WinAPI вовсе не такая простая штука, как иногда кажется.
Добавлено (19 Июль 2011, 23:55) ---------------------------------------------
А вообще, так интересно читается самое первое (самое нижнее) сообщение из темы "Королевства Delphi"...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Как раз эти тонкости и последствия и сказываются на отображении объектов на окне.
Можно по-подробнее - что это за "тонкости и последствия"?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Имеем многослойное окно 1й слой прозрачный или почти,2слой это png картинка с альфой накладываем 2й слой на 1й контролы соответственно мы в любом случаи не увидим. За счёт этого и получается эффект полупрозрачных областей и этой долбанной тени.
C помощью SetLayeredWindowAttributes можно всё окно сделать прозрачным или полупрозрачным,либо назначить цвет полной прозрачности. Сделать определённую область полупрозрачной не получится,для этого и существует UpdateLayeredWindow.Как то так. Всё что перечитал по всему этому поводу разумеется не помню.
Сообщение отредактировано Гарик - Ср, 20 Июля 2011, 19:45
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Помимо объектов есть еще не приятная вещь. Мерцание окна. Нужно как то окно запускать за пределами экрана, а уже после накладывать маску и показывать в нужном месте. Ну и объекты это само собой. Плюс не удобно сами объекты размещать не видя того окна которое будет. Не хочешь читать хелп?
Ну от мерцания можно избавиться примерно так,правда наворочено кучу всего,но зато не мерцает. Или попробывать Aliena плагин ,который выполняет команды перед показом главного окна.
Добавлено (21 Июль 2011, 01:30) ---------------------------------------------
Quote (mishem)
не удобно сами объекты размещать не видя того окна которое будет.
Почему не видно,все объекты размещаем в контейнере(будущем кустоме),отоброжаем его в нужном месте,а при перемещении осн. окна тягаем кустом по этим же координатам относительно главного окна (приклеили окошко).
Это я предположительно высказался. Тестить нет времени. А когда время появляется, нет желания. Так как его не так много появляется, и охота отдохнуть. Не хочешь читать хелп?
Странность какая-то,неужели у одного Alienа такое хэ Все манипуляции в плагине касаются только главного окна,кустом с внутренними объектами тут вообще не при делах с какой радости они вообще пропадают непонятно