MFC在非OnDraw、OnPaint中绘图

来源:互联网 发布:校园网络系统建设方案 编辑:程序博客网 时间:2024/05/22 05:18

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 defaultCClientDC 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.csdn.net/tracing/article/details/2806156

原创粉丝点击