下面是一个鼠标移动消息函数(省写):void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
InvalidateRect(rectOld, TRUE); //第一次
InvalidateRect(rectNew, FALSE); //第二次 }我知道InvalidateRect()函数将触发OnPaint()函数,然后触发OnDraw(),想象应该是每次鼠标的移动都会触发两次OnDraw(),但是为什么我单步调试只见触发一次,用TRACE()跟踪也只见触发一次,是在OnMouseMove()结束时才触发。我不明白这是为什么,按理讲应该是在第一次执行InvalidateRect()之后就立即调用OnDraw(),不知道到底是触发了OnDraw()函数几次,有谁能够帮我解释一下它们(InvalidateRect,OnPaint,OnDraw)的关系。
得到答案之后立即结帐。谢谢先!(问题是不是太简单了!不好意思,我是VC采鸟)
{
InvalidateRect(rectOld, TRUE); //第一次
InvalidateRect(rectNew, FALSE); //第二次 }我知道InvalidateRect()函数将触发OnPaint()函数,然后触发OnDraw(),想象应该是每次鼠标的移动都会触发两次OnDraw(),但是为什么我单步调试只见触发一次,用TRACE()跟踪也只见触发一次,是在OnMouseMove()结束时才触发。我不明白这是为什么,按理讲应该是在第一次执行InvalidateRect()之后就立即调用OnDraw(),不知道到底是触发了OnDraw()函数几次,有谁能够帮我解释一下它们(InvalidateRect,OnPaint,OnDraw)的关系。
得到答案之后立即结帐。谢谢先!(问题是不是太简单了!不好意思,我是VC采鸟)
{
InvalidateRect(rectOld, TRUE); //第一次
UpdateWindow();//强制在此时发送WM_PAINT消息 InvalidateRect(rectNew, FALSE); //第二次 }
想在问一下这种无效区域是哪种意义上的无效???