處理WM_KILLFOCUS應該可以
另外不需要銷毀窗口 我也這樣做過一次
只要ShowWindows(SW_HIDE)暫時隱藏即可需要的時候再顯示出來 這樣免去頻繁地創建/銷毀EditBox

解决方案 »

  1.   

    参考MSDN中EditGrid.exe的做法,搜索一下。
      

  2.   

    你在那个CEdit的OnKillFocus()里设置一个变量,然后就知道是不是处于失去焦点了.楼上有的说的有道理,从感觉上说,创建和销毁窗口比只SHOW/HIDE系统开销大得多.
      

  3.   

    to an_bachelor(洗澡就是浪費生命) 
       
       请问该在哪里处理WM_KILLFOCUS,如果在ListCtrl的派生类里 遗失焦点是listctrl的而不是editbox的.
                                   
                              
      

  4.   

    再你的EditBox派生类中处理WM_KILLFOCUS看
      

  5.   

    个人比较喜欢SetFocusafx_msg void OnSetFocus(
       CWnd* pOldWnd 
    );
    Parameters
    pOldWnd 
    Contains the CWnd object that loses the input focus (may be NULL). The pointer may be temporary and should not be stored for later use. 
    判断一下pOldWnd是不是你的EditBox就知道它是否失去焦点了.
    PS:看了一下你最后的一贴,我觉得可以利用GetFocus函数返回的窗口指针与你的Edit控件窗口指针作一个比较,如果不等,就相当于是失去焦点,不过这样有点笨.可能要在WM_LBUTTONUP消息里面作这种判断(可以在LIST CTRL里面写PreTranslateMessage函数去拦截),在我的项目里面也是,为了得到一个表里面的Edit的窗口句柄,也经常用这种方法.