【问题标题】:Make Main HWND Receive 2nd Degree Child Events使主要 HWND 接收 2 级子事件
【发布时间】:2016-04-28 23:03:20
【问题描述】:

我有一个 WinAPI 按钮控件,其父控件是静态控件(而不是主 HWND)。单击按钮时,主 HWND 不会收到事件。 *注意静态控件是主 HWND 的子控件。

据我了解,这是设计的,因为静态控件将接收事件。如果我错了,请纠正我。

有什么方法可以让主 HWND 接收到BN_CLICKED 事件?也许我可以设置按钮将其事件发送到主 HWND? *注意:使按钮成为主 HWND 的直接子级并不是最好的解决方案,因为静态控件几乎是该按钮和许多其他按钮的容器。

【问题讨论】:

  • 您可以让中间静态控件将消息转发到主窗口。
  • STATIC 控件视觉上对其他控件进行分组。这不是使用任何父/子关系来完成的,而是通过将控件定位在 STATIC 控件内来完成的。
  • @IInspectable: 但分组控件必须是 STATIC 控件的子控件。它不能对另一个窗口的子控件进行分组。仅仅将控件定位在STATIC 上而不使它们成为STATIC 控件的实际子级是没有意义的。
  • @RemyLebeau:你说得对,我想的是GroupBox 控件而不是Static 控件。
  • @IInspectable:在 GroupBox 中显示的控件仍然必须是 GroupBox 的子项。这就是它知道将哪些控件组合在一起的方式。

标签: winapi


【解决方案1】:

正如 Raymond Chen 和 andlabs 在 cmets 中所述,您需要将 Static 控件子类化以拦截其子按钮发送给它的 WM_COMMAND/WM_NOTIFY 消息。然后子类过程可以处理这些消息,根据需要将它们转发给其他HWNDs等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 2012-11-27
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多