嗨,我有一个无模式对话框,其中包含一个编辑控件(与本讨论相关),用户可以在其中输入数据,并且除非向上述编辑控件提供有效数据,否则该按钮将被禁用。
问题是,作为一个无模式对话框,在编辑控件中按 Enter 键不会消除焦点,因此不会触发与编辑控件关联的
ON_EN_KILLFOCUS
消息通知,该通知会验证输入并可能启用应用按钮。目前,用户必须在非模式对话框之外单击才能触发 ON_EN_KILLFOCUS
。
有没有一种方法可以在用户不必从对话框中移除焦点的情况下触发验证?通常在模态对话框中,回车键会触发
ON_EN_FOCUS
,这就是我所习惯的。
我尝试过使用
ON_EN_CHANGE
,但似乎没有任何作用。
Enter 键在
PreTranslateMessage
中处理,实际上控件不会失去焦点。在控件接收任何键盘输入之前,将处理输入键的点击。
因此,这可能是处理所有情况的最简单方法
OnChange
(EN_CHANGE') to track any change. If this is to complicated. Handle PreTranslateMessage and track the
VK_ENTERkey
WM_KEYDOWN`消息并在将消息传递给默认处理程序之前执行验证代码。