ON_EN_KILLFOCUS(IDC_EDIT_NAMECN, &CDlgProductInfo::OnEnKillfocusEditNamecn)对话框上有一大堆CEdit控件,每一个都需要响应ON_EN_KILLFOCUS事件,但是一个一个地定义,最后代码的长度将是非常的吓人,有没有什么办法可以循环遍历或者定义个数组什么的,一次定义,所有控件都可以响应!

解决方案 »

  1.   

    你重载对话框类的OnCommand函数,在函数中判断
    if (HIWORD(wParam) == EN_KILLFOCUS)
    {
    // 这里加处理代码就可以了。
    }
      

  2.   

    但是所有的CEdit响应的ON_EN_KILLFOCUS内容不是相同的,而是与自己对应的那个,这其中就需要传递CEdit的ID号.......
      

  3.   

    MFC有些宏可以处理一批ID,ON_MESSAGE_RANGE ON_NOTIFY_RANGE, ON_EVENT_RANGE...
    可以查一下看看
      

  4.   

    你继承一个CXXEdit类,在里面处理OnKillFocus,对话框上所有的控件都是CXXEdit的实例,这样就简单了
      

  5.   

    可以定义个动态CEdit控件数组变量,动态定义EN_KILLFOCUS消息
      

  6.   

    ON_CONTROL_RANGE(EN_KILLFOCUS, 0, 0xFFFF, YourNotifyHandle)YourNotifyHandle(UINT nID)
    {
        switch (nID) //根据控件ID处理
        {
        }
    }
    请大家支援灾区,积极捐款捐物。