| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Непрозрачное окно при наведении мыши |
| Автор: Superklug 3.5.2009, 12:14 | ||
| Доброго времени суток! Появилась необходимость менять прозрачность окна при наведении мыши. Сначала пробовал обрабатывать события на вход/выход курсора, но они плохо работают. Например, если быстро переместить курсор, событие не возникает. Решил использовать таймер. В обработчике OnTimer проверял находится ли курсор в прямоугольнике окна. Но этот вариант тоже забраковал... Если мое окно перекрыто другим окном, то при наведении мыши на место пересечения, мое окно становится непрозрачном, хотя курсор при этом над чужим окном. Затем узнал о функции WindowFromPoint. Написал такой код:
Осталось решить небольшую проблему. Если курсор находится над всплывающем меню или над другой формой моего приложения, главное окно становится прозрачным. Как этого избежать? Возможно ли по хэндлу окна можно получить хэндл приложения, котороый, на сколько я понимаю, одинаков для всех моих окон? |
| Автор: Superklug 3.5.2009, 14:44 | ||
Сделал так:
Теперь при наведении на мои окна, главное окно остается непрозрачным. Однако для всех меню (MainMenu, PopupMenu) проблема осталась( |
| Автор: Superklug 3.5.2009, 21:31 | ||
Еще немного поразмыслив получил следующее:
Вроде все работает как надо. Тема закрыта. P.S. И зачем открывал тему спрашивается)) Ну надеюсь кому-нибудь пригодится... P.P.S. Если кто-то знает более красивое решение - напишите. |