在编辑控件中输入无效输入时如何显示不打扰的消息

时间:2018-08-29 08:27:29

标签: c++ mfc

我为用户名创建了一个编辑控件,该控件仅允许输入字母字符。当用户尝试输入任何特殊字符或数字时,会弹出一个消息框,并显示一条消息,指出不允许使用这些特殊字符或数字。

我使用AfxMessageBox()来显示该消息,但是它看起来不太好,显示该消息时,用户必须手动按OK。有什么方法可以自动显示和隐藏消息?

它的行为应与使用ES_NUMBER样式创建编辑控件并且用户输入非数字字符时出现的消息相同: edit control balloon tooltip

1 个答案:

答案 0 :(得分:2)

  

它的行为应与编辑时出现的消息相同   控件以ES_NUMBER样式创建,并且用户输入非数字   字符。

在这种情况下,默认的窗口过程显示balloon tooltip

可以这样实现:

  1. 处理EN_UPDATE通知,以检测用户是否在显示文本之前 在编辑控件中输入了无效字符。这样可以处理单个按键以及复制/粘贴操作的情况。
  2. 输入有效时,将窗口文本存储在成员变量中。
  3. 当输入无效时,从成员变量中恢复最后一个已知的“好”文本。结果,无效字符永远不会显示给用户。调用CEdit类的ShowBalloonTip()成员函数(向其发送EM_SHOWBALLOONTIP消息)。无需显式创建工具提示控件,因为它由编辑控件管理。

在第3步中,您还可能必须保存/恢复当前选择(我不确定是否在选择更改之前或之后发送EN_UPDATE)。

调用ShowBalloonTip()的示例:

m_edit.ShowBalloonTip( L"Some Title", L"Some Text", TTI_ERROR );