小弟做了个对话框,里面添加了 edit 控件,先需要获取鼠标在对话框中移动的坐标信息,包含 edit 中,主要是获取EDIT 
中鼠标的信息,我在 对话框类中添加了 mousemove ,试了下好像不行,请各位高手大哥大姐帮忙啊 !!!谢谢

解决方案 »

  1.   

    CXXXDialog::PreTranslateMessage(MSG* pMsg) 

    ...... 
    if (::GetKeyState(WM_NCMOUSEMOVE) )) 

                    ....
    return TRUE 

    return CDialog::PreTranslateMessage(pMsg)
    }
    通过PreTranslateMessage截取消息,得到鼠标移动,如果你在CEDIT里面,建议重新写一个CxxxEdit::CEdit里面截取消息,在CxxxEdit里面重载PreTranslateMessage取得鼠标消息即可,那么就变成了:
    CXXXEdit::PreTranslateMessage(MSG* pMsg) 

    ...... 
    if (::GetKeyState(WM_NCMOUSEMOVE) )) 

                    ....
    return TRUE 

    return CEdit::PreTranslateMessage(pMsg)
    }
      

  2.   

    好像应该是WM_MOUSEMOVE,刚才搞错了!
      

  3.   

    我这个EDIT 是Create 的,请问该怎末样处理啊??pEdit.Create(ES_MULTILINE | WS_VSCROLL|WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER| ES_WANTRETURN, 
    CRect(10, 10, WIDTH+10, HEIGHT+10), this, 1); 
      

  4.   

    CEdit pEdit;怎末定义他的类啊 ?楼上的哥哥,说详细点,好吗?
      

  5.   

    pEdit::CEdit  这样吗???
      

  6.   

    比如,你定义了一个类,class CMyEdit::CEdit{};
    这个类里面的内容自己添加,包含刚才的说的重载PreTranslateMessage;
    然后,调用如下:
    CMyEdit *pEdit = new CMyEdit;
    pEdit.Create(ES_MULTILINE | WS_VSCROLL|WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER| ES_WANTRETURN, 
    CRect(10, 10, WIDTH+10, HEIGHT+10), this, 1); 
    这样,你就可以在PreTranslateMessage里面得到鼠标的消息了!
    BOOL CMyEdit::PreTranslateMessage(MSG* pMsg) 
    {
        if( pMsg->message == WM_MOUSEMOVE)
        {
    //此处得到鼠标的位置可以
                 //return TRUE;                    // DO NOT process further
            }
        }
        return CEdit::PreTranslateMessage(pMsg);
    }在CMyEdit头文件加:
    public:
    virtual BOOL PreTranslateMessage(MSG* pMsg);
      

  7.   

    重载,就是从CEdit继承一个自己的类,然后响应鼠标消息;
      

  8.   

    请问在 
        if( pMsg->message == WM_MOUSEMOVE) 
        { 
            
        } 
    里怎末获取坐标啊 ,CPoint p;?
    p=pMsg->point?
      

  9.   

      谢谢各位哦!!!结贴!!尤其感谢  fandh 大哥!!