![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
приветствую форумчан.
по прозрачным контролам есть несколько тем, по формам не узрел. 1) хочется сделать чтото вроде прямоугольника(естесственно), только с верхними закругленными краями. да так, чтобы ресайзить можно было. 2) по возможности сделать тень подкиньте пожалуйста мыслей для решения задачи. Добавлено через 5 минут и 11 секунд итак, пока пришел к следующему. за основу взять два окна. одно окно - собственно форма, второе - подложка(на ней рисуем тень). буду пробовать. пс. а вот как сделать закругления и ресайз пока не понял. |
|||
|
||||
| bugmenot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 3.7.2006 Репутация: 0 Всего: 1 |
--------------------
доска объявленийвсе о горных велосипедах |
|||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Посмотри в книги "С++ глазами хакера"
Там есть создание окна на основе картинки любой формы.... --------------------
google.com и это все. |
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
bugmenot, DrHex, спасибо за инфу!
Перпиксельную прозрачность посмотрел, даже уже сделал. но дочерние контролы в этом случае "в пролете"(не отрисовываются по-нормальному). да и опять же -в задачу входит поддержка ресайза. ..наверное можно использовать эту штуку для окна-подложки, попробую.. DrHex, ок, посмотрю книженцию. |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
В WNDCLASS структуре при создании ставь style = CS_DROPSHADOW И будет тень от окна. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
тут, скорее всего, придется при изменении размеров всегда переустанавливать регион окна, что-то вроде такого:
1. получение габаритов текущего региона окна (box) 2. получение габаритов окна (rw) 3. если габариты не равны, переустановить регион проверка прямоугольников включена для исключения рекурсии:
Это сообщение отредактировал(а) GremlinProg - 26.5.2009, 13:06 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
CS_DROPSHADOW.. в принцыпе можно и так наверное.
вот так делаю сейчас форму прозрачной. bmp - 32bit картинка с альфой
как можно по этому делу нарисовать например просто текст не прозрачный и разместить контролы, чтобы они были видны? или лучше использовать это только в виде подложки? GremlinProg, сейчас попробую понять мысль. CreateRoundRectRgn не делает ли он закругления всем 4углам? вот общая идея, посмотрите плз обратите внимание на сложную(проблемную) область, как реализовать пока не додумал. Это сообщение отредактировал(а) Emura - 26.5.2009, 13:29 |
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
уважаемые, возникла небольшая проблемка. рисую форму на основе WS_POPUP.
проблема вот в чем: при SW_MAXIMIZE окно разворачивается на полный экран, что совершенно не требуется. как бы обойти эту особенность стиля WS_POPUP ? собственно надо както контролировать это дело. когда надо фуллскрин - делаем, не надо - просто максимизируем. Это сообщение отредактировал(а) Emura - 28.5.2009, 00:24 |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Может имелось ввиду WS_MAXIMIZE ? Для разворачивания или восстановления окна можно посылать окну сообщение WM_SYSCOMMAND with parameters: if wParam SC_MAXIMIZE then maximizes the window. if wParam SC_RESTORE then restores the window to its normal position and size. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| GremlinProg |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
делает
да, есть такое, тут в нормальном режиме должен стоять заголовок (WS_CAPTION), а для максимизации окна нужно использовать ShowWindow, а не стиль WS_MAXIMIZE:
перед максимизацией (в режиме фуллскрина), выключай заголовок:
при восстановлении (в режиме фуллскрина) - включай его обратно:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||||
|
|||||||||
| Emura |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
Andrey44, GremlinProg, не правильно объяснил. имеется ввиду именно SW_MAXIMIZE - флаг при ShowWindow.
вот и загвоздка в том что заголовок то я не использую. рисую его сам на WS_POPUP. да, и еще проблема из таскбара минимизировать, максимизировать и меню вызвать по правой клавиши мыше не получается. это тоже связано с WS_POPUP ? GremlinProg, с регионами разобрался. но они не дают сглаженных краев, к сожалению.. Это сообщение отредактировал(а) Emura - 28.5.2009, 14:18 |
||||||
|
|||||||
| GremlinProg |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
) тогда все нормально
тогда пожалуй так просто не получится, т.к. перекрытое окно без заголовка быть не может (сначала хотел предложить снимать стиль WS_POPUP на выходе из фуллскрина) перехватывай WM_SYSCOMMAND в момент (0xFFF0 & wParam) == SC_MAXIMIZE и перекрывай стандартныую обработку как-нибудь так:
нет, это системное меню, за его показ отвечает стиль WS_SYSMENU
ну так регион - это только форма, а содержанием ты ее сам должен наполнить -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||||
|
|||||||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
GremlinProg, спасибо. буду разбираться.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |