MFC中,在OnDraw消息响应函数中,可以利用参数 pDC 绘图,如
void CXX::OnDraw(CDC* pDC)
{
CLinkGameDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
pDC->MoveTo(0, 0);
pDC->LineTo(100, 100);
}
}
但是,要想在别的地方绘图,如单击响应函数中绘图,就需要获得GDI对象,可以用CClientDC,如下
void CXX::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
dc.MoveTo(0, 0);
dc.LineTo(100, 100);
//this->Invalidate();//调用Invalidate后,绘制内容将被擦除
CView::OnLButtonDown(nFlags, point);
}
另外OnDraw、OnPaint函数处理消息的区别:
void CView::OnPaint()
{
CPaintDC dc(this);
OnPreparDC(&dc);
OnDraw(&dc); //调用了OnDraw
}
在OnPaint中,会调用OnDraw,因此一般会在OnDraw中编写重绘代码
可以参考http://blog.youkuaiyun.com/tracing/article/details/2806156