连续调用这个函数十分钟后,程序报错。(每秒钟调用七次)void CTestDlg::ShowTime(CString str)
{
BOOL bOK;
RECT rect;
LOGFONT lf;
CRect rcClient;
CString str1,strtemp;
CDC * pDC = this->GetDC();
CDC* memoryDC = new CDC;
CBrush m_Brush;
m_Brush.DeleteObject();
m_Brush.CreateSolidBrush(RGB(0,0,0));
CDC* mem=m_Pict.GetDC();
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
memoryDC->CreateCompatibleDC(mem);
memoryDC->SelectObject(&bitmap);
memoryDC->SetBkMode(TRANSPARENT);
memoryDC->SelectObject(&m_Brush);
memoryDC->Rectangle(0, 0, 128, 64);
memoryDC->SetBkMode(TRANSPARENT);//OPAQUE);
memoryDC->SetTextColor(RGB(255,0,0));
m_Pict.GetClientRect(&rcClient);
pDC->GetCurrentFont()->GetLogFont(&lf);
CFont font,font1, *pOldFont;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfCharSet=134;
lf.lfHeight=::MulDiv(15,pDC->GetDeviceCaps(LOGPIXELSY),72);
lf.lfWidth=0;
lf.lfWeight=900;
strcpy(lf.lfFaceName, "宋体");
font.CreateFontIndirect(&lf);
lf.lfHeight=::MulDiv(12,pDC->GetDeviceCaps(LOGPIXELSY),72);
lf.lfWeight=500;
font1.CreateFontIndirect(&lf);
// 更改当前刷子
CBrush br;
br.CreateSolidBrush(RGB(0, 0, 0));
dc->FillRect(&rcClient,&br);//*****该dc是个全局变量,换成局部变量同样报错。
pOldFont=dc->SelectObject(&font);
memoryDC->SelectObject(&font);
dc->SetTextColor(RGB(255,0,0));
dc->SetBkMode(TRANSPARENT);
str1="";strtemp="";
int i1=str.GetLength();
int k1=str.Find('a ',1);
if (k1>0)
{
str1=str.Left(k1-1);//dc->TextOut(0,0,str1);
strtemp=str.Right(i1-k1-1);
}
i1=strtemp.GetLength()*21;
k1=(128-i1/2)/2;
dc->TextOut(k1, 24, strtemp);
memoryDC->TextOut(k1, 24, strtemp);
pOldFont=dc->SelectObject(&font1);
memoryDC->SelectObject(&font1);
i1=str1.GetLength()*16;
k1=(128-i1/2)/2;
dc->TextOut(k1, 0, str1);
memoryDC->TextOut(k1, 0, str1);
pDC->ReleaseOutputDC();
memoryDC->DeleteDC();
}请帮帮看看
{
BOOL bOK;
RECT rect;
LOGFONT lf;
CRect rcClient;
CString str1,strtemp;
CDC * pDC = this->GetDC();
CDC* memoryDC = new CDC;
CBrush m_Brush;
m_Brush.DeleteObject();
m_Brush.CreateSolidBrush(RGB(0,0,0));
CDC* mem=m_Pict.GetDC();
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
memoryDC->CreateCompatibleDC(mem);
memoryDC->SelectObject(&bitmap);
memoryDC->SetBkMode(TRANSPARENT);
memoryDC->SelectObject(&m_Brush);
memoryDC->Rectangle(0, 0, 128, 64);
memoryDC->SetBkMode(TRANSPARENT);//OPAQUE);
memoryDC->SetTextColor(RGB(255,0,0));
m_Pict.GetClientRect(&rcClient);
pDC->GetCurrentFont()->GetLogFont(&lf);
CFont font,font1, *pOldFont;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfCharSet=134;
lf.lfHeight=::MulDiv(15,pDC->GetDeviceCaps(LOGPIXELSY),72);
lf.lfWidth=0;
lf.lfWeight=900;
strcpy(lf.lfFaceName, "宋体");
font.CreateFontIndirect(&lf);
lf.lfHeight=::MulDiv(12,pDC->GetDeviceCaps(LOGPIXELSY),72);
lf.lfWeight=500;
font1.CreateFontIndirect(&lf);
// 更改当前刷子
CBrush br;
br.CreateSolidBrush(RGB(0, 0, 0));
dc->FillRect(&rcClient,&br);//*****该dc是个全局变量,换成局部变量同样报错。
pOldFont=dc->SelectObject(&font);
memoryDC->SelectObject(&font);
dc->SetTextColor(RGB(255,0,0));
dc->SetBkMode(TRANSPARENT);
str1="";strtemp="";
int i1=str.GetLength();
int k1=str.Find('a ',1);
if (k1>0)
{
str1=str.Left(k1-1);//dc->TextOut(0,0,str1);
strtemp=str.Right(i1-k1-1);
}
i1=strtemp.GetLength()*21;
k1=(128-i1/2)/2;
dc->TextOut(k1, 24, strtemp);
memoryDC->TextOut(k1, 24, strtemp);
pOldFont=dc->SelectObject(&font1);
memoryDC->SelectObject(&font1);
i1=str1.GetLength()*16;
k1=(128-i1/2)/2;
dc->TextOut(k1, 0, str1);
memoryDC->TextOut(k1, 0, str1);
pDC->ReleaseOutputDC();
memoryDC->DeleteDC();
}请帮帮看看
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货