【问题标题】:How can i prevent a CWnd from getting the focus?如何防止 CWnd 获得焦点?
【发布时间】:2010-06-17 18:33:51
【问题描述】:

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

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

【问题讨论】:

    标签: windows user-interface mfc focus


    【解决方案1】:

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

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

    OnSetFocus() 事件包含刚刚失去焦点的控件的 CWnd,因此您可以手动将其放回原处,或者作为 OnSetFocus() 事件本身的一部分,或者稍后再次作为 OnLButtonDown() 处理程序的一部分.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 2011-12-06
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多