如何防止CWnd获得焦点?

时间:2010-06-17 18:33:51

标签: windows user-interface mfc focus

我编写了一个MFC应用程序,需要一个按钮,它不会将输入焦点从另一个窗口移开。

当使用鼠标单击按钮时,删除WS_TABSTOP样式确实无济于事。当我阻止WM_LBUTTONDOWN时,我没有得到视觉按下的指示,所以这也不起作用。

1 个答案:

答案 0 :(得分:3)

如果您想要保持焦点的特定窗口,您可以使用按钮的CWnd::SetFocus()处理程序中的OnLButtonDown命令强制将焦点移回窗口。

如果您希望将焦点恢复到多个窗口之一,您可以尝试子类化CButton并捕获当键盘焦点更改为按钮时发送的CWnd::OnSetFocus()消息。

OnSetFocus()事件包含刚丢失焦点的控件的CWnd,因此您可以手动将其重新放回,作为OnSetFocus()事件本身的一部分,或稍后作为OnLButtonDown()事件的一部分再次{1}}处理程序。