为何这么会耗内存???????????
void CMyView::OnDraw(CDC* pDC)
{
HBITMAP hbmp=LoadBitmap(AfxGetApp()->m_hInstance, (LPCTSTR)IDB_BITMAP);
HDC memBufDC=CreateCompatibleDC(pDC->m_hDC);
HDC memSrcDC=CreateCompatibleDC(pDC->m_hDC);
HBITMAP hbmpOld=(HBITMAP)SelectObject(memSrcDC,hbmp);
HBITMAP hBufBmp = CreateCompatibleBitmap(pDC->m_hDC, 600, 600);
HBITMAP hOldBufBmp = (HBITMAP)SelectObject(memBufDC, hBufBmp);
for(int i=0;i<600;i+=15)
for (int j=0; j<600; j+=15)
BitBlt(memBufDC, i, j, 14, 14,memSrcDC,0,0,SRCCOPY);
BitBlt(pDC->m_hDC, 0, 0, 600, 600, memBufDC, 0, 0, SRCCOPY);
SelectObject(memSrcDC,hbmpOld);
SelectObject(memBufDC, hOldBufBmp);
DeleteObject(hBufBmp);
DeleteDC(memBufDC);
}
这是在一个FormView上显示的,如果拿一个300*500(随便大小)的窗口在其上面不断地移动位置,就会出现内存不断减少(我利用RamPage来检测内存),从我的例子:在FormView上不断地移动300*500窗口,发现内存很快地减少,从21M减少到10M,最后出现界面上一片白色,全然不会再出现那些IDB_BITMAP位图。
这到底是什么原因???????3x