我想在IDC_EDIT框中输入内容. 输入完后不需要按其它键.  程序就自动获取框内的内容.所以我添加了EN_CHANGE事件处理.   把要执行的代码都放在了OnEnChangeEdit1()中.可现在问题是当我只输入一个字符时它就执行程序了.  还没等我输入完.   所以我想能不能有什么方法让他等待1,2秒.再执行? 我在函数里开了线程用了sleep等等方法都不行.  一执行到等待时程序就像死掉了. 没法输入余下的内容.请指教下.  我用的VS2008  

解决方案 »

  1.   

    EN_CHANGE事件在你的编辑框中有改变时就会触发。所以它是没办法判断你何时“输入完毕”的。如果楼主有自己的机制来判断结束(比如以某字符为输入结尾),可在消息处理函数中自己判断;如果没有相关机制,建议以其他动作进行代替,比如输入后的确定按钮等等。否则,如果硬性按照楼主现在的“只能判断”设想,那么比较接近的也许就是在编辑框失去焦点时进行判断了,估计也很难满足你的需求。
    PS:定时的方法绝对不可取。你怎么知道用户输入的速度呢?所以我觉得这更多的不是一个技术问题,而是一个设计问题。
      

  2.   

    那你说你怎么知道他是输入完了没? 这个有问题, 你可以搞个killfocus事件里处理, 也就是输入好了, 点别的地方,肯定执行你的代码。 要不然你怎么知道他是停顿还是输入完
      

  3.   

    EN_CHANGE:
    Sent when the user has taken an action that may have altered text in an edit control. Unlike the EN_UPDATE notification message, this notification message is sent after the system updates the screen. The parent window of the edit control receives this notification message through a WM_COMMAND message. 
      

  4.   

    回楼上的.  如果用killfocus那就太简单了.我需要的就是只输入.不再点别的地方.  也不切换到别的控件上去.
      

  5.   

    顶楼上的. 就是用的OnTimer解决问题.  感谢各位 结贴.!