佚名通过本文主要向大家介绍了ondraw,ondraw什么时候调用,ondraw函数,android ondraw,mfc ondraw等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 我的OnDraw里面什么都没有为什么不能实现重绘
描述:
这是我的OnDraw函数,我测试过了,OnDraw函数能执行

并且OnDraw函数里面没有什么啊,为什么不能重绘了
解决方案1:
描述:
主要是画点,直线,矩形还有椭圆几个简单的功能
void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_ptOrigin = point;
CView::OnLButtonDown(nFlags, point);
}
void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC dc(this);
CPen pen(m_nLineStyle, m_nLineWidth, m_clr);
dc.SelectObject(&pen);
CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(pBrush);
switch (m_nDrawType)
{
case 1:
dc.SetPixel(point, m_clr);
break;
case 2:
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
break;
case 3:
dc.Rectangle(CRect(m_ptOrigin, point));
break;
case 4:
dc.Ellipse(CRect(m_ptOrigin, point));
break;
default:
break;
}
CView::OnLButtonUp(nFlags, point);
}
这是我的OnDraw函数,我测试过了,OnDraw函数能执行
void CGraphicView::OnDraw(CDC* /*pDC*/)
{
CGraphicDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
MessageBox(_T("reDraw"));
//CFont* pOldFont = pDC->SelectObject(&m_font);
//pDC->TextOutW(0, 0, m_strFontName);
//pDC->SelectObject(pOldFont);
// TODO: 在此处为本机数据添加绘制代码
}

并且OnDraw函数里面没有什么啊,为什么不能重绘了
解决方案1:
重绘不是当窗口大小改变的时候自动执行的吗?这个的前提是创建窗口设置重绘方式时候有设置对应的属性才行,你可以在OnDraw中加个断点,然后改变窗口大小时看看能进去不
解决方案2: OnLButtonDown的时候,执行InvalidateRect就行了
因为你都没有调用刷新界面,所以以前绘制的东西还在
在什么地方执行重绘的动作了?比如调用InvalidateRect这样的重绘动作在哪里呢
您可能想查找下面的文章:
- 如何在ATL的OnDraw事件中画位图?
- 为什么我在ATL的OnDraw中画不了线???????
- ATL:OnDraw跨线程无法工作
- 请教activex控件的ondraw与create问题
- 请问一将ActiveX控件插入测试容器,就能显示出图形像OnDraw的椭圆,而不是运行容器之后才显示出来?
- 调用CoGetClassObject的时候返回0x80080005,意思是服务器运行失败
- 如何不使用ACtiveX的ondraw
- 有哪位高人知道,怎样判断控件OnDraw是输出到屏幕还是到打印机?
- 为什么ActiveX的事件只有在OnDraw中去触发,页面才能接收到
- 很久没写activex了,今天需要写一个程序,但是OnDraw不起作用了