图形显示 刷屏一次 内存储器增加,不释放
图形显示 刷屏一次 内存增加,不释放
我的程序是要实现从摄像机采集到的图片显示在界面上,但是内存却一直增加,无法释放
------解决方案--------------------
呵呵,跟我以前编的一个程序一样,应该是有资源没有释放导致的,对于图形显示不熟悉,不知道是不是pStm没释放导致的?还是程序其它地方?
------解决方案--------------------
getdc之后要releasedc
我的程序是要实现从摄像机采集到的图片显示在界面上,但是内存却一直增加,无法释放
- C/C++ code
CWnd *pWnd=GetDlgItem(IDC_PICTURE); CDC *pDC=pWnd->GetDC(); Sleep(100); ShowPic(pDC,"test.bmp",290,240);
- C/C++ code
HRESULT ShowPic(CDC *pDC,CString lpstrFile, int nScrWidth, int nScrHeight) { IPicture *pPic; IStream *pStm; BOOL bResult; HANDLE hFile=NULL; DWORD dwFileSize,dwByteRead; //打开硬盘中的图形文件 hFile=CreateFile(lpstrFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if (hFile!=INVALID_HANDLE_VALUE) { dwFileSize=GetFileSize(hFile,NULL);//获取文件字节数 if(dwFileSize==0xFFFFFFFF) { CloseHandle(hFile); return E_FAIL; } } else { return E_FAIL; } //分配全局存储空间 HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,dwFileSize); if(hGlobal==NULL) return E_FAIL; LPVOID pvData =GlobalLock(hGlobal); if(pvData==NULL)//锁定分配内存块 { GlobalFree(hGlobal); return E_FAIL; } ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件读入内存缓冲区 CloseHandle(hFile);//关闭打开的文件 GlobalUnlock(hGlobal); CreateStreamOnHGlobal(hGlobal,TRUE,&pStm); //装入图形文件 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic); GlobalFree(hGlobal); if(FAILED(bResult)) return E_FAIL; long hmWidth;//图片的真实宽度 long hmHeight;//图片的真实高度 pPic->get_Width(&hmWidth); pPic->get_Height(&hmHeight); //将图形输出到屏幕上(有点像BitBlt) bResult=pPic->Render(pDC->m_hDC,0,0,nScrWidth,nScrHeight,0,hmHeight,hmWidth,-hmHeight,NULL); pPic->Release(); if(SUCCEEDED(bResult)) { return S_OK; } else { return E_FAIL; } }
------解决方案--------------------
呵呵,跟我以前编的一个程序一样,应该是有资源没有释放导致的,对于图形显示不熟悉,不知道是不是pStm没释放导致的?还是程序其它地方?
------解决方案--------------------
getdc之后要releasedc