Windows XP, Lazarus 0.9.26
Я решил попробовать набросать интерфейс для одной разработки, хотел "чтоб было красиво" - поставил в параметрах компилятора библиотеку QT, скомпилировал, запустил. Очень обрадовался, когда обнаружил, что приложение положительно откликается на запуск с параметром -style=plastique (хотелось, чтобы с минимальными затратами был вид "как в КДЕ").
А дальше я обнаружил странную вещь: если кликнуть по пустому месту на форме, то сразу начинает ругаться Касперский, что моё приложение пытается внедриться во все процессы. Когда я переключил библиотеку виджетов на стандартную win32 - Касперский не реагировал на приложение.
В чём может быть проблема?
Lazarus, QT и Касперский
Модератор: Модераторы
-
Павел Ишенин
- постоялец
- Сообщения: 475
- Зарегистрирован: 24.03.2007 09:16:52
Я думаю это из-за того, что когда вы на что-то нажимаете, что имеет стиль csCaptureMouse то LCL просит захватить мышь через вызов SetCapture() в windows. Для Qt SetCapture() делает QWidget::grabMouse(), который внутри библиотеки Qt помимо вызова winapi SetCapture еще и устанавливает SetWindowsHookEx(WH_JOURNALRECORD, ...) который читает сообщения всех приложений.
Я был бы рад избавиться от этого хука и попросить Qt вызвать только SetCapture, но они не сделали такой возможности для простых смертных, хотя сами ею пользуются через приватные методы.
Я был бы рад избавиться от этого хука и попросить Qt вызвать только SetCapture, но они не сделали такой возможности для простых смертных, хотя сами ею пользуются через приватные методы.
Тогда я не совсем понимаю, как в отличие от этого функционирует PyQT? Или дело в событиях классов LCL
-
Павел Ишенин
- постоялец
- Сообщения: 475
- Зарегистрирован: 24.03.2007 09:16:52
PyQT может не требовать захвата мышинных событий, а для LCL - это обычное дело.
