如何响应一个CEdit 或者 CStatic 上鼠标移动到他上面的消息?

解决方案 »

  1.   

    子类化,或者从CEdit派生个类来处理。
      

  2.   

    "子类化,或者从CEdit派生个类来处理。"
    我怎么子类化?我是想派生一个类来处理的,但是我不知道怎么做。是重载什么函数还是……,请帮帮我好吗?
      

  3.   

    WM_MOUSEMOVE,然后判断跟你的那个控件的rect是不是相交。
      

  4.   

    Insert->New Class
    Name : CMyEdit
    Base class : CEdit
    映射WM_MOUSEMOVE消息
    .hclass CMyEdit : CEdit
    {
    ...
    protected:
    //{{AFX_MSG(CMyEdit)
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    //}}AFX_MSG
    };.cpp
    void CMyEdit::OnMouseMove(UINT nFlags, CPoint point) 
    {
    CEdit::OnMouseMove(nFlags, point);         //自己要处理的代码。
    }
      

  5.   

    初始化中添加:CRect rect;      //全局变量
    GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);ScreenToClient(&rect);:: OnMouseMove(UINT nFlags,CPoint Point)
    {
    if(rect.PtInRect(Point))
      MessageBox("鼠标载这里")
    }
      

  6.   

    void CDlgLabel::OnMouseMove(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    CWnd *pW =this->ChildWindowFromPoint(point);
    if(pW==NULL) 
    return;
    int nCtrlID=::GetDlgCtrlID(pW->m_hWnd);
             
            switch(nCtrlID) 
           {
             case IDC_EDIT1:
                  //编辑框
                  break;
             case IDC_STATIC:
                  //静态文本框
                  break;
            default:
                  break;
            }}
      

  7.   

    对于CStatic,需要设置notify属性
      

  8.   

    to : lhb_780902(逐日)
    CStatic 根本就没有 ON_WM_MOUSEMOVEove响应消息。
      

  9.   

    WM_MOUSEMOVE,然后判断rect是否在你所要指定的区域里
      

  10.   

    TO: gxingmin(小高) 我用你的方法为什么没通过!
      

  11.   

    http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=301
    看看这个例子