我想实现当在CEdit里双击鼠标时调用一个函数,但事实上无法捕捉双击事件.用WM_LBUTTONDBLCLK不行。

解决方案 »

  1.   

    在父窗口的PreTranslateMessage里面试试:BOOL CTest2Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(pMsg->message == WM_LBUTTONDBLCLK){
    if(pMsg->hwnd == m_ctlEdit.GetSafeHwnd())
    MessageBox("a");
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  2.   

    class CMyEdit : public CEdit//自己作一个类
    //用类向导作双击事件
    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
    把你对话框中的CEDit控件和CMyEdit对应起来就行了,没错
      

  3.   

    我的实现方法与suxk(逍遥小子)一样。自己写一类继承CEdit类。
    然后处理
      

  4.   

    按hold(秋天)的方法可行。
    to suxk(逍遥小子) :我最初就是用OnLButtonDblClk,但不行。不过我不明白为什么用OnLButtonDblClk不行。呵呵。
      

  5.   

    to suxk(逍遥小子) :sorry.
    PreTranslateMessage得到所有消息,再根据pMsg-hwnd来分发消息。
    所以Dialog::OnLButtonDblClk不会捕捉到CEdit上的双击,它是属于CEdit的,因此用用你的方法也可以。分给少了。
      

  6.   

    你试试子类操作,用SetWindowLong(...),设置一个窗口消息函数
      

  7.   

    问 suxk(逍遥小子)  ,怎样 把对话框中的CEDit控件和CMyEdit对应起来 ?
      

  8.   

    只要你的CMyEdit是继承CEdit,其实和CEdit方法一样,用类向导就可以!
    .h中:
    CMyEdit m_myEdit; 
    cpp中
    手动添加DDX_Control(pDX, IDC_EDIT1, m_myEdit);
    我是这个意思,可能上面说的不清楚.
    只要在你的CMyEdit作了双击函数就行了