В нашем приложении есть окно инструментов, которое всплывает поверх окон документов. Он использует следующие стили для окна инструмента:
args.style = WS_POPUPWINDOW | WS_CAPTION;
args.exstyle = WS_EX_TOPMOST | WS_EX_TOOLWINDOW;
Проблема заключается в следующем: я в основном хочу, чтобы окно инструментов игнорировало события колесика мыши и передавало его в любое окно под ним. Таким образом, пользователь должен иметь возможность прокручивать документ (или содержимое другого окна), пока указатель мыши находится над окном инструмента.
Есть ли простой способ достичь этого, или я должен реализовать это трудным путем? (Найдите окно под мышью, для которого не установлен WS_EX_TOPMOST, затем отправьте ему поддельное событие WM_MOUSEWHEEL.)
Это проект C ++, но я думаю, что он довольно похож в C #.
РЕДАКТИРОВАТЬ: Чтобы уточнить вещи, Windows отправляет WM_MOUSEWHEEL в окно, которое имеет фокус клавиатуры, независимо от положения курсора. Я хочу изменить это и перенаправить событие в окно под курсором. Я реализовал это с помощью WindowFromPoint и PostMessage, которые работали хорошо, пока мы не представили окна инструментов. Мне в основном нужна функция WindowFromPointButIgnoreTopMostWindows …
Задача ещё не решена.
Других решений пока нет …