Windows静态控件如何防止输入焦点

时间:2010-08-31 13:28:43

标签: winapi static controls setfocus

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

我已经阅读了输入焦点上的msdn,并且没有任何与Windows如何为静态控制分配焦点有关。任何人都可以解释如何使静态控制不具有输入焦点吗?

1 个答案:

答案 0 :(得分:5)

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