none
如何让EDIT_Control中EN_CHANGE事件响应延迟执行? RRS feed

  • 问题

  • 我想在IDC_EDIT框中输入内容. 输入完后不需要按其它键. 程序就自动获取框内的内容.

    所以我添加了EN_CHANGE事件处理. 把要执行的代码都放在了OnEnChangeEdit1()中.

    可现在问题是当我只输入一个字符时它就执行程序了. 还没等我输入完. 所以我想能不能有什么方法让他等待1,2秒.再执行? 

    我在函数里开了线程用了sleep等等方法都不行. 一执行到等待时程序就像死掉了. 没法输入余下的内容.

    请指教下. 我用的VS2008
    2010年12月2日 2:43

答案

  • 你可以这样试试

    在OnEnChangeEdit1()中先kill掉一个timer

    然后再Set这个timer

    这样只有当不再输入时timer才会有效第一个时钟消息到指定时间才会被触发

    做判断之后在时钟消息内部killtimer即可

    2010年12月2日 6:19

全部回复

  • 在EN_CHANGE中启动一个定时器,两秒后触发校验或处理过程。

    并且EN_CHANGE还应取消前一个EN_CHANGE中启动的定时器(如果它还没到期的话)。

    2010年12月2日 3:39
  • 我找不到合适的办法来定时.    

    创建一个线程来执行等待.    可在等待线程时,主界面也锁死了.  不能输入新的内容. 必须要等第一次的程序执行完了才又会执行第二次的程序.

     

    2010年12月2日 6:08
  • 你可以这样试试

    在OnEnChangeEdit1()中先kill掉一个timer

    然后再Set这个timer

    这样只有当不再输入时timer才会有效第一个时钟消息到指定时间才会被触发

    做判断之后在时钟消息内部killtimer即可

    2010年12月2日 6:19