当窗口尺寸发生改变引起窗口重绘的问题:
(1)先声明一个新类。例:画线控件:class Csave //声明的保存类
{
public:
CPoint n;//声明跟原来一样的属性变量
CPoint m;
Csave(CPoint,CPoint);//特别注意这里通常采用有参的构造函数,以便后面的调用
virtual ~Csave();
};
(2)然后为程序的类(一般就是主程序类含OnDraw和LBUTDOWN等之类的)增加一个CPtrArray类型的成员变量:m_ptrArray。在程序的执行代码中参照添加如下代码:
Csave *psave=new Csave(m_p1,m_p2);//此处需要用指针类型的的变量
m_ptrArray.Add(psave);//
COleControl::OnLButtonUp(nFlags, point);//此处不是添加的代码。
//在这里使用的新添加类,所以要在前部添加对应的头文件名如:#include "save.h".
(3)然后在OnDraw函数中将保存的图形元素再次显示出来;
代码:
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
pdc->SelectObject(pBrush);//首先创造一个透明的画刷。
for(int i=0;i<m_ptrArray.GetSize();i++)
{
pdc->MoveTo(((Csave*)m_ptrArray.GetAt(i))->m);
//GetAt函数实际上是从m_ptrArray集合对象中取出其保存的地址。
pdc->LineTo(((Csave*)m_ptrArray.GetAt(i))->n);
}
(1)先声明一个新类。例:画线控件:class Csave //声明的保存类
{
public:
CPoint n;//声明跟原来一样的属性变量
CPoint m;
Csave(CPoint,CPoint);//特别注意这里通常采用有参的构造函数,以便后面的调用
virtual ~Csave();
};
(2)然后为程序的类(一般就是主程序类含OnDraw和LBUTDOWN等之类的)增加一个CPtrArray类型的成员变量:m_ptrArray。在程序的执行代码中参照添加如下代码:
Csave *psave=new Csave(m_p1,m_p2);//此处需要用指针类型的的变量
m_ptrArray.Add(psave);//
COleControl::OnLButtonUp(nFlags, point);//此处不是添加的代码。
//在这里使用的新添加类,所以要在前部添加对应的头文件名如:#include "save.h".
(3)然后在OnDraw函数中将保存的图形元素再次显示出来;
代码:
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
pdc->SelectObject(pBrush);//首先创造一个透明的画刷。
for(int i=0;i<m_ptrArray.GetSize();i++)
{
pdc->MoveTo(((Csave*)m_ptrArray.GetAt(i))->m);
//GetAt函数实际上是从m_ptrArray集合对象中取出其保存的地址。
pdc->LineTo(((Csave*)m_ptrArray.GetAt(i))->n);
}