api高手请指教!
我用api编写了一个画图的类,但是不知道为什么,在OnDraw中调用这些画图代码时,第一次画图成功。但是一旦界面刷新,界面上画的东西就完全消失了。我调用的代码如下
void CDrawBarcodeView::OnDraw(CDC* pDC)
{
CDrawBarcodeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
HDC hDC=pDC->GetSafeHdc ();
// TODO: add draw code for native data here
BarCode.DrawChar (hDC,'*');
BarCode.x +=2;
BarCode.DrawChar (hDC,'1');
BarCode.x +=2;
BarCode.DrawChar (hDC,'2');
BarCode.x +=2;
BarCode.DrawChar (hDC,'*');
}
DrawChar如下定义:
//purpose:Draw a barcode char on hDC
void CCode39Char::DrawChar(HDC hDC)//Where can i get the dc?
{
BOOL bBarChar;
HBRUSH hOldBrush;
hOldBrush=(HBRUSH)SelectObject(hDC,hBarBrush);
int nRight;
for(int i=0;i<5;i++){
bBarChar=GetBit(wBarChar,i);
//draw bar
if(bBarChar){//width
nRight=(int)(x+fWidth*fRatio);
Rectangle(hDC,x,y,nRight,y+nHeight);
}
else{//narrow
nRight=(int)(x+fWidth);
Rectangle(hDC,x,y,nRight,y+nHeight);
}
TRACE("x=%d,nRight=%d\n",x,nRight);
x=nRight;
if(i<4){
//draw space
bBarChar=GetBit(wBarChar,i+5);
if(bBarChar)//width
x=(int)(x+fWidth*fRatio);
else//narrow
x=(int)(x+fWidth);
}
}
SelectObject(hDC,hOldBrush);
}