基于对话框的程序,当鼠标移动到按钮上时改变按钮的文字,当鼠标移走时再变回原来的文字。

解决方案 »

  1.   

    但当鼠标移动到按纽上时就没有那个WM_MOUSEMOVE消息了啊
      

  2.   

    重载CButton,
    处理CButton的OnMouseMove
      

  3.   

    楼上的几位说的是正确的,要处理WM_MOUSEMOVE消息,判断当前是否在这里,我给你一段代码,可以用一下,
    void CMyButton::OnMouseMove(UINT nFlags, CPoint point)
    {
       if( !m_bTracking )
      {
         TRACKMOUSEEVENT tme;
         tme.cbSize = sizeof( tme );
         tme.hwndTrack = m_hWnd;
         tme.dwFlags = TME_LEAVE|TME_HOVER;
         tme.dwHoverTime = 1;
         m_bTracking = _TrackMouseEvent( &tme );
      }
      CButton::OnMouseMove(nFlags, point);
    }
    这段代码可以判断出鼠标是否在按钮中,可以处理WM_MOUSEHOVER 和 WM_MOUSELEAVE消息,来做相应的重绘工作,以上两个消息,需要自己手工添加。
      

  4.   

    很不幸地没有找到WM_MOUSELEAVE消息
      

  5.   

    很不幸地没有找到WM_MOUSELEAVE消息
    -----------------------------------------------
    不会吧,你是怎么找的
      

  6.   

    我就是在类上点右键,选那个add windows message handler...
    在里面找没有用类向导里也找不到
    查msdn也没有那个消息啊
      

  7.   


    那个消息是自己普获得
    不能通过向导添加
    要手动添加
    自定义消息,连接消息映射
    WM_MOUSELEAVE是定义好的