我用的是VS2005,要做的就是点击个编辑框弹出个对话框,并在对话框中输入数字到编辑框中,我的实现方法是:
1:新建一个对话框---添加一个编辑框(EDIT)---右键编辑框—添加类(类名Edit);
2: 再建立一个要弹出的对话框——右键该对话框——添加类(类名Dialog);
3: 为Edit添加LButtonDown消息;
4:在消息函数中添加代码:
Dialog dlg;
dlg.DoModal();可问题是点击编辑框没有任何反应,这是怎么回事呢?我哪里出现问题了?我又试了另一种方法:就是在Edit.cpp中添加函数:
BOOL AcameraCT::PreTranslateMessage(MSG* pMsg) 
{
  int buID;
 CWnd* pWnd=WindowFromPoint(pMsg->pt); //获得指定点句柄
 buID=pWnd->GetDlgCtrlID();//获得该句柄的ID号。
  if(pMsg->message==WM_LBUTTONDOWN)  
 {      
  if(buID==IDC_EDIT1) //按下 
  {  
   Dialog dlg;
dlg.DoModal();
  }  
 } 
 return CDialog::PreTranslateMessage(pMsg);
}
这样也没有任何反应,又哪里出问题了呢?望高手们指点指点啊。

解决方案 »

  1.   

    3: 为Edit添加LButtonDown消息;
    edit本身不处理LButtonDown消息,字类化或者在PreTranslateMessage里处理
      

  2.   

    子类化编辑框,subclassdlgitem()或subclasswindow()然后再捕捉WM_LBUTTONDOWN消息。
    或者简单点,直接捕捉编辑框的WM_FOCUS消息
      

  3.   

    BOOL AcameraCT::PreTranslateMessage(MSG* pMsg)  当消息为WM_LBUTTONDOWN时,判断坐标是否在edit内
      

  4.   

    针对 ON_EN_SETFOCUS 消息,添加响应事件试下.
      

  5.   

    edit本身不处理LButtonDown消息,消息流不下来就返回了~
      

  6.   

    光获得焦点不行,按tab键也会得到焦点
      

  7.   


    用SetFocus作为消息的话好像要设置什么东西吧?
    直接加上
    Dialog dlg;
    dlg.DoModal();不行啊,小弟刚学不久,该怎么设置啊?
      

  8.   

    重载CEdit,自己处理一下WM_LBUTTODNDOWN消息就可以了,例如:
    void CNewEdit::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default

    CEdit::OnLButtonDown(nFlags, point); CNewDlg dlg;
    dlg.DoModal();
    }
      

  9.   

    BOOL Cldlg1Dlg::PreTranslateMessage(MSG* pMsg)
    {
    if(pMsg->message==WM_LBUTTONDOWN&&pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd)
    {
    AfxMessageBox(_T("aaa"));
    return TRUE;
    }
    }
      

  10.   

    用你的不行哦,呵呵,点击不会输出aaa,还不知道怎么回事?
      

  11.   

    正解!
    if( pMsg->message == WM_LBUTTONDOWN )
    {
    CRect rc;
    GetDlgItem(IDC_EDIT1)->GetWindowRect(&rc);
    if(rc.PtInRect(pMsg->pt))
    {
    MessageBox("按下edit");

    }

    }