mfc 窗口变换次数很多时出现内存错误

scl3661989 2009-12-10 05:38:20
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

CBitmap m_bitmap;
BITMAP stBitmap;
CRect rectbk;
GetClientRect(&rectbk);
//m_bitmap.Attach(hbmp);

m_bitmap.LoadBitmap(IDB_BACKVIEW);
m_bitmap.GetObject(sizeof(BITMAP),&stBitmap);
CSize bmsize(stBitmap.bmWidth,stBitmap.bmHeight);
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
/*CBitmap* pOldBitmap =*/ dcMemory.SelectObject(&m_bitmap);
pDC->StretchBlt(rectbk.left,rectbk.top,rectbk.Width(),rectbk.Height(),&dcMemory,0,0,bmsize.cx,bmsize.cy,SRCCOPY);
//dcMemory.SelectObject(pOldBitmap);


m_bitmap.Detach();
m_bitmap.LoadBitmap(IDB_H);
dcMemory.SelectObject(&m_bitmap);
pDC->BitBlt(20,20,200,200,&dcMemory,0,0,SRCCOPY);
m_bitmap.Detach();

pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));
pDC->TextOut(70,70,"单击发牌",8);


// TODO: add draw code for native data here}
}

不停改变窗口大小,到一定时候提示内存错误 怎么回事?
...全文
107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nintendo_dskay 2009-12-11
  • 打赏
  • 举报
回复
创建时:
dcMemory.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMemory.SelectObject(&m_bitmap);

调用结束时:
dcMemory.SelectObject(pOldBitmap);
dcMemory.DeleteDC();
用以上方法进行清除,否则内存泄露。

LoadBitmap的操作最好不要放在OnDraw中,因为会影响速度。最好是放在初始化函数中Load。
a746027209 2009-12-10
  • 打赏
  • 举报
回复
m_bitmap.LoadBitmap(...),成员变量在加载资源时最好在构造函数里把它加载好
scl3661989 2009-12-10
  • 打赏
  • 举报
回复
selectobject选进去的,还要选出来。 能具体说怎么做么
添加 ReleaseDC()也还是这个状况
用户 昵称 2009-12-10
  • 打赏
  • 举报
回复
selectobject选进去的,还要选出来。
dirdirdir3 2009-12-10
  • 打赏
  • 举报
回复
dcMemory.CreateCompatibleDC(pDC);
创建了createcompatiabledc后需要释放
用ReleaseDC(......)
scl3661989 2009-12-10
  • 打赏
  • 举报
回复
能具体说一下么 我是新手
用户 昵称 2009-12-10
  • 打赏
  • 举报
回复
申请了gdi资源没有释放!

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧