2010-06-17 70 views
1

我编写了一个MFC应用程序,并且需要一个不会将输入焦点从另一个窗口调出的按钮。如何防止CWnd获得焦点?

不幸的是,当使用鼠标点击按钮时,删除WS_TABSTOP样式并没有帮助。当我阻止WM_LBUTTONDOWN我没有得到一个视觉按下指示,所以这也不起作用。

回答

3

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

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

OnSetFocus()事件包括刚刚失去焦点的控件的CWnd的,所以你可以手动把它放回去,无论是作为OnSetFocus()事件本身的一部分,还是后来作为OnLButtonDown()处理程序的一部分再次。