如何防止 CWnd 获得焦点?
Posted
技术标签:
【中文标题】如何防止 CWnd 获得焦点?【英文标题】:How can i prevent a CWnd from getting the focus? 【发布时间】:2010-06-17 18:33:51 【问题描述】:我编写了一个 MFC 应用程序,并且需要一个不会将输入焦点从另一个窗口移开的按钮。
不幸的是,当用户用鼠标单击按钮时,删除 WS_TABSTOP 样式并没有帮助。当我阻止 WM_LBUTTONDOWN 时,我没有得到视觉按下指示,所以这也不起作用。
【问题讨论】:
【参考方案1】:如果您想保留某个特定窗口的焦点,您可以使用按钮的OnLButtonDown
处理程序中的CWnd::SetFocus()
命令将焦点强制返回到您的窗口。
如果您希望将焦点恢复到多个窗口之一,您可以尝试将 CButton 子类化并捕获当键盘焦点更改为按钮时发送的 CWnd::OnSetFocus()
消息。
OnSetFocus()
事件包含刚刚失去焦点的控件的 CWnd,因此您可以手动将其放回原处,或者作为 OnSetFocus()
事件本身的一部分,或者稍后再次作为 OnLButtonDown()
处理程序的一部分.
【讨论】:
以上是关于如何防止 CWnd 获得焦点?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法防止 ScrollView 在 TextView 获得焦点时自动滚动?