В моем проекте я создаю форму с непрозрачностью, контролируемой пользователем.Если форма была полностью прозрачной, события мыши «проваливались» (без моего вмешательства), иначе моя форма обрабатывала их.
После прочтения этого вопроса и переопределения свойства CreateParams, чтобы установить флаг WS_EX_TRANSPARENT
в моей форме, теперь он позволяет проваливать события мыши, когда непрозрачность имеет любое значение <255. </p>
Это именно то, что я хочу, но меня беспокоит то, что я не понимаю, почему это работает.
Из того, что я прочитал, WS_EX_TRANSPARENT предназначен для того, чтобы сделать форму прозрачной с помощью 'кража битов из формы под ним в методе Paint, поэтому:
Метод Paint моей формы и все элементы управления в нем никогда не должны вызываться, верно?Поскольку WS_EX_TRANSPARENT должен заставить Windows переопределять их, так почему это влияет на обработку ввода, а не на отрисовку моей формы?
Непрозрачность не должна влиять на обработку событий мыши, так какесли переопределяется Paint, «локальная» непрозрачность не должна иметь значения, нет?
Может кто-нибудь объяснить, что делает этот флаг на самом деле ?Как это работает?