我正在做播放器界面,上面有很多自绘的按钮,它们在普通状态时,鼠标聚焦时,鼠标按下时,及灰化时,显示的位图都是不同的,这就需要加入ON_WM_MOUSEMOVE 消息,以来及时地刷新位图。但问题也出来了,当我用鼠标左键按住某一个按钮不放,并将鼠标移开这个按钮,再弹起时,它还是会响应ON_BN_CLICKED消息,但照理是不应该响应的,我想这应该在OnMouseLeave(WPARAM, LPARAM)里更改吧,但我不知道该怎么做,还请各位帮个忙了。
解决方案 »
- 关于VC中使用两个定时器的疑问,不知道我错在哪里?
- 关于ToolBar
- COM報錯Run-Time Check Failure,爲什麽?
- mfc用CCriticalSection.Lock()同步线程,结果锁定了Access,在其他模块无法使用。错误信息是:无法更新,当前被锁定。请问怎样既同步线程,而又不锁定Access?
- messagebox()的疑问
- 鼠标钩子问题
- 如何让由于CArchive 类的">>"和"<<"操作int指针??(高分急求)
- 谁能详细介绍一下VC++的ADO编程,最好是API的~~MFC没有学过。
- 怎么获得当前的view类窗口句柄?
- 怎样把我的窗口最小化(右下角的图标)
- 关于堆被破坏的疑问
- 隐式调用DLL其中的LIB文件和H文件要不要放到客户端?
void CMyButton::OnMouseMove(UINT nFlags, CPoint point)
{
m_is_mouse_over = true;
if (!m_is_tracked)
{
}
}
但这样是不行的,我在函数最后面再加了一句:
CBitmapButton ::OnMouseMove(nFlags, point);
这样,当鼠标移开按钮时再弹起时,就不会再触发ON_BN_CLICKED消息了。
唉,这个问题浪费了我昨天一整天时间,今天又耗了一个晚上。其实,这还是我朋友的功劳,他昨晚已告诉我,并试着这样做过了,只不过工程可能还没重新编译好,我就糊里糊涂地认为这样是不行的。但具体的原因我到现在说不来。