-1

我有一个带有 WS_EX_LAYERED 扩展样式集的分层表单。我使用 CreateWindowEx(...) API 函数创建了一个子“EDIT”控件;控件在那里,但没有绘制,并且没有任何内容出现在表单上。

我知道在顶部窗口上使用 WS_EX_LAYERED 样式时,不再发送 WM_PAINT 消息,并且两个子控件都不会收到它,因此它不会出现。

请注意表单的不透明度设置为 255,并且使用 UpdateLayeredWindow(...) API 使用透明图像绘制背景。

当我将鼠标悬停在 EDIT 控件上时,会出现文本光标,我可以复制其中的文本。

我想我必须处理的问题是以某种方式使控件接受用户绘画。

我尝试使用与表单相同的技术绘制控件,为此我从表单创建了兼容的 DC,但我不知道这是否可能,我的控件仍未绘制。

如果我为该控件发送 WM_PRINTCLIENT 它应该工作吗?在那种情况下,DC应该是分层的父窗体?我也试过这个,但我无法让它工作。

正常形式:http: //img580.imageshack.us/i/formy.png/

分层形式:http: //img6.imageshack.us/i/layeredform.png/

我的问题是如何让我的编辑控件接受 alpha-blend-user-paint ?如何在分层表单上绘制 alpha 混合控件?

4

1 回答 1

0

最后我找到了一种方法,

我要做的是获取每个控件的位图图像并将其绘制在表单的背景上,所以......当我为表单应用 UpdateLayeredWindow 时,表单位图包含所有控件,

我仍然不知道这是否是最佳实践

该方法效果很好,但我必须完善它并添加更多交互+ alpha混合控件..另一方面功能在那里

这是:http: //img84.imageshack.us/img84/3172/73845647.png

于 2011-02-22T21:34:24.867 回答