视图区重绘?

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:11:31
见下面代码,我先Invalidate();后面绘制的为什么不出来了?又不是绘完后再Invalidate()。
void CSDIdraw1View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
Invalidate();
CDC *pDC=GetDC();
pDC->MoveTo(point);
pDC->LineTo(point.x+100,point.y);

CView::OnLButtonDown(nFlags, point);
}

重绘函数不会立即被调用,比如窗口被其他窗口覆盖后又重新获得焦点了才会画出来
你试下alt+tab 切换到其他窗口再切换回来,看看是不是画了一条线

Invalidate();是放在后面的,画完才调用。

调用这个函数时,窗口不会立即重绘,而是发送WM_PAINT消息,WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理