因为我想一点击该编辑框,就弹出另外一个对话框,所以不能用判断是否焦点的方法,因为当退出那个另外的对话框时,焦点还在那儿,会再次谈出对话框,这样就形成死循环,请各位大侠指点的时候写详细一点,谢谢。

解决方案 »

  1.   

    HWND hwnd=WindowFromPoint(point);
    GetWindowText(hwnd,buf,256);
    CString str(buf);
    if(str=="xxx")
      ...
      

  2.   

    使用ON_CONTROL_RANGE( wNotifyCode, id1, id2, memberFxn )
    对特定消息,为所有的编辑框指定同一个处理函数。在处理函数中就可以依据不同的ID来区分是哪个编辑框了。
      

  3.   

    用PreTranslateMessage,先截获点击的消息,通过参数判断点击的是哪一个编辑框,然后处理...
      

  4.   

    重载你对话框的PreTranslateMessage函数即可,比如:
    BOOL CYourDialog::PreTranslateMessage(MSG* pMsg) 
    {
       if(pMsg->message==WM_LBUTTONDOWN)
          {
             if(GetDlgItem(IDC_EDIT1)->m_hWnd==pMsg->hwnd)
                 MessageBox("you click IDC_EDIT1");
             if(GetDlgItem(IDC_EDIT2)->m_hWnd==pMsg->hwnd)
                 MessageBox("you click IDC_EDIT2");
             //....
          }
       return CDialog::PreTranslateMessage(pMsg);
    }
      

  5.   

    重载你对话框的PreTranslateMessage函数即可,比如:
    BOOL CYourDialog::PreTranslateMessage(MSG* pMsg) 
    {
       if(pMsg->message==WM_LBUTTONDOWN)
          {
             if(GetDlgItem(IDC_EDIT1)->m_hWnd==pMsg->hwnd)
                 MessageBox("you click IDC_EDIT1");
             if(GetDlgItem(IDC_EDIT2)->m_hWnd==pMsg->hwnd)
                 MessageBox("you click IDC_EDIT2");
             //....
          }
       return CDialog::PreTranslateMessage(pMsg);
    }