我的直觉里,一个鼠标的点击应该包含DOWN和UP,
如果我不重载OnLButtonDown, 那么UP消息能响应
如果我重载了OnLButtonDown,UP消息就得不到响应了,
怎么回事啊?
void CTestMDIView::OnLButtonUp(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
AfxMessageBox("Up");
CView::OnLButtonUp(nFlags, point);
}void CTestMDIView::OnLButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
AfxMessageBox("Down");
CView::OnLButtonDown(nFlags, point);
}

解决方案 »

  1.   

    你把AfxMessageBox("Down");改为TRACE("Down");
    AfxMessageBox("Up");改为TRACE("Up");
    就能看出来两个函数都调用了
      

  2.   

    你上面的例子不能说明问题,因为当void CTestMDIView::OnLButtonDown(UINT nFlags, CPoint point)被处理时,弹出了AfxMessageBox("Down");这个对话话是模态对话框,在它没有关闭之前, CTestMDIView类收不到消息,所以你必须先关了这个对话框,但是关了对话框之后,你的鼠标已经弹起了。你下面的例子可以发现,DOWN和UP都是响应的。
    void CxcdView::OnLButtonDown(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值 CDC *pDC=GetDC();
    pDC->TextOut(0,0,_T("DOWN")); CView::OnLButtonDown(nFlags, point);
    }void CxcdView::OnLButtonUp(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CDC *pDC=GetDC();
    pDC->TextOut(0,20,_T("UP"));
    CView::OnLButtonUp(nFlags, point);
    }
      

  3.   

    是可以响应的,可能是你的测试代码比较特殊造成的。
    AfxMessageBox("Down");
    造成debug时,没有捕捉up信息。
    换种方法试试。