![]() |
|
![]() ![]() ![]() |
|
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Ещё раз добрый день!
Всё таки проблема со срезанием не исчезла! Проблема думаю в том, что кнопку я все равно создаю через Create, где задаю таки прямоугольник!!! Он то и перерисовывается когда поверх моего диалога появляется другое окно. Результат - bad.jpd из quest1.rar/ Кому не понятно, напоминаю, что я создал кнопки в виде шестигранников, помещаю их рядом друг с другом и при выполнении описанных событий http://forum.vingrad.ru/index.php?showtopic=102357 получаем вид с пятью кнопками, присоединенный к этому топику. Как избавиться от такого??? ![]() ![]() Присоединённый файл ( Кол-во скачиваний: 136 ) ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
и ещё!!! Например, жёлтая кнопка не отраатывает нажатие мышью в "верхнем треугольнике", который накрывается верхними кнопками(их прямоугольниками CRect, которые передавались в Create). Нажатие мыши отрабатываю так:
Как со всем этим бороться??? Кто нибудь ведь наверняка только и занимается тем, что рисует и использует кнопки разного вида ![]() ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
С перекрытием экстентов кнопок попробуй бороться с помощью стиля WS_EX_TRANSPARENT. Но не уверена. У нас нынче Coocky специалист по хитрым кнопкам.
А может, нужно в OnEraseBkgnd кнопок устанавливать ClipRegion, оставляя только шестиугольник. Что касается мыши - думаю, что нужно ее обрабатывать на PretranslateMessage диалога: выяснить, в чей регион попадает кнопка, и послать этому контролу сообщение WM_LBUTTONDOWN или что там. -------------------- ... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Пока шел домой, вспомнил о том, что Coocky чего то там писал похожее, а про обработку сообщения в родителе - похоже это единственное... Ща буду пробовать. Спасибо, но вопрос пока не снят
Добавлено @ 15:29 так, первая проблема ушла вместе с факом Coocky http://forum.vingrad.ru/index.php?showtopic=99226 WM_ERASEBKGRD - возвращаем истину и прямоугольник не заливается. Осталось с нажатием определиться. ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
начал делать в PreTranslateMessage и понял, что не знаю, где взять координаты при событии WM_LBUTTONUP
![]() Добавлено @ 15:47 похоже координаты передаются в Screen в pMsg->pt Добавлено @ 15:53 ещё lParam в нижней части содержит x, в верхней - y уже в "местных" координатах. ![]() ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Все, определяю какая кнопка нажата, но вот не получается правильно перенаправить сообщение!!!
Help Me пожалуйтса ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
pButton->SendMessage (pMsg->message,pMsg->wParam,MAKELPARAM(x,y));
Только x, y нужно пересчитать в кординаты контрола. И еще, позиция (lParam) приходит в клиентских координатах той кнопки, которой предназначено сообщение, т.е. pMsg->hWnd. Тебе нужно перевести их в координаты парента, перед тем, как анализировать попадание. Для этого удобно использовать MapWindowPoints. Но лучше действительно использовать pMsg->pt - там координаты всегда экранные. Примерно так:
-------------------- ... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
сделал так:
в TRACE всегда определяется четко! Но при работе с SendMessage всё равно работает коряво! То кнопка не нажимается, то все таки загорается нажатой не желтая, а красная или зеленая., а если не отображаются верхние как нажатые, то бывает, что когда подводишь на них мышь - они тут же отображаются как нажатые. Ничего понять не могу... -------------------- я не гольфист - я хоккеист |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
сделал так:
работает как и хотел, но не покидает ощущение, что как то не так сделано, через одно место похоже... Если можно это улучшить - то не стесняйтесь. ![]() Да, Coocky и Earnest просто так по плюсику - люблю я вас ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
За любовь спасибо
![]() Добавлено @ 17:28 Попробуй сделать как у меня в примере. Что тебя останавливает? Неужели думаешь, что тормозить будет? -------------------- ... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Earnest, Да нет, ничего такого я не думаю, так и делал вначале. Только мне похоже не понадобится загорание кнопок - это уже слишком! Эти кнопки и так будут загораться кучей цветов в зависимости от состояния => возможно умру делая ещё и mousemove. Но захочу посуицидить - займусь
![]() ![]() Одно толко плохо(это очень серьезно): получается, что в винде можно сделать нормальный контроль, то есть самодостаточный как CButton только в случае, когда объект создается в прямоугольнике!!!!!!!!!!!!!!! Когда я начинал делать шестигранную кнопку думал, что она будет самодостаточна ![]() ![]() Добавлено @ 20:15 Earnest, Кстати, вот почему не сделал(вспомнил!!! ![]() Я ведь кстати чего спрашивал? Мне казалось, что так как у меня написано несколько кривовато, так кривовато или нет? Как принято писать у профи? ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
самое смешное, что я отказался от применения этих шестиугольных кнопок!
![]() ![]() ![]() ![]() ![]() Добавлено @ 10:54 ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |