我正在做播放器界面,上面有很多自绘的按钮,它们在普通状态时,鼠标聚焦时,鼠标按下时,及灰化时,显示的位图都是不同的,这就需要加入ON_WM_MOUSEMOVE 消息,以来及时地刷新位图。但问题也出来了,当我用鼠标左键按住某一个按钮不放,并将鼠标移开这个按钮,再弹起时,它还是会响应ON_BN_CLICKED消息,但照理是不应该响应的,我想这应该在OnMouseLeave(WPARAM, LPARAM)里更改吧,但我不知道该怎么做,还请各位帮个忙了。

解决方案 »

  1.   

    呵呵,已经解决,原来是我的OnMouseMove()函数没有写完整的完整的缘故:
    void CMyButton::OnMouseMove(UINT nFlags, CPoint point)
    {
       m_is_mouse_over = true;
         if (!m_is_tracked)
          {
          }

    }
    但这样是不行的,我在函数最后面再加了一句:
    CBitmapButton ::OnMouseMove(nFlags, point);
    这样,当鼠标移开按钮时再弹起时,就不会再触发ON_BN_CLICKED消息了。
    唉,这个问题浪费了我昨天一整天时间,今天又耗了一个晚上。其实,这还是我朋友的功劳,他昨晚已告诉我,并试着这样做过了,只不过工程可能还没重新编译好,我就糊里糊涂地认为这样是不行的。但具体的原因我到现在说不来。