gpt4 book ai didi

c++ - 有没有办法找出第二个事件将在 MFC 中发生

转载 作者:行者123 更新时间:2023-11-30 04:38:46 29 4
gpt4 key购买 nike

我偶然发现了 MFC 的一个奇怪问题。我有一个对话框,我在其中检查 ON_EN_KILLFOCUS 上的每个编辑字段是否有效。如果验证没有通过,我会重新设置焦点并显示错误消息。如果我关闭对话框就好了。我的意思是,如果我留下错误输入的字段并按下关闭按钮或 X,那么在其他处理事件之后首先调用 ON_EN_KILLFOCUS,因为消息出现并且焦点返回到该字段。所以我的问题是:有没有办法在 ON_EN_KILLFOCUS 中找出它之后的事件?如果是,那么我可以检查它是否关闭事件然后关闭对话框,而不是将我的焦点返回到错误输入的编辑字段。任何帮助都会有很大帮助!

最佳答案

一般情况下,你无法知道焦点改变事件之后会发生什么事件。

但是,有可能解决这个问题,您可以在触发验证逻辑时更改条件 - 验证编辑控件时

  • 失去焦点
  • 并且焦点丢失到另一个编辑控件

通过检查焦点是否丢失到另一个控件,您是在对用户说:“不要继续使用此组件 - 您还没有正确填写当前组件!”。

它比验证任何焦点变化更能捕捉用户的意图。当用户单击关闭或系统 X 按钮或任何其他按钮时,它也不会运行验证。当然,您需要在单击“确定”按钮时添加显式验证。

这不仅代码相当简单(检查新焦点窗口是否是对话框的子项并且是输入组件 - 您可以通过查看窗口的窗口类名称来确定它是输入组件。编辑编辑框。)

这也处理用户因其他原因(例如系统消息框或其他焦点获取事件)而转移焦点的情况。由于焦点没有移动到您的其他编辑控件之一,因此不会运行验证,并且焦点不会强制返回到您的应用程序,这对某些人来说可能非常烦人!

关于c++ - 有没有办法找出第二个事件将在 MFC 中发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2971730/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com