本帖最后由 aYuEPRXIX 于 2009-09-30 17:41:11 编辑

解决方案 »

  1.   

    在WM_KILLFOCUS中判断一下,使用GetFocus看看具有焦点的窗口是不是field0,field1等等,如果不是,那就是真的失去焦点了
      

  2.   


    在视觉上的焦点离开CIPAddressCtrl(实际上是离开fieldx)的时候,是不会触发CIPAddressCtrl的WM_KILLFOUCS消息的……如果对每个field都子类化,在有多个CIPAddressCtrl的时候,这个判断将会很麻烦啊,有没有什么更好的办法?
      

  3.   

    嗯,这样确实比较麻烦,刚才用SPY++看了一下,找到了解决方法:
    假设你控件的ID是IDC_IPADDRESS1,直接响应EN_KILLFOCUS就可以了
    在对话框中的消息映射中使用:
    ON_EN_KILLFOCUS(IDC_IPADDRESS1,&CtestMFCDlg::OnKillFocus)
    其中OnKillFocus是你的处理函数,这样当IP控件失去焦点的时候就会调用这个函数了