如何让一个控件自己知道鼠标点击不是他自己。不能让对话框来通知edit控件,而是要让edit自己获取这个消息例如,在一个edit中编辑,然后在其所属的对话框上单击鼠标,这时edit失去焦点。

解决方案 »

  1.   

    sorry,没看见这个。在对话框上单击控件并不能失去焦点
      

  2.   

    很像CEdit::SetCueBanner()函数的功能
      

  3.   


    之前都试过WM_KILLFOCUS了,没用
      

  4.   

    我想,既然WM_MOUSELEAVE消息可以通过TrackMouseEvent函数来捕获,
    那像这种“控件自己判断是否在自己身上单击”的事是否也有相应的函数呢
      

  5.   

    BEGIN_MESSAGE_MAP(CEditWithButton, CEdit)
    //{{AFX_MSG_MAP(CEditWithButton)
    ON_WM_KILLFOCUS()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()这里面有增加响应吗
      

  6.   


    我这个现在是,只有当点击其他控件,edit才能失去焦点,而单击对话框则没用
      

  7.   

    重载CEdit类,处理WM_LBUTTONDOWN消息void CNewEdit::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    CEdit::OnLButtonDown(nFlags, point); CRect rc;
    GetWindowRect(&rc);
    ClientToScreen(&point);
    if(rc.PtInRect(point))
    {
    SetCapture();
    SetWindowText(_T("IN"));
    }
    else
    {
    ReleaseCapture();
    SetWindowText(_T("Out"));
    CWnd* pWnd = WindowFromPoint(point);
    if(pWnd)
    {
    pWnd->SetFocus();
    }
    }
    }