在CView里现实一些图片
可是在刷新的过程中内存越来越大, 不知如何解决.void CZYFloatView::PrintBMP(CDC * pDC,CString bmppath, CRect rect)
{
hDesDC = pDC->m_hDC;
hSrcDC = CreateCompatibleDC(hDesDC);
hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),bmppath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
GetObject(hBitmap, sizeof BITMAP , &bm);
SelectObject(hSrcDC, hBitmap);
::SetStretchBltMode(hDesDC,COLORONCOLOR);
//::StretchBlt(hDesDC, rect.left, rect.top, 222,222, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);
::StretchBlt(hDesDC, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);}
可是在刷新的过程中内存越来越大, 不知如何解决.void CZYFloatView::PrintBMP(CDC * pDC,CString bmppath, CRect rect)
{
hDesDC = pDC->m_hDC;
hSrcDC = CreateCompatibleDC(hDesDC);
hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),bmppath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
GetObject(hBitmap, sizeof BITMAP , &bm);
SelectObject(hSrcDC, hBitmap);
::SetStretchBltMode(hDesDC,COLORONCOLOR);
//::StretchBlt(hDesDC, rect.left, rect.top, 222,222, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);
::StretchBlt(hDesDC, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);}
解决方案 »
- vc图像热区
- 一个按钮代码中开启的线程能否在另一个按钮中等待该线程句柄
- 为什么 vc combo box 的 member variables 有时候只能加 int ,而有时候只能加 Cstring ,有什么不同?
- 为什么MessageBox显示乱码?
- 紧急求救——关于vc++对matlab的调用(matcom)
- 字符串连接问题~
- 用vc对打印纸张的设置问题
- 怎样不通过文件共享来播放某个远程机上的VCD文件
- 哪里能买到D.Kruglinskide 《Visual C++内幕》第五版
- ASCI和ASCII有什么不同?
- 我在ASP中使用一个COM对象,使用 =nothing 但我从新生成该COM对象时,提示该对象被使用,无法删除,应如何处理,100分
- 我在做ASP COM,想把分页写在COM里,如何写?谢谢,最好给我个例子
hSrcDC = CreateCompatibleDC(hDesDC);
hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),bmppath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
GetObject(hBitmap, sizeof BITMAP , &bm);
HGDIOBJ hOld = SelectObject(hSrcDC, hBitmap);
::SetStretchBltMode(hDesDC,COLORONCOLOR);
//::StretchBlt(hDesDC, rect.left, rect.top, 222,222, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);
::StretchBlt(hDesDC, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY); SelectObject(hSrcDC, hOld);
DeleteObject(hBitmap);
DeleteDC(hSrcDC);
DeleteDC(hSrcDC);
申请了资源没释放
DeleteObject(hBitmap);
DeleteDC(hSrcDC);
申请了的资源一定要释放.
另外在编写代码的过程中,要养成成对编写的习惯
当你写了SelectObject后,就要马上写对应的DeleteObject语句;
用了new后,就要马上编写对应得delete语句
这样就可以减少很多不必要的资源泄漏