Альфа-смешанный элемент управления в многоуровневом окне в C#

StackOverflow https://stackoverflow.com/questions/5015036

Вопрос

у меня есть многоуровневая форма с расширенным набором стилей 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 для формы, растровое изображение формы содержало все элементы управления,

хотя я до сих пор не знаю, является ли это лучшей практикой

метод работает хорошо, но мне нужно его усовершенствовать и добавить больше взаимодействия + смешанные элементы управления альфа-каналом..с другой стороны функциональность есть

вот: http://img84.imageshack.us/img84/3172/73845647.png

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top