【问题标题】:How Windows Static Control Prevent Input FocusWindows 静态控件如何防止输入焦点
【发布时间】:2011-04-06 06:50:18
【问题描述】:

我们知道 Windows 中的静态控件不接收输入焦点。但是由于Windows中的静态控制只是一个子窗口,根据我目前的理解,任何窗口都应该在我们点击它时被赋予输入焦点。那么Static控件是如何实现这种拒绝输入焦点的效果呢?我怀疑它在其 WM_SETFOCUS 处理程序中进行了特殊处理,该处理程序将输入焦点传递给其父窗口。但是,我做了一些测试,似乎子窗口根本没有收到任何 WM_SETFOCUS,即 Windows 从来没有真正尝试过将输入焦点赋予静态控件。

我已经阅读了有关输入焦点的 msdn,并且没有任何关于 Windows 如何为静态控制分配焦点的内容。谁能解释一下如何使静态控制没有输入焦点?

【问题讨论】:

    标签: winapi static controls setfocus


    【解决方案1】:

    静态控件从其WM_NCHITTEST 处理程序返回HTTRANSPARENT。这会导致单击直接转到底层窗口(即父窗口)。 WM_MOUSEACTIVATEWM_*BUTTONCLICK 和其他魔法最终会导致激活和SetFocus

    【讨论】:

      猜你喜欢
      • 2020-07-02
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      相关资源
      最近更新 更多