【发布时间】:2020-02-05 23:25:42
【问题描述】:
在设计阶段,
- A(列表框)在 B(列表 Ctrl)之前绘制
- A 最初是不可见的
- A 覆盖 B 的一部分
在运行时,按钮切换 A 的可见性,当 A 可见时,将其置于 B 之上(使用 SetWindowPos(...))。
显示A时,不接收重叠区域的事件(例如,当我点击下图中的“item 4”和“item 5”时)。为什么以及如何解决?
可在此处访问示例代码https://138.197.210.223/test/test.zip。
【问题讨论】:
-
什么是 A 和 B?当没有重叠时,您会收到“事件”消息吗?
-
我猜你说的是对话资源。您尝试使用 tab 顺序(这是控件在脚本中出现的顺序 - 不,您不能指定绘图顺序)和 clip-siblings 属性(样式)。当然,控件 A 必须能够接收鼠标输入。您也可以尝试以编程方式设置 Z 顺序。
-
@ConstantineGeorgiou,你是对的,A 在 B 后面有跳位顺序。另一点:最初 A 的可见是错误的。有影响吗?无论如何,我看到 A 覆盖 B,但是当我单击重叠区域时,A 没有响应。如果我删除 B,A 会有响应。
-
尝试在 Tab 键顺序中将控件 A 放在 B 之前。如果 B 在此设置中隐藏 A,请为 B 设置剪辑兄弟样式。这应该可以。但我不知道这样的 UI 设计(即 A 在选项卡顺序中位于 B 之前)是否可以接受(尽管我无法想象两个重叠控件都接受用户输入的设计)。或者,您可以尝试从 B 中删除 Notify 样式(同样,如果可以接受的话)。
-
@ConstantineGeorgiou,我编辑问题,请看一下,谢谢。我也在 rc 文件中尝试了您对“WS_CLIPSIBLINGS”的建议,但它不起作用。