|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||||||||||
Кнопки перестают реагировать на мышь при прозрачной форме30.12.2023, 17:28. Показов 1980. Ответов 3
Метки нет (Все метки)
Здравствуйте!
Я у себя в самописной демке, где разные шарики гоняются друг за другом, решил сделать режим "прозрачности", чтобы шарики бегали прямо по рабочему столу. Стал изучать вопрос в инете, нашел простенький пример, попробовал, все заработало. Суть примера в использовании SetLayeredWindowAttributes(). В конструкторе:
В рабочем окне, где бегают шарики, я разместил небольшую узкую панель с кнопками, которая "прижата" к нижнему краю окна. У панели парент - окно, у кнопок, соответственно, панель. Вглядит это все примерно так: Но возникла следующая проблема: Проблема состоит в том, что в этом режиме (когда фон прозрачный), кнопки внизу не реагируют на мышь. Причем не "ловят" именно клик, а вот событие "mouseover" ловят (кнопка реагирует изменением подсветки). Эксперимент показал следующее: 1. Высота панели - 22 пикселя. Если "уменьшить" прямоугольник по Y на 40 пикселей (т.е., над панелью остается "полоса" на 18 пикселей), то кнопки начинают реагировать на клик мышки. Если уменьшать на меньшее значение, то область клика на кнопках "опускается". Т.е., в верхней части кнопки не реагирует на клик, а в нижней - реагируют. 2. Если "сузить" прозрачный прямоугольник, то перестают реагировать на клик только те кнопки, который под ним. Те, что остались слева/справа - реагируют. 3. При изменении цвета прямоугольника (на любой "непрозрачный") все работает. Я попытался разобраться, что на самом деле делает функция SetLayeredWindowAttributes(), но в инете, в основном, только ее описание и примеры, как с ее помощью делать прозрачные окна. Насколько я понимаю, при рисовании прямоугольника через dc никаких объектов/контролов создаваться не должно. Как цвет может влиять на данную ситуацию?
0
|
|||||||||||
| 30.12.2023, 17:28 | |
|
Ответы с готовыми решениями:
3
Через некоторое время работы в недавно обновленной до 10-ки винде, перестают реагировать USB клава и мышь Иногда гаснет экран, кнопки перестают реагировать даже на системном блоке Мышь то перестает реагировать, то бегает сама по экрану, прокручивает страницу, кнопки сами нажимаются :((( |
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,119
|
|
| 31.12.2023, 14:50 | |
|
Constcat, не очень понятна ваша проблема, но могу кое-что предположить. Возможно дело в том, что для прозрачных окон особым образом определяется факт нахождения курсора мыши над окном. Вообще, мышь является общим ресурсом. В обычном состоянии сообщения мыши направляются тому окну над которым находится курсор мыши. И не важно какое окно сейчас является активным. Без этого нельзя было бы мышью переключаться между окнами. По умолчанию для прозрачного окна учитывается прозрачность пикселя над которым находится курсор мыши. И если курсор находится над прозрачным пикселем, то сообщения мыши направляются не прозрачному окну, а окну под ним. Такое поведение не совсем очевидно для людей начинающих экспериментировать с подобными окнами и по началу может ставить в тупик. Возможно вам удастся переопределить стандартное поведение мыши сделав свой обработчик сообщения WM_NCHITTEST.
1
|
|
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,141
|
|
| 31.12.2023, 15:46 | |
|
Constcat, в Qt я заливал окно почти прозрачным фоном, например "#01000001" (ARGB). Тут, наверное, можно так же поступить
0
|
|
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||
| 31.12.2023, 19:30 [ТС] | |||
|
Я это, скажем так, принял, как особенность реализации))) Но панель у меня "непрозрачная", и кнопки непрозрачные. И судя по эксперименту, область клика находится где-то ниже кнопок, потому что когда я "поднимаю" прозрачный прямоугольник, то "поднимается" и область клика в кнопках. Можно подобрать такие значения, при которых нижняя половина кнопок будет реагировать на клик, а верхняя - нет. Добавлено через 1 час 32 минуты Да, когда щелкаешь по кнопкам, то основное окно как бы "теряет фокус", т.е., создается впечатление, что клик передается куда-то за окно. Хотя под кнопками, как я понимаю, лежит непрозрачная панель. Добавлено через 57 секунд
0
|
|||
| 31.12.2023, 19:30 | |
|
Помогаю со студенческими работами здесь
4
Windows и программы через некоторое время перестают реагировать на клики мыши Мышь перестает реагировать Перестают работать кнопки навигации при переводе с языка на язык При добавлении прозрачной кнопки на webbrowser цвет фона всё равно непрозрачный При добавлении компонента DataGridView перестают работать всплывающие подсказки на форме Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|