我的本意是这样的,鼠标DOWN时判断是否在某个BUTTON上,是则发生MOVE行为,当鼠标UP时判断是否在某个BUTTON上,如果是则将前BUTTON上的名字移到现在的BUTTON上来,如果不在BUTTON上则原BUTTON不变.请问该如何实现.用VC 麻烦各位了

解决方案 »

  1.   

    传名字是其次,重要的是DOWM MOVE UP三个动作的实现我不知道.
      

  2.   

    当鼠标在当前窗口左健按下时,判断鼠标是不是在某个BUTTON上;如果是则拖动鼠标移动到某个位置;然后释放鼠标,再判断释放时鼠标是否在某个BUTTON上,如果是则将前一个BUTTON的名字删除并移到后一个BUTTON上.
      

  3.   

    我我可能要解决几个问题:
    1\判断DOWN时鼠标是否在BUTTON(在可用的BUTTONG上而不是被FALSE的BUTTON上)上
    2\MOVE这个过程
    3\UP时鼠标是否在BUTTON(在被FALSE的BUTTON上而不是可用的BUTTON上)上
      

  4.   

    前面已经有几位前辈指点了一些,比如:DOWN时,因为按钮本身会响应鼠标消息,然后对话框就不会再响应。在按钮中处理即可。或者在对话框PreTranstaleMessage中判断/在PreTranslateMessage中判断发给按钮的WM_LBUTTONDOWN消息。
    请问在PreTranslateMessage中判断发给按钮的WM_LBUTTONDOWN消息是如何实现的呢?
      

  5.   

    判断pMsg->hwnd是不是按钮的句柄。
      

  6.   

    在《MFC Windows编程》一书中第三章鼠标和键盘一章有个类似的例子,可以借鉴
      

  7.   

    谢谢 楼上各位
    我先做法是:
    BOOL CNewDlgDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(pMsg->message == WM_LBUTTONDOWN)
    {
    CWnd *pWnd = WindowFromPoint(pMsg->pt);
    ...
    }
    if(pMsg->message == WM_MOUSEMOVE)
    {
    ...但是不知道MOVE这里是怎么操作法,如何实现一个虚拟框在拖动鼠标时的显示呢?
    }
    if(pMsg->message == WM_LBUTTONUP)
    {
    CWnd *pWnd = WindowFromPoint(pMsg->pt);
    ...
    }
    return CDialog::PreTranslateMessage(pMsg);
    }