【问题标题】:Transparent text box透明文本框
【发布时间】:2013-04-14 13:36:55
【问题描述】:

我想用一个透明的只读文本框来代替标签;允许用户选择+复制文本。与 Windows 资源管理器在文件属性窗口中使用的完全相同:

我发现了类似的问题:Making a TextBox Transparent

那里的评论表明建议的解决方案不适用于 ClearType。但我对建议的“AlphaBlendTextBox - .NET 的透明/半透明文本框”组件的测试显示不同。

无论如何,对于这样一个“简单的任务”,代码看起来相当复杂。他们确实将父控件图像保存到位图,一遍又一遍地绘制该位图,并在其上放置文本。我希望必须有一个解决方案,将背景的绘制委托给父控件。

他们的解决方案可能很复杂,因为它也允许进行 alpha 混合。我不需要这样。我只想看到文本背后的父背景。有没有更简单/更智能的方法?

请注意,我对任何 winapi 解决方案(纯 winapi、MFC、WinForms、Delphi 等)都很满意。

【问题讨论】:

    标签: winapi textbox transparency


    【解决方案1】:

    根据 Spy++,这是一个典型的 Edit 控件,WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOPARENTNOTIFY 为扩展样式,WS_CHILDWINDOW | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL | ES_READONLY 为原始窗口样式。

    我已经在 Win32 中对其进行了测试,我可以确认它可以满足您的要求。

    另外,下次您想模仿其他控件的外观时,只需启动 Spy++ 即可获取有关它们的详细信息。

    【讨论】:

    • 感谢您的回复。将测试它。实际上,在我问之前,我用 Spy++ 检查了控件。但是我没有发现关于样式的任何有趣的东西,所以我认为必须分配一些 wndproc 来使其变得透明。你知道这些风格中的哪一种会变魔术吗?
    • @MartinPrikryl 排除 WS_EX_CLIENTEDGE 并包含 ES_READONLY 应该可以解决问题。同样,您可以将它与典型的可编辑编辑控件进行比较,看看有什么区别:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2017-05-16
    • 2014-10-24
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多