Альфа-смешанный элемент управления в многоуровневом окне в C#
-
14-11-2019 - |
Вопрос
у меня есть многоуровневая форма с расширенным набором стилей WS_EX_LAYERED.я создал дочерний элемент управления «EDIT», используя функцию API CreateWindowEx(...);элемент управления есть, но не нарисован, и в форме ничего не отображается.
я знаю, что при использовании стиля WS_EX_LAYERED в верхнем окне сообщение WM_PAINT больше не отправляется, и ни один дочерний элемент управления не получит его, поэтому оно не появляется.
обратите внимание, что непрозрачность формы установлена на 255, а фон нарисован прозрачным изображением с использованием API UpdateLayeredWindow(...).
когда я навожу указатель мыши на элемент управления EDIT, появляется текстовый курсор, и я могу скопировать текст внутри него.
Я предполагаю, что проблема, с которой мне приходится иметь дело, заключается в том, чтобы каким-то образом заставить элемент управления принимать пользовательскую отрисовку.
Я попробовал нарисовать элемент управления той же техникой, что и форму, и для этого я создал совместимый DC из формы, но я не знаю, возможно ли это вообще, мой элемент управления все еще не нарисован.
должно ли это работать, если я отправлю WM_PRINTCLIENT для этого элемента управления?в этом случае DC должен быть многоуровневой родительской формой?я тоже пробовал это, но не смог заставить это работать.
нормальная форма: http://img580.imageshack.us/i/formy.png/
слоистая форма: http://img6.imageshack.us/i/layeredform.png/
мой вопрос: как мне заставить мой элемент управления редактирования принимать альфа-смешанную пользовательскую краску?как мне нарисовать элемент управления с альфа-смешением на многослойной форме?
Решение
в конце концов я нашел способ сделать это,
мне нужно было получить растровое изображение каждого элемента управления и нарисовать его на фоне формы, чтобы...когда я применил UpdateLayeredWindow для формы, растровое изображение формы содержало все элементы управления,
хотя я до сих пор не знаю, является ли это лучшей практикой
метод работает хорошо, но мне нужно его усовершенствовать и добавить больше взаимодействия + смешанные элементы управления альфа-каналом..с другой стороны функциональность есть