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

У меня есть многоуровневая форма с расширенным набором стилей WS_EX_LAYERED. я создал дочерний элемент управления "РЕДАКТИРОВАТЬ", используя функцию API CreateWindowEx (...); элемент управления находится там, но не окрашен, и на форме ничего не отображается.

я знаю, что при использовании стиля WS_EX_LAYERED в верхнем окне сообщение WM_PAINT больше не отправляется, и ни один дочерний элемент управления не получит его, поэтому оно не появляется.

пожалуйста, примите во внимание, что непрозрачность формы установлена ​​на 255, а фон закрашен прозрачным изображением с помощью API UpdateLayeredWindow (...).

когда я наведите курсор мыши на элемент управления "РЕДАКТИРОВАТЬ", появится текстовый курсор, и я смогу скопировать текст внутри него.

Я полагаю, что проблема, с которой мне приходится иметь дело, заключается в том, чтобы каким-то образом заставить элемент управления принимать пользовательскую краску.

Я попытался нарисовать элемент управления той же техникой, что и в форме, и для этого я создал совместимый DC из формы, но я не знаю, возможно ли это вообще, мой элемент управления все еще не окрашен.

это должно работать, если я отправлю WM_PRINTCLIENT для этого элемента управления? в таком случае DC должен быть многоуровневой родительской формой? Я также попробовал это, но я не мог заставить это работать.

нормальная форма: http://img580.imageshack.us/i/formy.png/

многослойная форма: http://img6.imageshack.us/i/layeredform.png/

мой вопрос: как мне сделать, чтобы мой элемент управления редактирования принимал alpha-blended-user-paint? Как нарисовать альфа-смешанный элемент управления на многослойной форме?

1 ответ

Решение

В конце концов я нашел способ сделать это,

мне нужно было получить растровое изображение каждого элемента управления и нарисовать его на фоне формы, чтобы... когда я применил UpdateLayeredWindow к форме, растровое изображение формы содержало все элементы управления,

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

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

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

Другие вопросы по тегам