【问题标题】:Window Sitters - layered windows colorkeying and clickthroughWindow Sitters - 分层窗口颜色键控和点击
【发布时间】:2009-07-16 17:30:18
【问题描述】:

几年前我在 Visual Basic 6 中制作了一个窗口保姆,它使用分层窗口颜色键来轻松地使表单非矩形。

本周早些时候,我尝试用 C# 重写 window sitter,判断旧代码一团糟,并注意到窗体客户端矩形内的任何点击都被窗体捕获,而 VB6 版本的点击落到任何地方如果您没有在任何可见部分内单击,则在下方。这当然是一件非常重要的事情。

手动调用分层 Windows API (VB6) 和 TransparancyKey 属性 (.Net) 之间是否存在一些我不知道的区别,或者这里还有更多?

【问题讨论】:

    标签: c# winapi vb6 layered-windows


    【解决方案1】:

    bugs 中有一个couple 与 TransparencyKey 相关。您在这里讨论的情况似乎都不是,但如果 API 存在更多问题,我不会感到惊讶。

    我们需要查看一些代码来尝试诊断到底发生了什么。

    【讨论】:

    • C# 端没有相关代码,只有那个属性。我无法访问原始的 VB6 版本,但那最多是两个 API 调用来设置颜色键...
    • A SetWindowLong 以首先启用分层 Windows 事物,然后使用 LWA_COLORKEY 和颜色为红色的 SetLayeredWindowAttributes。仅此而已,就像一种魅力。事实上,检测太旧的 Windows 版本需要更多代码。
    • 所涉及的表格是相关的。可以根据位深度、缓冲方案等触发错误。
    • 好吧,我想经典区域是我最好的选择。他们不需要经常快速地改变......
    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多