VC里面好像没有VB的鼠标移动事件啊。

解决方案 »

  1.   

    重截WM_MOUSEMOVE消息再在里面判断是否处于某个按钮的范围内(当然先要获得按钮的窗口范围),是就执行弹出窗口的代码!
      

  2.   

    WM_HOVER事件,不过这个事件要特殊处理一下
      

  3.   

    WM_MOUSEMOVE 就是鼠标移动事件
      

  4.   

    写错了,是WM_MOUSEHOVER 事件下面是处理鼠标离开窗口的消息 (WM_MOUSELEAVE)
    处理鼠标进入窗口的消息WM_MOUSEHOVER基本上与WM_MOUSELEAVE一样 WM_MOUSELEAVE 是鼠标离开窗口时发出的消息,但是这个消息与普通的鼠标消息不同,要收到WM_MOUSELEAVE消息必须先调用TrackMouseEvent,并且每调用一次TrackMouseEvent 窗口只能收到一次WM_MOUSELEAVE,也就说如果要获得WM_MOUSELEAVE消息的话,当鼠标重新进入窗口时必须调用一次TrackMouseEvent。 static BOOL bTrackLeave=FALSE;void CMyWnd::OnMouseMove(UINT nFlags, CPoint point){if (!bTrackLeave){       // 鼠标第一次移入窗口时, 请求一个WM_MOUSELEAVE 消息        TRACKMOUSEEVENT tme;        tme.cbSize = sizeof(tme);        tme.hwndTrack = m_hWnd;        tme.dwFlags = TME_LEAVE;        _TrackMouseEvent(&tme);        bTrackLeave = TRUE;              // 在这里添加处理鼠标进入的代码 :              ………………………………    }}  手工添加消息映射和消息处理函数BEGIN_MESSAGE_MAP(CMyWnd, CWnd)       //{{AFX_MSG_MAP(CMyWnd)       ………………………       //}}AFX_MSG_MAP       ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)END_MESSAGE_MAP()  LPARAM CMyWnd::OnMouseLeave(WPARAM wp, LPARAM lp){bTrackLeave = FALSE;// 在这里添加处理鼠标离开的代码 :…………………………………..    return 0;}
      

  5.   

    void CIconButton::OnMouseMove(UINT nFlags, CPoint point) 
    {
    OnMouseMove要改一下,参考下面代码
    // TODO: Add your message handler code here and/or call defaultCButton::OnMouseMove(nFlags, point);
    TRACKMOUSEEVENT tme; 
    tme.cbSize=sizeof(TRACKMOUSEEVENT); 
    tme.dwFlags=TME_HOVER | TME_LEAVE; 
    tme.dwHoverTime=HOVER_DEFAULT; 
    tme.hwndTrack=m_hWnd; 
    _TrackMouseEvent(&tme); 
    }
      

  6.   

    映射WM_MOUSEHOVER消息,系统就自动判断是否进入区域了,就行了
    LPARAM CMyWnd::OnMouseHover(WPARAM wp, LPARAM lp){bTrackLeave = FALSE;// 在这里添加处理鼠标进入的代码 :
    // 在这里添加处理鼠标进入的代码 :
    // 在这里添加处理鼠标进入的代码 :…………………………………..    return 0;}
      

  7.   

    看到需要派生按钮类,然后重载wm_mousemove或者wm_mousehover了
      

  8.   

    处理WM_MOUSEMOVE消息,截获MOUSE EVENT。