用OnDraw()来画两条直线,当第一条直线画了后画第二条的时候,发现第二条直线把第一条直线给覆盖掉了,也就是说第一条直线消失了!
解决方案 »
- 用ZwReadFile读取文件内容,如何得到该文件的总大小
- vc++入门教程
- ado连接SQL后写字段用什么函数?
- 如何在数据库中存储整个文件?
- 如何指定VC在编译时使用某个资源,或不使用某个资源?
- 如何判断某个字符(char)是汉字的第一个字节?如何判断某个字符(char)是汉字的第二个字节?
- 关于以太包的问题,在线等,高分相送。
- ■■■如何知道我的这个zip文件总共被网友下载过多少次了
- 一个比较简单的问题!
- 编写 vxd AD转换结束发中断 CreateFile 打开 vxd后 函数运行的先后顺序 OnSystemInit OnW32IOControl 和 OnHardwareInt 那一个最先运行
- 请问这句有何错误?见正文!谢谢
- 请问如何在对话框中操作ODBC数据库,希望给出具体步骤。
{
CPaintDC dc(this); // device context for painting
dc.MoveTo(100,100);
dc.LineTo(200,100);
dc.LineTo(200,200);
}
这样怎么可能有问题?
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->MoveTo(100,100);
pDC->LineTo(200,100);
pDC->LineTo(200,200);
}
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->MoveTo(100,100);
pDC->LineTo(200,100);
pDC->MoveTo(200,100);\\修改处
pDC->LineTo(200,200);
}
我copy了你的代码,在ondraw当中,都可以正常显示
没有必要再moveto,LintTo后自动把点定位到终点的
{
CTest_2_painDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CBitmap * pOldBitmap=m_pMemDC->SelectObject(m_pBitmap);
pDC->BitBlt(0,0,m_nMaxX,m_nMaxY,m_pMemDC,0,0,SRCCOPY);
m_pMemDC->SelectObject(pOldBitmap);
if(pDoc->loading)
{
POSITION pos;
pos=pDoc->m_Lines.GetHeadPosition();//m_Lines是一个链表
pDoc->temp=pDoc->m_Lines.GetHead();
while(pos)
{
m_bDrawing=FALSE;
CBitmap *pOldBitmap=m_pMemDC->SelectObject(m_pBitmap);
CPen pen;
pen.CreatePen(PS_SOLID,pDoc->temp->m_Width,pDoc->temp->color);
CPen * pOldPen = m_pMemDC->SelectObject(&pen);
CRect rect(pDoc->temp->m_Start,pDoc->temp->m_End);
m_pMemDC->MoveTo(pDoc->temp->m_Start);
m_pMemDC->LineTo(pDoc->temp->m_End);
Invalidate(FALSE);
m_pMemDC->SelectObject(pOldBitmap);
m_pMemDC->SelectObject(pOldPen);
pDoc->temp=pDoc->m_Lines.GetNext(pos);
}
}