我编了一个小程序,
在一个线程中调用:
g_pMainView->Invalidate(FALSE);
///////////////////////////////////////////////////////////////////
// 其中,在CMyproView::Create()中,定义g_pMainView = this;
///////////////////////////////////////////////////////////////////然后在CMyproView::OnPaint()中进行画图语句。
具体代码为
CMyproView::OnPaint()
{
CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here
CCPADDoc*  pDoc = GetDocument();
// TODO: add draw code here ASSERT_VALID(pDoc);
CRect rect;
CDC * pDC=GetDC();
pDC->GetClipBox(&rect); CBrush brush(RGB(0,0,255));
CBrush * pOldBrush= pDC->SelectObject(&brush); pDC->PatBlt(rect.left,rect.top,    //清除显示区
rect.Width(),rect.Height(),
PATCOPY);
pDC->SelectObject(pOldBrush);

        CPen Pen;
CPen* OldPen;
        GetClientRect(&rect);
int doti,dotj;                    //显示网格
Pen.CreatePen(PS_SOLID,1,RGB(170,170,255));
OldPen=pDC->SelectObject(&Pen);
for(dotj=0;dotj<8;dotj++) {
pDC->MoveTo(0,dotj*rect.Height()/8);
pDC->LineTo(1024,dotj*rect.Height()/8);
}
for(doti=0;doti<10;doti++) {
pDC->MoveTo(doti*rect.Width()/10,0);
pDC->LineTo(doti*rect.Width()/10,768);
}
dc.SelectObject(OldPen);
Pen.DeleteObject();
Pen.CreatePen(PS_SOLID,1,TIME_DATA_COLOR);
OldPen=dc.SelectObject(&Pen); int i,y;                            
int high,width,x;
high=rect.Height();
width=rect.Width();
dc.MoveTo(0,high);
int fnumber;
        fnumber=1024;
for(i=1; i<fnumber;i+=1) { //显示波形
x=i;
if(x>width) break;
y=xxxx;
dc.LineTo(x,y);
        }
dc.SelectObject(OldPen);// 恢复原笔
Pen.DeleteObject();
}
但是,在Win98下,通过查看系统资源,发现GUI在不断的减少,
当我将线程中的g_pMainView->Invalidate(FALSE);去掉,则GUI资源不会减少,这说明问题出在CMyproView::OnPaint()中。
哪位高手可以指点一下,谢谢!!!