Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> custom button 
:(
    Опции темы
GremlinProg
Дата 22.4.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Emura @  22.4.2009,  17:50 Найти цитируемый пост)
б). контрол отрисовывается таким же способом, но перед отрисовкой в WM_PRINTCLIENT отсылаем еще и родителю сообщение WM_PRINTCLIENT, который отрисовывает сам себя и возвращает нам hdc. который мы используем, чтобы сделать контрол "прозрачным".

в том-то и дело, что родителю, ровным счетом, все равно на чем рисовать, он не возвращает девайс, а использует тот, что ему передается в параметре WPARAM

тут есть еще 2 возможных варианта рисования фона:
1. рисовать фон родителя прямо в WM_PAINT, перед посылкой WM_PRINTCLIENT
2. рисовать фон родителя как он сейчас и рисуется, в WM_PRINTCLIENT

оба визуально делают одно и то же, но с точки зрения повторного использования WM_PRINTCLIENT прозрачного окна, сильно различаются:
если использовать первый вариант, и при этом, на прозрачном контроле создать еще один прозрачный контрол, то этот дополнительный контрол уже не будет видеть то, что находится на непрозрачном, т.е. на пра-родителе

т.о., по возможности, следует использовать второй вариант

Цитата(Emura @  22.4.2009,  17:50 Найти цитируемый пост)
Кстати, можно ведь попробовать обойтись и без WM_PRINTCLIENT. Создаем например...

ну конечно, если у тебя прозрачное окно четко привязано к родителю
Цитата(Emura @  22.4.2009,  17:50 Найти цитируемый пост)
Естесственно это относится в большей степени к самописным контролам.

именно так

WM_PRINT - универсальный вариант, если на него опираться во всех контролах проекта, то можно спокойно решать сложные полиморфные граф. задачи, разделяя функционал по классам и наследуя один от другого (именно для этого и производится полноценная посылка сообщений "самому-себе", т.е. не завершаем класс, а позволяем его продолжить, перекрыть)


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Emura
Дата 22.4.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.2.2009

Репутация: 1
Всего: 1



Цитата

он не возвращает девайс, а использует тот, что ему передается в параметре WPARAM

именно, опечатался.

Цитата

ну конечно, если у тебя прозрачное окно четко привязано к родителю

да, пока именно так.
остоется эксперементировать с полученной информацией и выбирать подходящий вариант.

GremlinProg, огромное спасибо за участие в дискуссии и за помощь в разрешении проблемы!  smile 

PM   Вверх
Andrey44
Дата 23.4.2009, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Цитата(Emura @  22.4.2009,  14:45 Найти цитируемый пост)
Спасибо за уточнения!  smile Интересно и мельтешня контролов устраивала?? smile 

А какая мельтешня что-то я не понял?Никаких морганий и чего-то подобного нет.
Вот попробую собрать маленький пример завтра, тогда и покажу.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Emura
Дата 25.5.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.2.2009

Репутация: 1
Всего: 1



эх, практически любимая тема smile 

с прозрачностью контролов и способами ее реализации разобрались. GremlinProg, Andrey44 спасибо за помощь, это тема еще многим ищущим будет полезна!

а вот теперь я взялся пытать форму
1) хочется сделать чтото вроде прямоугольника(естесственно), только с верхними закругленными краями. да так, чтобы ресайзить можно было.
2) по возможности сделать тень

если делать регионом то как возможно реализовать ресайз?


подкиньте пожалуйста мыслей для решения задачи.


PM   Вверх
GremlinProg
Дата 25.5.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



в этой теме и так решается уже более одного вопроса
если так дальше ее нагружать, она будет нечитабельной
создай новую тему


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0589 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.