2010-10-07 215 views
0

我正在使用CEdit控件。我已经为ON_EN_KILLFOCUS消息分配了一个事件处理程序。它被正确调用。但问题是,我曾经关闭对话框,这个事件处理程序被调用了四次。我怎样才能防止这一点?ON_EN_KILLFOCUS多次调用

回答

0

为什么试图阻止它?只要确保你的处理程序忽略那些无关紧要的东西 -

+0

OK杰夫。我认为这不是一种正常的行为。所有其他UI控件的情况都一样吗? – Krishnan 2010-10-08 05:09:56

+1

好吧,我发现很难预测控件什么时候会被调用,所以最好为任何事情做好准备,并且如果需要的话就忽略消息 - – Jeff 2010-10-08 06:10:27

0

刚刚遇到类似的问题,并通过分离到不同的处理程序解决。

我所用:

ON_EN_KILLFOCUS(IDE_THRESHOLD, OnKillFocusOnEdit) 
ON_EN_KILLFOCUS(IDE_AUTODENY_THRESHOLD, OnKillFocusOnEdit) 

OnKillFocusOnEdit也将获得每一次这两种编辑的失去焦点两条消息。

现在通过改变以下中,每个功能仅接收一个按预期消息:

ON_EN_KILLFOCUS(IDE_THRESHOLD, OnKillFocusOnEdit) 
ON_EN_KILLFOCUS(IDE_AUTODENY_THRESHOLD, OnKillFocusOnAutoDenyEdit)