|
楼上两位说的有道理,但是同样的代码在vc下是不存在这样的问题。想把函数内部代码公布如下
程序循环调用此段代码,在图片控件中显示str字符串。///DrawText(str,rect,DT_CENTER);////////
让大家费心了
CRect rect;
CFont m_memFont; //字体
CDC *pDC; //屏幕绘图设备
CDC memDC; //内存绘图设备
CBitmap memBitmap; //定义一个位图对象
CBitmap* pOldBmp = NULL;
m_memFont.CreatePointFont(800,L"MS Sans Serif",NULL);
CWnd* pWnd = GetDlgItem(IDC_SCREEN);// IDC_REC_DISPACCW
pWnd->GetClientRect(&rect);
pDC = pWnd->GetDC();//获取dc
pDC->GetClipBox(&rect);
memDC.CreateCompatibleDC(pDC);//
memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
pOldBmp = memDC.SelectObject(&memBitmap);//
memDC.FillSolidRect(rect,RGB(0,0,0));//
memDC.SetBkColor(RGB(0,0,0));
memDC.SetTextColor(RGB(0,255,0));
CFont *poldfont= memDC.SelectObject(&m_memFont);
memDC.DrawText(str,rect,DT_CENTER);
pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,& memDC,0,0,SRCCOPY);
pWnd->ReleaseDC(pDC);
memDC.SelectObject(pOldBmp);
memDC.SelectObject(poldfont);
memDC.DeleteDC();//清除内存dc设备
m_memFont.DeleteObject();
memBitmap.DeleteObject();//清除内存位图
pDC->DeleteDC();//清除dc设备 |
|