以下是我在界面上画两条粗细不同的线,我声明了两个不同的CPen对象,能不能用一个CPen对象搞定?(因为这样如果我需要画N条不同粗细的线就要声明N个CPen对象,太麻烦了)CPen Newpen(PS_SOLID,3,RGB(0,0,255));
CPen *Oldpen;
Oldpen=pDC->SelectObject(&Newpen);
pDC->MoveTo(115,0);
pDC->LineTo(115,195);
pDC->LineTo(780,195);CPen l_pen(PS_SOLID,4,RGB(255,122,0));
pDC->SelectObject(l_pen);
pDC->MoveTo(210,460);
pDC->LineTo(560,460);pDC->SelectObject(Oldpen);
CPen *Oldpen;
Oldpen=pDC->SelectObject(&Newpen);
pDC->MoveTo(115,0);
pDC->LineTo(115,195);
pDC->LineTo(780,195);CPen l_pen(PS_SOLID,4,RGB(255,122,0));
pDC->SelectObject(l_pen);
pDC->MoveTo(210,460);
pDC->LineTo(560,460);pDC->SelectObject(Oldpen);
CPen m_pen;
m_pen.CreatePen( PS_SOLID, 1, 0xFF00FF );
....
m_pen.CreatePen( PS_SOLID, 2, 0xFF00FF );
....
CPen *Oldpen;
Oldpen=pDC->SelectObject(&Newpen);
pDC->MoveTo(115,0);
pDC->LineTo(115,195);
pDC->LineTo(780,195);pDC->SelectObject(Oldpen);
Newpen.DeleteObject();
Newpen.Create(PS_SOLID,4,RGB(255,122,0));Oldpen = pDC->SelectObject(&Newpen);
pDC->MoveTo(210,460);
pDC->LineTo(560,460);pDC->SelectObject(Oldpen);
其余的操作我就都省略了,楼主应可以自己完成。完整的----------
CPen pen, *oldpen;pen.CreatePen( PS_SOLID, 3, RGB(0,0,255) );
oldpen = pDC->SelectObject( &pen );pDC->MoveTo( 115, 0 );
pDC->LineTo( 115, 195 );
pDC->LineTo( 780, 195 );pDC->SelectObject( oldpen );
pen.DeleteObject();pen.CreatePen( PS_SOLID, 4, RGB(255,122,0 ) );
oldpen = pDC->SelectObject( &pen );pDC->MoveTo(210,460);
pDC->LineTo(560,460);pDC->SelectObject( oldpen );
pen.DeleteObject();
Newpen.DeleteObject(); Newpen.Create(PS_SOLID,4,RGB(255,122,0));
这个对象已经删除了,怎么还可以创建呢?应该会报错把。
另:对象删除表示对象的属性没有了,不代表这个对象的空间不存在,你可以重新定义他,也就是重新create。如果你连续为一个CPen的实例创建,创建过程中就会发现当前句柄不为空,表明这是个存在的笔,从而再次创建失败。因此必须先deleteobject.